OpenLexocad  28.0
AbstractBehaviorMode.h
Go to the documentation of this file.
1 
7 #pragma once
8 
9 #include <Base/Base.h>
10 #include <Base/Observer.h>
11 #include <Core/EventInterface.h>
12 
13 
14 namespace Core
15 {
16 class ServiceInterface;
17 class GUIInterface;
18 class ViewMgrInterface;
19 class BehaviorModeNotification;
20 
21 typedef std::map<std::string, bool> BehaviorAttributeMap;
22 
23 
28 class LX_CORE_EXPORT AbstractBehaviorMode : public Base::BaseClass, public Base::Subject<BehaviorModeNotification>
29 {
31 
32 protected:
34 
35 public:
36  virtual ~AbstractBehaviorMode(void);
41 
42  virtual void keyPress(const KeyEvent& event);
43  virtual void keyRelease(const KeyEvent& event);
44  virtual void wheel(const MWheelEvent& event);
45  virtual void mouseMove(const MouseEvent& event);
46  virtual void mousePress(const MouseEvent& event);
47  virtual void mouseRelease(const MouseEvent& event);
48  virtual void mouseEnter(void);
49  virtual void mouseLeave(void);
50  virtual void resize(const ResizeEvent& event);
51 
52  virtual void reset(void) = 0;
53  virtual void initialProcedure(void) = 0;
54  virtual void finalProcedure(void) = 0;
55 
56  virtual void setTextInput(const std::string& input);
57  virtual void setAttributes(const BehaviorAttributeMap& attributes);
58 
59  virtual const char* subject_name(void) { return "AbstractBehaviorMode"; };
60 
61 
62 
63 protected:
67 
68 
71 
72 
73  void defaultEnd(void);
74 };
75 
76 
77 
82 class LX_CORE_EXPORT AbstractBehaviorSubMode
83 {
84 public:
86  virtual ~AbstractBehaviorSubMode(void);
87 
88  virtual void keyPress(const KeyEvent& event);
89  virtual void wheel(const MWheelEvent& event);
90  virtual void mouseMove(const MouseEvent& event);
91  virtual void mousePress(const MouseEvent& event);
92  virtual void mouseRelease(const MouseEvent& event);
93  virtual void mouseEnter(void);
94  virtual void mouseLeave(void);
95 
96  virtual void setTextInput(const std::string& input);
97  virtual int getId(void) const = 0;
98 };
99 
100 
101 
105 class LX_CORE_EXPORT BehaviorModeNotification
106 {
107 public:
108  enum Reason
109  {
112  UNBLOCK_MOUSE_REQUEST
113  };
114 
116 };
117 
118 
119 
124 class LX_CORE_EXPORT BehaviorModeFactory
125 {
126 public:
129 
131 
132  static std::map<std::string, BehaviorModeFactory*> _registry;
133  static bool registerFactory(const std::string& name, BehaviorModeFactory* fact);
134 
135  static AbstractBehaviorMode* create(ViewMgrInterface* vi, GUIInterface* gi, ServiceInterface* si, const std::string& type);
136 };
137 
138 
139 
140 } // namespace Core
141 
142 
143 
144 #define ADD_BEHAVIORMODE_FACTORY(_factoryName_, _class_) \
145  class _factoryName_ : public Core::BehaviorModeFactory \
146  { \
147  private: \
148  virtual Core::AbstractBehaviorMode* createByFactory(Core::ViewMgrInterface* vi, Core::GUIInterface* gi, Core::ServiceInterface* si) \
149  { \
150  Core::AbstractBehaviorMode* o = new _class_; \
151  o->setInterfaces(vi, gi, si); \
152  return o; \
153  } \
154  };
155 
156 
157 #define REGISTER_BEHAVIORMODE_FACTORY(_factoryName_, _class_) \
158  Core::BehaviorModeFactory::_registry[#_class_] = (Core::BehaviorModeFactory*)new _factoryName_();
159 
160 
Base::BaseClass
BaseClass class and root of the type system.
Definition: Base.h:78
Core::AbstractBehaviorMode::finalProcedure
virtual void finalProcedure(void)=0
Core::BehaviorModeFactory::_registry
static std::map< std::string, BehaviorModeFactory * > _registry
Definition: AbstractBehaviorMode.h:132
Core::AbstractBehaviorMode::~AbstractBehaviorMode
virtual ~AbstractBehaviorMode(void)
Core::BehaviorModeFactory::createByFactory
virtual AbstractBehaviorMode * createByFactory(ViewMgrInterface *vi, GUIInterface *gi, ServiceInterface *si)=0
Core::AbstractBehaviorMode::wheel
virtual void wheel(const MWheelEvent &event)
Core::BehaviorModeFactory::~BehaviorModeFactory
~BehaviorModeFactory(void)
Core::BehaviorModeNotification
Definition: AbstractBehaviorMode.h:106
Core::AbstractBehaviorMode::reset
virtual void reset(void)=0
Core::AbstractBehaviorSubMode::mouseMove
virtual void mouseMove(const MouseEvent &event)
Core::GUIInterface
Definition: GUIInterface.h:20
Core::MWheelEvent
Definition: EventInterface.h:116
EventInterface.h
Core::AbstractBehaviorMode::_view_i
ViewMgrInterface * _view_i
Definition: AbstractBehaviorMode.h:59
Core::AbstractBehaviorSubMode::mouseEnter
virtual void mouseEnter(void)
Observer.h
Core::AbstractBehaviorMode::_service_i
ServiceInterface * _service_i
Definition: AbstractBehaviorMode.h:66
Core::AbstractBehaviorMode::mouseLeave
virtual void mouseLeave(void)
Core::AbstractBehaviorSubMode::wheel
virtual void wheel(const MWheelEvent &event)
Core::BehaviorModeNotification::Reason
Reason
Definition: AbstractBehaviorMode.h:109
Core::AbstractBehaviorMode::AbstractBehaviorMode
AbstractBehaviorMode()
Core::BehaviorModeFactory::BehaviorModeFactory
BehaviorModeFactory(void)
Core::BehaviorModeNotification::_why
Reason _why
Definition: AbstractBehaviorMode.h:115
Core::AbstractBehaviorMode::setViewInterface
void setViewInterface(ViewMgrInterface *vi)
Core::AbstractBehaviorMode::mousePress
virtual void mousePress(const MouseEvent &event)
Core::AbstractBehaviorSubMode::mouseLeave
virtual void mouseLeave(void)
Core::AbstractBehaviorMode::setTextInput
virtual void setTextInput(const std::string &input)
Core::AbstractBehaviorSubMode::mouseRelease
virtual void mouseRelease(const MouseEvent &event)
Core::KeyEvent
Definition: EventInterface.h:137
Core::AbstractBehaviorMode::setAttributes
virtual void setAttributes(const BehaviorAttributeMap &attributes)
Core::AbstractBehaviorMode::setInterfaces
void setInterfaces(ViewMgrInterface *vi, GUIInterface *gi, ServiceInterface *si)
Core::AbstractBehaviorMode::keyPress
virtual void keyPress(const KeyEvent &event)
Core::AbstractBehaviorMode::mouseMove
virtual void mouseMove(const MouseEvent &event)
Core
Definition: Base.h:5
Core::AbstractBehaviorMode::initialProcedure
virtual void initialProcedure(void)=0
Core::ServiceInterface
Definition: ServiceInterface.h:97
Core::AbstractBehaviorMode::_old_mouse_y
int _old_mouse_y
Definition: AbstractBehaviorMode.h:70
Core::MouseEvent
Definition: EventInterface.h:85
Base.h
Core::AbstractBehaviorMode::setGuiInterface
void setGuiInterface(GUIInterface *gi)
Core::BehaviorModeFactory
Definition: AbstractBehaviorMode.h:125
Core::AbstractBehaviorMode::mouseEnter
virtual void mouseEnter(void)
Core::BehaviorModeNotification::BEHAVIOR_MODE_ENDS
@ BEHAVIOR_MODE_ENDS
Definition: AbstractBehaviorMode.h:110
Core::AbstractBehaviorMode::keyRelease
virtual void keyRelease(const KeyEvent &event)
Core::BehaviorModeNotification::BLOCK_MOUSE_REQUEST
@ BLOCK_MOUSE_REQUEST
Definition: AbstractBehaviorMode.h:111
Core::AbstractBehaviorMode::_gui_i
GUIInterface * _gui_i
Definition: AbstractBehaviorMode.h:65
Core::AbstractBehaviorSubMode
Definition: AbstractBehaviorMode.h:83
Core::AbstractBehaviorMode
Definition: AbstractBehaviorMode.h:29
Core::AbstractBehaviorSubMode::~AbstractBehaviorSubMode
virtual ~AbstractBehaviorSubMode(void)
Core::AbstractBehaviorMode::resize
virtual void resize(const ResizeEvent &event)
Core::AbstractBehaviorMode::defaultEnd
void defaultEnd(void)
Core::AbstractBehaviorMode::_old_mouse_x
int _old_mouse_x
Definition: AbstractBehaviorMode.h:69
Core::AbstractBehaviorSubMode::keyPress
virtual void keyPress(const KeyEvent &event)
Core::AbstractBehaviorMode::setServiceInterface
void setServiceInterface(ServiceInterface *si)
Core::AbstractBehaviorSubMode::setTextInput
virtual void setTextInput(const std::string &input)
Base::Subject
Definition: Observer.h:9
Core::BehaviorModeFactory::registerFactory
static bool registerFactory(const std::string &name, BehaviorModeFactory *fact)
Core::AbstractBehaviorSubMode::getId
virtual int getId(void) const =0
TYPESYSTEM_HEADER
#define TYPESYSTEM_HEADER()
define for subclassing Base::BaseClass
Definition: Base.h:12
Core::ViewMgrInterface
Definition: ViewInterface.h:32
Core::AbstractBehaviorSubMode::mousePress
virtual void mousePress(const MouseEvent &event)
Core::BehaviorModeFactory::create
static AbstractBehaviorMode * create(ViewMgrInterface *vi, GUIInterface *gi, ServiceInterface *si, const std::string &type)
Core::AbstractBehaviorMode::mouseRelease
virtual void mouseRelease(const MouseEvent &event)
Core::AbstractBehaviorMode::subject_name
virtual const char * subject_name(void)
Definition: AbstractBehaviorMode.h:59
Core::AbstractBehaviorSubMode::AbstractBehaviorSubMode
AbstractBehaviorSubMode(void)
Core::ResizeEvent
Definition: EventInterface.h:146
Core::BehaviorAttributeMap
std::map< std::string, bool > BehaviorAttributeMap
Definition: AbstractBehaviorMode.h:19