diff options
Diffstat (limited to 'unoxml/source/events/eventdispatcher.hxx')
-rw-r--r-- | unoxml/source/events/eventdispatcher.hxx | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/unoxml/source/events/eventdispatcher.hxx b/unoxml/source/events/eventdispatcher.hxx new file mode 100644 index 000000000000..2af5884842f6 --- /dev/null +++ b/unoxml/source/events/eventdispatcher.hxx @@ -0,0 +1,51 @@ + +//#include <multimap> +#include <map> +#include <vector> + +#include <com/sun/star/uno/Reference.h> +#include <com/sun/star/xml/dom/events/EventType.hpp> +#include <com/sun/star/xml/dom/events/PhaseType.hpp> +#include <com/sun/star/xml/dom/events/XEvent.hpp> +#include "event.hxx" + +using namespace com::sun::star::uno; +using namespace com::sun::star::xml::dom; +using namespace com::sun::star::xml::dom::events; + +namespace DOM { namespace events +{ + +typedef std::vector< xmlNodePtr > NodeVector; +typedef std::multimap< xmlNodePtr, Reference< com::sun::star::xml::dom::events::XEventListener> > ListenerMap; +typedef std::map<OUString, ListenerMap*> TypeListenerMap; +typedef std::vector<ListenerMap::value_type> ListenerPairVector; + +class CEventDispatcher +{ +private: + static TypeListenerMap captureListeners; + static TypeListenerMap targetListeners; + +public: + static sal_Bool dispatchEvent(xmlNodePtr aNode, const Reference< XEvent >& aEvent); + + static void addListener( + xmlNodePtr pNode, + OUString aType, + const Reference<com::sun::star::xml::dom::events::XEventListener>& aListener, + sal_Bool bCapture); + + static void removeListener( + xmlNodePtr pNode, + OUString aType, + const Reference<com::sun::star::xml::dom::events::XEventListener>& aListener, + sal_Bool bCapture); + + static void callListeners( + xmlNodePtr pNode, + OUString aType, + const Reference< XEvent >& xEvent, + sal_Bool bCapture); +}; +}} |