2008-11-04 Anders Carlsson <andersca@apple.com>
[webkit/qt.git] / WebCore / dom / EventTargetNode.h
blobb3dced8d1c26fed162868eda50851a7d3a1f5be6
1 /*
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"
29 #include "Node.h"
31 namespace WebCore {
33 class Attribute;
34 class Frame;
36 class EventTargetNode : public Node, public EventTarget {
37 public:
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();
87 /**
88 * Perform the default action for an event e.g. submitting a form
90 virtual void defaultEventHandler(Event*);
92 /**
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>);
181 using Node::ref;
182 using Node::deref;
184 protected:
185 friend class EventTarget;
186 RegisteredEventListenerList* m_regdListeners;
188 private:
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