Event.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ROCKETCOREEVENT_H
00029 #define ROCKETCOREEVENT_H
00030
00031 #include <Rocket/Core/Dictionary.h>
00032 #include <Rocket/Core/ScriptInterface.h>
00033 #include <Rocket/Core/Header.h>
00034
00035 namespace Rocket {
00036 namespace Core {
00037
00038 class Element;
00039 class EventInstancer;
00040
00048 class ROCKETCORE_API Event : public ScriptInterface
00049 {
00050 public:
00052 Event();
00058 Event(Element* target, const String& type, const Dictionary& parameters, bool interruptible = false);
00060 virtual ~Event();
00061
00062 enum EventPhase { PHASE_UNKNOWN, PHASE_CAPTURE, PHASE_TARGET, PHASE_BUBBLE };
00063
00066 EventPhase GetPhase() const;
00069 void SetPhase(EventPhase phase);
00070
00073 void SetCurrentElement(Element* element);
00076 Element* GetCurrentElement() const;
00077
00080 Element* GetTargetElement() const;
00081
00084 const String& GetType() const;
00088 bool operator==(const String& type) const;
00089
00092 bool IsPropagating() const;
00094 void StopPropagation();
00095
00099 template < typename T >
00100 T GetParameter(const String& key, const T& default_value)
00101 {
00102 return parameters.Get(key, default_value);
00103 }
00106 const Dictionary* GetParameters() const;
00107
00109 virtual void OnReferenceDeactivate();
00110
00111 protected:
00112 String type;
00113 Dictionary parameters;
00114
00115 Element* target_element;
00116 Element* current_element;
00117
00118 private:
00119 bool interruptible;
00120 bool interruped;
00121
00122 EventPhase phase;
00123
00124 EventInstancer* instancer;
00125
00126 friend class Factory;
00127 };
00128
00129 }
00130 }
00131
00132 #endif