Kaydet (Commit) cebd8de4 authored tarafından Lars Oppermann's avatar Lars Oppermann

#i25594# event type strings

üst b2f3066c
......@@ -2,9 +2,9 @@
*
* $RCSfile: characterdata.cxx,v $
*
* $Revision: 1.3 $
* $Revision: 1.4 $
*
* last change: $Author: lo $ $Date: 2004-02-26 14:43:14 $
* last change: $Author: lo $ $Date: 2004-02-27 16:14:29 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
......@@ -59,8 +59,8 @@
*
************************************************************************/
#include <com/sun/star/xml/dom/events/XDocumentEvent.hpp>
#include "characterdata.hxx"
#include "../events/mutationevent.hxx"
namespace DOM
......@@ -71,12 +71,14 @@ namespace DOM
void CCharacterData::_dispatchEvent(const OUString& prevValue, const OUString& newValue)
{
events::CMutationEvent *pEvent = new events::CMutationEvent;
pEvent->initMutationEvent(EventType_DOMCharacterDataModified, sal_True,
sal_False, Reference< XNode >(),
prevValue, newValue, OUString(), (AttrChangeType)0 );
pEvent->m_target = Reference< XEventTarget >(this);
dispatchEvent(Reference< XEvent >(static_cast< events::CEvent* >(pEvent)));
Reference< XDocumentEvent > docevent(getOwnerDocument(), UNO_QUERY);
Reference< XMutationEvent > event(docevent->createEvent(
OUString::createFromAscii("DOMCharacterDataModified")), UNO_QUERY);
event->initMutationEvent(
OUString::createFromAscii("DOMCharacterDataModified"),
sal_True, sal_False, Reference< XNode >(),
prevValue, newValue, OUString(), (AttrChangeType)0 );
dispatchEvent(Reference< XEvent >(event, UNO_QUERY));
}
void CCharacterData::init_characterdata(const xmlNodePtr aNodePtr)
......
......@@ -2,9 +2,9 @@
*
* $RCSfile: document.cxx,v $
*
* $Revision: 1.3 $
* $Revision: 1.4 $
*
* last change: $Author: lo $ $Date: 2004-02-26 14:43:14 $
* last change: $Author: lo $ $Date: 2004-02-27 16:14:29 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
......@@ -73,6 +73,7 @@
#include "elementlist.hxx"
#include "domimplementation.hxx"
#include "../events/event.hxx"
#include "../events/mutationevent.hxx"
namespace DOM
......@@ -512,12 +513,13 @@ namespace DOM
*/
if (aNode.is())
{
events::CMutationEvent *pEvent = new events::CMutationEvent;
pEvent->initMutationEvent(EventType_DOMNodeInsertedIntoDocument, sal_True,
sal_False, Reference< XNode >(),
OUString(), OUString(), OUString(), (AttrChangeType)0 );
pEvent->m_target = Reference< XEventTarget >(aNode, UNO_QUERY);
dispatchEvent(Reference< XEvent >(static_cast< events::CEvent* >(pEvent)));
Reference< XDocumentEvent > docevent(getOwnerDocument(), UNO_QUERY);
Reference< XMutationEvent > event(docevent->createEvent(
OUString::createFromAscii("DOMNodeInsertedIntoDocument")), UNO_QUERY);
event->initMutationEvent(OUString::createFromAscii("DOMNodeInsertedIntoDocument")
, sal_True, sal_False, Reference< XNode >(),
OUString(), OUString(), OUString(), (AttrChangeType)0 );
dispatchEvent(Reference< XEvent >(event, UNO_QUERY));
}
return aNode;
......@@ -530,4 +532,44 @@ namespace DOM
{
return OUString();
}
Reference< XEvent > createEvent(const OUString& aType) throw (RuntimeException)
{
events::CEvent *pEvent = 0;
if (
aType.compareToAscii("DOMSubtreeModified") == 0||
aType.compareToAscii("DOMNodeInserted") == 0||
aType.compareToAscii("DOMNodeRemoved") == 0||
aType.compareToAscii("DOMNodeRemovedFromDocument") == 0||
aType.compareToAscii("DOMNodeInsertedIntoDocument") == 0||
aType.compareToAscii("DOMAttrModified") == 0||
aType.compareToAscii("DOMCharacterDataModified") == 0)
{
events::CMutationEvent* pMEvent = new events::CMutationEvent;
pEvent = pMEvent;
} else if (
aType.compareToAscii("DOMFocusIn") == 0||
aType.compareToAscii("DOMFocusOut") == 0||
aType.compareToAscii("DOMActivate") == 0)
{
// XXX UIEvents
throw RuntimeException();
} else if (
aType.compareToAscii("click") == 0||
aType.compareToAscii("mousedown") == 0||
aType.compareToAscii("mouseup") == 0||
aType.compareToAscii("mouseover") == 0||
aType.compareToAscii("mousemove") == 0||
aType.compareToAscii("mouseout") == 0 )
{
// XXX MouseEvents
throw RuntimeException();
}
else // generic event
{
pEvent = new events::CEvent;
}
return Reference< XEvent >(pEvent);
}
}
......@@ -2,9 +2,9 @@
*
* $RCSfile: document.hxx,v $
*
* $Revision: 1.2 $
* $Revision: 1.3 $
*
* last change: $Author: lo $ $Date: 2004-02-26 14:43:15 $
* last change: $Author: lo $ $Date: 2004-02-27 16:14:29 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
......@@ -65,12 +65,15 @@
#include <list>
#include <sal/types.h>
#include <cppuhelper/implbase1.hxx>
#include <cppuhelper/implbase2.hxx>
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/uno/Exception.hpp>
#include <com/sun/star/xml/dom/XNode.hpp>
#include <com/sun/star/xml/dom/XAttr.hpp>
#include <com/sun/star/xml/dom/XElement.hpp>
#include <com/sun/star/xml/dom/XDOMImplementation.hpp>
#include <com/sun/star/xml/dom/events/XDocumentEvent.hpp>
#include <com/sun/star/xml/dom/events/XEvent.hpp>
#include "node.hxx"
......@@ -80,13 +83,14 @@ using namespace rtl;
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
using namespace com::sun::star::xml::dom;
using namespace com::sun::star::xml::dom::events;
namespace DOM
{
typedef std::list< Reference< XNode >* > nodereflist_t;
class CDocument : public cppu::ImplInheritanceHelper1< CNode, XDocument >
class CDocument : public cppu::ImplInheritanceHelper2< CNode, XDocument, XDocumentEvent >
{
friend class CNode;
private:
......@@ -340,7 +344,11 @@ namespace DOM
return CNode::setPrefix(prefix);
}
// XDocumentEvent
virtual Reference< XEvent > createEvent(const OUString& eventType) throw (RuntimeException);
};
}
#endif
\ No newline at end of file
......@@ -2,9 +2,9 @@
*
* $RCSfile: element.cxx,v $
*
* $Revision: 1.3 $
* $Revision: 1.4 $
*
* last change: $Author: lo $ $Date: 2004-02-26 14:43:15 $
* last change: $Author: lo $ $Date: 2004-02-27 16:14:29 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
......@@ -314,12 +314,13 @@ namespace DOM
{
// attribute adition event
// dispatch DOMAttrModified event
events::CMutationEvent *pEvent = new events::CMutationEvent;
pEvent->initMutationEvent(EventType_DOMAttrModified, sal_True,
sal_False, Reference< XNode >(aAttr, UNO_QUERY),
Reference< XDocumentEvent > docevent(getOwnerDocument(), UNO_QUERY);
Reference< XMutationEvent > event(docevent->createEvent(
OUString::createFromAscii("DOMAttrModified")), UNO_QUERY);
event->initMutationEvent(OUString::createFromAscii("DOMAttrModified"),
sal_True, sal_False, Reference< XNode >(aAttr, UNO_QUERY),
OUString(), aAttr->getValue(), aAttr->getName(), AttrChangeType_ADDITION);
pEvent->m_target = Reference< XEventTarget >(this);
dispatchEvent(Reference< XEvent >(static_cast< events::CEvent* >(pEvent)));
dispatchEvent(Reference< XEvent >(event, UNO_QUERY));
}
return aAttr;
}
......@@ -367,13 +368,13 @@ namespace DOM
// dispatch DOMAttrModified event
events::CMutationEvent *pEvent = new events::CMutationEvent;
pEvent->initMutationEvent(EventType_DOMAttrModified, sal_True,
sal_False, Reference< XNode >(getAttributeNode(name), UNO_QUERY),
Reference< XDocumentEvent > docevent(getOwnerDocument(), UNO_QUERY);
Reference< XMutationEvent > event(docevent->createEvent(
OUString::createFromAscii("DOMAttrModified")), UNO_QUERY);
event->initMutationEvent(OUString::createFromAscii("DOMAttrModified"),
sal_True, sal_False, Reference< XNode >(getAttributeNode(name), UNO_QUERY),
oldValue, value, name, aChangeType);
pEvent->m_target = Reference< XEventTarget >(this);
dispatchEvent(Reference< XEvent >(static_cast< events::CEvent* >(pEvent)));
dispatchEvent(Reference< XEvent >(event, UNO_QUERY));
}
}
......@@ -436,12 +437,13 @@ namespace DOM
xmlSetNsProp(m_aNodePtr, pNs, xLName, xValue);
}
// dispatch DOMAttrModified event
events::CMutationEvent *pEvent = new events::CMutationEvent;
pEvent->initMutationEvent(EventType_DOMAttrModified, sal_True, sal_False,
Reference< XDocumentEvent > docevent(getOwnerDocument(), UNO_QUERY);
Reference< XMutationEvent > event(docevent->createEvent(
OUString::createFromAscii("DOMAttrModified")), UNO_QUERY);
event->initMutationEvent(OUString::createFromAscii("DOMAttrModified"), sal_True, sal_False,
Reference< XNode >(getAttributeNodeNS(namespaceURI, OUString((char*)xLName, strlen((char*)xLName), RTL_TEXTENCODING_UTF8)), UNO_QUERY),
oldValue, value, qualifiedName, aChangeType);
pEvent->m_target = Reference< XEventTarget >(this);
dispatchEvent(Reference< XEvent >(static_cast< events::CEvent* >(pEvent)));
dispatchEvent(Reference< XEvent >(event, UNO_QUERY));
} else {
// ambigious ns prefix
......
......@@ -2,9 +2,9 @@
*
* $RCSfile: node.cxx,v $
*
* $Revision: 1.3 $
* $Revision: 1.4 $
*
* last change: $Author: lo $ $Date: 2004-02-26 14:43:16 $
* last change: $Author: lo $ $Date: 2004-02-27 16:14:30 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
......@@ -342,12 +342,13 @@ namespace DOM
// does bubble
if (aNode.is())
{
events::CMutationEvent *pEvent = new events::CMutationEvent;
pEvent->initMutationEvent(EventType_DOMNodeInserted, sal_True,
sal_False, Reference< XNode >(CNode::get(m_aNodePtr)),
Reference< XDocumentEvent > docevent(getOwnerDocument(), UNO_QUERY);
Reference< XMutationEvent > event(docevent->createEvent(
OUString::createFromAscii("DOMNodeInserted")), UNO_QUERY);
event->initMutationEvent(OUString::createFromAscii("DOMNodeInserted")
, sal_True, sal_False, Reference< XNode >(CNode::get(m_aNodePtr)),
OUString(), OUString(), OUString(), (AttrChangeType)0 );
pEvent->m_target = Reference< XEventTarget >(aNode, UNO_QUERY);
dispatchEvent(Reference< XEvent >(static_cast< events::CEvent* >(pEvent)));
dispatchEvent(Reference< XEvent >(event, UNO_QUERY));
}
return aNode;
}
......@@ -711,12 +712,13 @@ namespace DOM
*/
if (oldChild.is())
{
events::CMutationEvent *pEvent = new events::CMutationEvent;
pEvent->initMutationEvent(EventType_DOMNodeRemoved, sal_True,
Reference< XDocumentEvent > docevent(getOwnerDocument(), UNO_QUERY);
Reference< XMutationEvent > event(docevent->createEvent(
OUString::createFromAscii("DOMNodeRemoved")), UNO_QUERY);
event->initMutationEvent(OUString::createFromAscii("DOMNodeRemoved"), sal_True,
sal_False, Reference< XNode >(CNode::get(m_aNodePtr)),
OUString(), OUString(), OUString(), (AttrChangeType)0 );
pEvent->m_target = Reference< XEventTarget >(oldChild, UNO_QUERY);
dispatchEvent(Reference< XEvent >(static_cast< events::CEvent* >(pEvent)));
dispatchEvent(Reference< XEvent >(event, UNO_QUERY));
}
return oldChild;
}
......@@ -765,12 +767,13 @@ namespace DOM
*/
// dispatch DOMSubtreeModified
// target is _this_ node
events::CMutationEvent *pEvent = new events::CMutationEvent;
pEvent->initMutationEvent(EventType_DOMSubtreeModified, sal_True,
Reference< XDocumentEvent > docevent(getOwnerDocument(), UNO_QUERY);
Reference< XMutationEvent > event(docevent->createEvent(
OUString::createFromAscii("DOMSubtreeModified")), UNO_QUERY);
event->initMutationEvent(OUString::createFromAscii("DOMSubtreeModified"), sal_True,
sal_False, Reference< XNode >(),
OUString(), OUString(), OUString(), (AttrChangeType)0 );
pEvent->m_target = Reference< XEventTarget >(this);
dispatchEvent(Reference< XEvent >(static_cast< events::CEvent* >(pEvent)));
dispatchEvent(Reference< XEvent >(event, UNO_QUERY));
return aNode;
}
......@@ -813,7 +816,7 @@ namespace DOM
// --- XEventTarget
void SAL_CALL CNode::addEventListener(EventType eventType,
void SAL_CALL CNode::addEventListener(const OUString& eventType,
const Reference< XEventListener >& listener,
sal_Bool useCapture)
throw (RuntimeException)
......@@ -821,7 +824,7 @@ namespace DOM
events::CEventDispatcher::addListener(m_aNodePtr, eventType, listener, useCapture);
}
void SAL_CALL CNode::removeEventListener(EventType eventType,
void SAL_CALL CNode::removeEventListener(const OUString& eventType,
const Reference< XEventListener >& listener,
sal_Bool useCapture)
throw (RuntimeException)
......
......@@ -2,9 +2,9 @@
*
* $RCSfile: node.hxx,v $
*
* $Revision: 1.3 $
* $Revision: 1.4 $
*
* last change: $Author: lo $ $Date: 2004-02-26 14:43:16 $
* last change: $Author: lo $ $Date: 2004-02-27 16:14:30 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
......@@ -73,10 +73,14 @@
#include <com/sun/star/xml/dom/XNodeList.hpp>
#include <com/sun/star/xml/dom/XNamedNodeMap.hpp>
#include <com/sun/star/xml/dom/NodeType.hpp>
#include <com/sun/star/xml/dom/events/XEventTarget.hpp>
#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/uno/Sequence.h>
#include <com/sun/star/xml/dom/events/XEventTarget.hpp>
#include <com/sun/star/xml/dom/events/XDocumentEvent.hpp>
#include <com/sun/star/xml/dom/events/XEvent.hpp>
#include <com/sun/star/xml/dom/events/XMutationEvent.hpp>
#include <com/sun/star/xml/dom/events/XUIEvent.hpp>
#include <com/sun/star/xml/dom/events/XMouseEvent.hpp>
#include <com/sun/star/xml/dom/DOMException.hpp>
#include <libxml/tree.h>
......@@ -295,12 +299,12 @@ namespace DOM
virtual sal_Int64 SAL_CALL getSomething(const Sequence< sal_Int8 >& id) throw (RuntimeException);
// --- XEventTarget
virtual void SAL_CALL addEventListener(EventType eventType,
virtual void SAL_CALL addEventListener(const OUString& eventType,
const Reference< XEventListener >& listener,
sal_Bool useCapture)
throw (RuntimeException);
virtual void SAL_CALL removeEventListener(EventType eventType,
virtual void SAL_CALL removeEventListener(const OUString& eventType,
const Reference< XEventListener >& listener,
sal_Bool useCapture)
throw (RuntimeException);
......
......@@ -2,9 +2,9 @@
*
* $RCSfile: processinginstruction.cxx,v $
*
* $Revision: 1.2 $
* $Revision: 1.3 $
*
* last change: $Author: lo $ $Date: 2004-02-26 14:43:16 $
* last change: $Author: lo $ $Date: 2004-02-27 16:14:30 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
......@@ -108,8 +108,9 @@ namespace DOM
}
return aName;
}
OUString SAL_CALL CProcessingInstruction::getNodeValue() throw (RuntimeException)
{
return OUString();
return getData();
}
}
......@@ -7,7 +7,7 @@ namespace DOM { namespace events
{
}
EventType SAL_CALL CEvent::getType() throw (RuntimeException)
OUString SAL_CALL CEvent::getType() throw (RuntimeException)
{
return m_eventType;
}
......@@ -44,13 +44,14 @@ namespace DOM { namespace events
void SAL_CALL CEvent::stopPropagation() throw (RuntimeException)
{
if (m_cancelable) m_canceled = sal_True;
}
void SAL_CALL CEvent::preventDefault() throw (RuntimeException)
{
}
void SAL_CALL CEvent::initEvent( EventType eventTypeArg, sal_Bool canBubbleArg,
void SAL_CALL CEvent::initEvent(const OUString& eventTypeArg, sal_Bool canBubbleArg,
sal_Bool cancelableArg) throw (RuntimeException)
{
m_eventType = eventTypeArg;
......
......@@ -34,8 +34,11 @@ friend class CCharacterData;
friend class CAttr;
private:
sal_Bool m_canceled;
protected:
EventType m_eventType;
OUString m_eventType;
Reference< XEventTarget > m_target;
Reference< XEventTarget > m_currentTarget;
//xmlNodePtr m_target;
......@@ -47,8 +50,10 @@ protected:
public:
CEvent() : m_canceled(sal_False){}
virtual ~CEvent();
virtual EventType SAL_CALL getType() throw (RuntimeException);
virtual OUString SAL_CALL getType() throw (RuntimeException);
virtual Reference< XEventTarget > SAL_CALL getTarget() throw (RuntimeException);
virtual Reference< XEventTarget > SAL_CALL getCurrentTarget() throw (RuntimeException);
virtual PhaseType SAL_CALL getEventPhase() throw (RuntimeException);
......@@ -58,10 +63,9 @@ public:
virtual void SAL_CALL stopPropagation() throw (RuntimeException);
virtual void SAL_CALL preventDefault() throw (RuntimeException);
virtual void SAL_CALL initEvent(
EventType eventTypeArg,
const OUString& eventTypeArg,
sal_Bool canBubbleArg,
sal_Bool cancelableArg)
throw (RuntimeException);
sal_Bool cancelableArg) throw (RuntimeException);
};
}}
#endif
......@@ -7,7 +7,7 @@ namespace DOM { namespace events {
TypeListenerMap CEventDispatcher::captureListeners;
TypeListenerMap CEventDispatcher::targetListeners;
void CEventDispatcher::addListener(xmlNodePtr pNode, EventType aType, const Reference<XEventListener>& aListener, sal_Bool bCapture)
void CEventDispatcher::addListener(xmlNodePtr pNode, OUString aType, const Reference<XEventListener>& aListener, sal_Bool bCapture)
{
TypeListenerMap* pTMap = &targetListeners;
if (bCapture) pTMap = &captureListeners;
......@@ -26,7 +26,7 @@ namespace DOM { namespace events {
pMap->insert(ListenerMap::value_type(pNode, aListener));
}
void CEventDispatcher::removeListener(xmlNodePtr pNode, EventType aType, const Reference<XEventListener>& aListener, sal_Bool bCapture)
void CEventDispatcher::removeListener(xmlNodePtr pNode, OUString aType, const Reference<XEventListener>& aListener, sal_Bool bCapture)
{
TypeListenerMap *pTMap = &targetListeners;
if (bCapture) pTMap = &captureListeners;
......@@ -53,7 +53,7 @@ namespace DOM { namespace events {
}
}
void CEventDispatcher::callListeners(xmlNodePtr pNode, EventType aType, const Reference< XEvent >& xEvent, sal_Bool bCapture)
void CEventDispatcher::callListeners(xmlNodePtr pNode, OUString aType, const Reference< XEvent >& xEvent, sal_Bool bCapture)
{
TypeListenerMap *pTMap = &targetListeners;
if (bCapture) pTMap = &captureListeners;
......@@ -80,81 +80,93 @@ namespace DOM { namespace events {
sal_Bool CEventDispatcher::dispatchEvent(xmlNodePtr aNodePtr, const Reference< XEvent >& aEvent)
{
EventType aType = aEvent->getType();
switch (aType)
CEvent *pEvent = 0; // pointer to internal event representation
Reference< XEvent > xEvent; // reference to the event being dispatched;
OUString aType = aEvent->getType();
if (aType.compareToAscii("DOMSubtreeModified") == 0||
aType.compareToAscii("DOMNodeInserted") == 0||
aType.compareToAscii("DOMNodeRemoved") == 0||
aType.compareToAscii("DOMNodeRemovedFromDocument") == 0||
aType.compareToAscii("DOMNodeInsertedIntoDocument") == 0||
aType.compareToAscii("DOMAttrModified") == 0||
aType.compareToAscii("DOMCharacterDataModified") == 0)
{
case EventType_DOMSubtreeModified:
case EventType_DOMNodeInserted:
case EventType_DOMNodeRemoved:
case EventType_DOMNodeRemovedFromDocument:
case EventType_DOMNodeInsertedIntoDocument:
case EventType_DOMAttrModified:
case EventType_DOMCharacterDataModified:
{
Reference< XMutationEvent > aMEvent(aEvent, UNO_QUERY);
// dispatch a mutation event
// we need to clone the event in order to have complete control
// over the implementation
CMutationEvent* pEvent = new CMutationEvent;
pEvent->m_target = aEvent->getTarget();
pEvent->m_currentTarget = aEvent->getCurrentTarget();
pEvent->m_time = aEvent->getTimeStamp();
pEvent->initMutationEvent(
CMutationEvent* pMEvent = new CMutationEvent;
pMEvent->initMutationEvent(
aType, aMEvent->getBubbles(), aMEvent->getCancelable(),
aMEvent->getRelatedNode(), aMEvent->getPrevValue(),
aMEvent->getNewValue(), aMEvent->getAttrName(),
aMEvent->getAttrChange());
Reference< XEvent > xEvent(static_cast< CEvent* >(pEvent));
pEvent = pMEvent;
}
else // generic event
{
pEvent = new CEvent;
pEvent->initEvent(
aType, aEvent->getBubbles(), aEvent->getCancelable());
// build the path from target node to the root
NodeVector captureVector;
Reference< XUnoTunnel > aTunnel(xEvent->getTarget(), UNO_QUERY_THROW);
xmlNodePtr cur = (xmlNodePtr)aTunnel->getSomething(Sequence< sal_Int8 >());
while (cur != NULL)
{
captureVector.push_back(cur);
cur = cur->parent;
}
// the caputre vector now holds the node path from target to root
// first we must search for capture listernes in order root to
// to target. after that, any target listeners have to be called
// then bubbeling phase listeners are called in target to root
// order
NodeVector::const_iterator inode;
}
pEvent->m_target = Reference< XEventTarget >(DOM::CNode::get(aNodePtr));
pEvent->m_currentTarget = aEvent->getCurrentTarget();
pEvent->m_time = aEvent->getTimeStamp();
xEvent = Reference< XEvent >(static_cast< CEvent* >(pEvent));
// start at the root
inode = captureVector.end();
// build the path from target node to the root
NodeVector captureVector;
Reference< XUnoTunnel > aTunnel(xEvent->getTarget(), UNO_QUERY_THROW);
xmlNodePtr cur = (xmlNodePtr)aTunnel->getSomething(Sequence< sal_Int8 >());
while (cur != NULL)
{
captureVector.push_back(cur);
cur = cur->parent;
}
// the caputre vector now holds the node path from target to root
// first we must search for capture listernes in order root to
// to target. after that, any target listeners have to be called
// then bubbeling phase listeners are called in target to root
// order
NodeVector::const_iterator inode;
// start at the root
inode = captureVector.end();
inode--;
if (inode != captureVector.end())
{
// capturing phase:
pEvent->m_phase = PhaseType_CAPTURING_PHASE;
while (inode != captureVector.begin())
{
//pEvent->m_currentTarget = *inode;
pEvent->m_currentTarget = Reference< XEventTarget >(CNode::get(*inode));
callListeners(*inode, aType, xEvent, sal_True);
if (pEvent->m_canceled) return sal_True;
inode--;
if (inode != captureVector.end())
}
// target phase
pEvent->m_phase = PhaseType_AT_TARGET;
callListeners(*inode, aType, xEvent, sal_False);
if (pEvent->m_canceled) return sal_True;
// bubbeling phase
inode++;
if (aEvent->getBubbles()) {
pEvent->m_phase = PhaseType_BUBBLING_PHASE;
while (inode != captureVector.end())
{
// capturing phase:
pEvent->m_phase = PhaseType_CAPTURING_PHASE;
while (inode != captureVector.begin())
{
//pEvent->m_currentTarget = *inode;
pEvent->m_currentTarget = Reference< XEventTarget >(CNode::get(*inode));
callListeners(*inode, aType, xEvent, sal_True);
inode--;
}
// target phase
pEvent->m_phase = PhaseType_AT_TARGET;
pEvent->m_currentTarget = Reference< XEventTarget >(CNode::get(*inode));
callListeners(*inode, aType, xEvent, sal_False);
// bubbeling phase
if (pEvent->m_canceled) return sal_True;
inode++;
if (aEvent->getBubbles()) {
pEvent->m_phase = PhaseType_BUBBLING_PHASE;
while (inode != captureVector.end())
{
pEvent->m_currentTarget = Reference< XEventTarget >(CNode::get(*inode));
callListeners(*inode, aType, xEvent, sal_False);
inode++;
}
}
}
}
break;
}
return sal_True;
}
......
......@@ -18,7 +18,7 @@ namespace DOM { namespace events
typedef std::vector< xmlNodePtr > NodeVector;
typedef std::multimap< xmlNodePtr, Reference< XEventListener> > ListenerMap;
typedef std::map<EventType, ListenerMap*> TypeListenerMap;typedef std::vector<ListenerMap::value_type> ListenerPairVector;
typedef std::map<OUString, ListenerMap*> TypeListenerMap;typedef std::vector<ListenerMap::value_type> ListenerPairVector;
class CEventDispatcher
{
......@@ -31,19 +31,19 @@ public:
static void addListener(
xmlNodePtr pNode,
EventType aType,
OUString aType,
const Reference<XEventListener>& aListener,
sal_Bool bCapture);
static void removeListener(
xmlNodePtr pNode,
EventType aType,
OUString aType,
const Reference<XEventListener>& aListener,
sal_Bool bCapture);
static void callListeners(
xmlNodePtr pNode,
EventType aType,
OUString aType,
const Reference< XEvent >& xEvent,
sal_Bool bCapture);
};
......
......@@ -31,7 +31,7 @@ namespace DOM { namespace events
return m_attrChangeType;
}
void SAL_CALL CMutationEvent::initMutationEvent(EventType typeArg,
void SAL_CALL CMutationEvent::initMutationEvent(const OUString& typeArg,
sal_Bool canBubbleArg, sal_Bool cancelableArg,
const Reference< XNode >& relatedNodeArg, const OUString& prevValueArg,
const OUString& newValueArg, const OUString& attrNameArg,
......@@ -46,7 +46,7 @@ namespace DOM { namespace events
}
// delegate to CEvent, since we are inheriting from CEvent and XEvent
EventType SAL_CALL CMutationEvent::getType() throw (RuntimeException)
OUString SAL_CALL CMutationEvent::getType() throw (RuntimeException)
{
return CEvent::getType();
}
......@@ -91,7 +91,7 @@ namespace DOM { namespace events
// no effect
}
void SAL_CALL CMutationEvent::initEvent( EventType eventTypeArg, sal_Bool canBubbleArg,
void SAL_CALL CMutationEvent::initEvent(const OUString& eventTypeArg, sal_Bool canBubbleArg,
sal_Bool cancelableArg) throw (RuntimeException)
{
// base initializer
......
......@@ -36,7 +36,8 @@ public:
virtual OUString SAL_CALL getNewValue() throw (RuntimeException);
virtual OUString SAL_CALL getAttrName() throw (RuntimeException);
virtual AttrChangeType SAL_CALL getAttrChange() throw (RuntimeException);
virtual void SAL_CALL initMutationEvent(EventType typeArg,
virtual void SAL_CALL initMutationEvent(
const OUString& typeArg,
sal_Bool canBubbleArg,
sal_Bool cancelableArg,
const Reference< XNode >& relatedNodeArg,
......@@ -46,7 +47,7 @@ public:
AttrChangeType attrChangeArg) throw (RuntimeException);