2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
6 * (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Library General Public License for more details.
18 * You should have received a copy of the GNU Library General Public License
19 * along with this library; see the file COPYING.LIB. If not, write to
20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301, USA.
25 #ifndef EventTargetNode_h
26 #define EventTargetNode_h
28 #include "EventTarget.h"
36 class EventTargetNode
: public Node
, public EventTarget
{
38 EventTargetNode(Document
*, bool isElement
= false, bool isContainer
= false);
39 virtual ~EventTargetNode();
41 virtual bool isEventTargetNode() const { return true; }
42 virtual EventTargetNode
* toNode() { return this; }
44 virtual ScriptExecutionContext
* scriptExecutionContext() const;
46 virtual void addEventListener(const AtomicString
& eventType
, PassRefPtr
<EventListener
>, bool useCapture
);
47 virtual void removeEventListener(const AtomicString
& eventType
, EventListener
*, bool useCapture
);
48 virtual bool dispatchEvent(PassRefPtr
<Event
>, ExceptionCode
&);
49 void removeAllEventListeners();
51 void setInlineEventListenerForType(const AtomicString
& eventType
, PassRefPtr
<EventListener
>);
52 void setInlineEventListenerForTypeAndAttribute(const AtomicString
& eventType
, Attribute
*);
53 void removeInlineEventListenerForType(const AtomicString
& eventType
);
54 bool dispatchEventForType(const AtomicString
& eventType
, bool canBubble
, bool cancelable
);
55 EventListener
* inlineEventListenerForType(const AtomicString
& eventType
) const;
57 bool dispatchSubtreeModifiedEvent();
58 void dispatchWindowEvent(PassRefPtr
<Event
>);
59 void dispatchWindowEvent(const AtomicString
& eventType
, bool canBubble
, bool cancelable
);
60 bool dispatchUIEvent(const AtomicString
& eventType
, int detail
= 0, PassRefPtr
<Event
> underlyingEvent
= 0);
61 bool dispatchKeyEvent(const PlatformKeyboardEvent
&);
62 void dispatchWheelEvent(PlatformWheelEvent
&);
63 bool dispatchMouseEvent(const PlatformMouseEvent
&, const AtomicString
& eventType
,
64 int clickCount
= 0, Node
* relatedTarget
= 0);
65 bool dispatchMouseEvent(const AtomicString
& eventType
, int button
, int clickCount
,
66 int pageX
, int pageY
, int screenX
, int screenY
,
67 bool ctrlKey
, bool altKey
, bool shiftKey
, bool metaKey
,
68 bool isSimulated
= false, Node
* relatedTarget
= 0, PassRefPtr
<Event
> underlyingEvent
= 0);
69 void dispatchSimulatedMouseEvent(const AtomicString
& eventType
, PassRefPtr
<Event
> underlyingEvent
= 0);
70 void dispatchSimulatedClick(PassRefPtr
<Event
> underlyingEvent
, bool sendMouseEvents
= false, bool showPressedLook
= true);
71 bool dispatchProgressEvent(const AtomicString
&eventType
, bool lengthComputableArg
, unsigned loadedArg
, unsigned totalArg
);
72 void dispatchStorageEvent(const AtomicString
&eventType
, const String
& key
, const String
& oldValue
, const String
& newValue
, Frame
* source
);
73 bool dispatchWebKitAnimationEvent(const AtomicString
& eventType
, const String
& animationName
, double elapsedTime
);
74 bool dispatchWebKitTransitionEvent(const AtomicString
& eventType
, const String
& propertyName
, double elapsedTime
);
75 bool dispatchGenericEvent(PassRefPtr
<Event
>, ExceptionCode
&);
77 virtual void handleLocalEvents(Event
*, bool useCapture
);
79 virtual void dispatchFocusEvent();
80 virtual void dispatchBlurEvent();
82 virtual void insertedIntoDocument();
83 virtual void removedFromDocument();
84 virtual void willMoveToNewOwnerDocument();
85 virtual void didMoveToNewOwnerDocument();
88 * Perform the default action for an event e.g. submitting a form
90 virtual void defaultEventHandler(Event
*);
93 * Used for disabled form elements; if true, prevents mouse events from being dispatched
94 * to event listeners, and prevents DOMActivate events from being sent at all.
96 virtual bool disabled() const;
98 RegisteredEventListenerList
* localEventListeners() const { return m_regdListeners
; }
100 EventListener
* onabort() const;
101 void setOnabort(PassRefPtr
<EventListener
>);
102 EventListener
* onblur() const;
103 void setOnblur(PassRefPtr
<EventListener
>);
104 EventListener
* onchange() const;
105 void setOnchange(PassRefPtr
<EventListener
>);
106 EventListener
* onclick() const;
107 void setOnclick(PassRefPtr
<EventListener
>);
108 EventListener
* oncontextmenu() const;
109 void setOncontextmenu(PassRefPtr
<EventListener
>);
110 EventListener
* ondblclick() const;
111 void setOndblclick(PassRefPtr
<EventListener
>);
112 EventListener
* onerror() const;
113 void setOnerror(PassRefPtr
<EventListener
>);
114 EventListener
* onfocus() const;
115 void setOnfocus(PassRefPtr
<EventListener
>);
116 EventListener
* oninput() const;
117 void setOninput(PassRefPtr
<EventListener
>);
118 EventListener
* onkeydown() const;
119 void setOnkeydown(PassRefPtr
<EventListener
>);
120 EventListener
* onkeypress() const;
121 void setOnkeypress(PassRefPtr
<EventListener
>);
122 EventListener
* onkeyup() const;
123 void setOnkeyup(PassRefPtr
<EventListener
>);
124 EventListener
* onload() const;
125 void setOnload(PassRefPtr
<EventListener
>);
126 EventListener
* onmousedown() const;
127 void setOnmousedown(PassRefPtr
<EventListener
>);
128 EventListener
* onmousemove() const;
129 void setOnmousemove(PassRefPtr
<EventListener
>);
130 EventListener
* onmouseout() const;
131 void setOnmouseout(PassRefPtr
<EventListener
>);
132 EventListener
* onmouseover() const;
133 void setOnmouseover(PassRefPtr
<EventListener
>);
134 EventListener
* onmouseup() const;
135 void setOnmouseup(PassRefPtr
<EventListener
>);
136 EventListener
* onmousewheel() const;
137 void setOnmousewheel(PassRefPtr
<EventListener
>);
138 EventListener
* onbeforecut() const;
139 void setOnbeforecut(PassRefPtr
<EventListener
>);
140 EventListener
* oncut() const;
141 void setOncut(PassRefPtr
<EventListener
>);
142 EventListener
* onbeforecopy() const;
143 void setOnbeforecopy(PassRefPtr
<EventListener
>);
144 EventListener
* oncopy() const;
145 void setOncopy(PassRefPtr
<EventListener
>);
146 EventListener
* onbeforepaste() const;
147 void setOnbeforepaste(PassRefPtr
<EventListener
>);
148 EventListener
* onpaste() const;
149 void setOnpaste(PassRefPtr
<EventListener
>);
150 EventListener
* ondragenter() const;
151 void setOndragenter(PassRefPtr
<EventListener
>);
152 EventListener
* ondragover() const;
153 void setOndragover(PassRefPtr
<EventListener
>);
154 EventListener
* ondragleave() const;
155 void setOndragleave(PassRefPtr
<EventListener
>);
156 EventListener
* ondrop() const;
157 void setOndrop(PassRefPtr
<EventListener
>);
158 EventListener
* ondragstart() const;
159 void setOndragstart(PassRefPtr
<EventListener
>);
160 EventListener
* ondrag() const;
161 void setOndrag(PassRefPtr
<EventListener
>);
162 EventListener
* ondragend() const;
163 void setOndragend(PassRefPtr
<EventListener
>);
164 EventListener
* onreset() const;
165 void setOnreset(PassRefPtr
<EventListener
>);
166 EventListener
* onresize() const;
167 void setOnresize(PassRefPtr
<EventListener
>);
168 EventListener
* onscroll() const;
169 void setOnscroll(PassRefPtr
<EventListener
>);
170 EventListener
* onsearch() const;
171 void setOnsearch(PassRefPtr
<EventListener
>);
172 EventListener
* onselect() const;
173 void setOnselect(PassRefPtr
<EventListener
>);
174 EventListener
* onselectstart() const;
175 void setOnselectstart(PassRefPtr
<EventListener
>);
176 EventListener
* onsubmit() const;
177 void setOnsubmit(PassRefPtr
<EventListener
>);
178 EventListener
* onunload() const;
179 void setOnunload(PassRefPtr
<EventListener
>);
185 friend class EventTarget
;
186 RegisteredEventListenerList
* m_regdListeners
;
189 virtual void refEventTarget() { ref(); }
190 virtual void derefEventTarget() { deref(); }
193 inline EventTargetNode
* EventTargetNodeCast(Node
* n
)
195 ASSERT(n
->isEventTargetNode());
196 return static_cast<EventTargetNode
*>(n
);
199 inline const EventTargetNode
* EventTargetNodeCast(const Node
* n
)
201 ASSERT(n
->isEventTargetNode());
202 return static_cast<const EventTargetNode
*>(n
);
205 } // namespace WebCore
207 #endif // EventTargetNode_h