- add sources.
[platform/framework/web/crosswalk.git] / src / ui / events / event_handler.h
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef UI_EVENTS_EVENT_HANDLER_H_
6 #define UI_EVENTS_EVENT_HANDLER_H_
7
8 #include <stack>
9 #include <vector>
10
11 #include "base/basictypes.h"
12 #include "ui/events/event_constants.h"
13 #include "ui/events/events_export.h"
14
15 namespace ui {
16
17 class CancelModeEvent;
18 class Event;
19 class EventDispatcher;
20 class EventTarget;
21 class GestureEvent;
22 class KeyEvent;
23 class MouseEvent;
24 class ScrollEvent;
25 class TouchEvent;
26
27 // Dispatches events to appropriate targets.  The default implementations of
28 // all of the specific handlers (e.g. OnKeyEvent, OnMouseEvent) do nothing.
29 class EVENTS_EXPORT EventHandler {
30  public:
31   EventHandler();
32   virtual ~EventHandler();
33
34   // This is called for all events. The default implementation routes the event
35   // to one of the event-specific callbacks (OnKeyEvent, OnMouseEvent etc.). If
36   // this is overridden, then normally, the override should chain into the
37   // default implementation for un-handled events.
38   virtual void OnEvent(Event* event);
39
40   virtual void OnKeyEvent(KeyEvent* event);
41
42   virtual void OnMouseEvent(MouseEvent* event);
43
44   virtual void OnScrollEvent(ScrollEvent* event);
45
46   virtual void OnTouchEvent(TouchEvent* event);
47
48   virtual void OnGestureEvent(GestureEvent* event);
49
50   virtual void OnCancelMode(CancelModeEvent* event);
51
52  private:
53   friend class EventDispatcher;
54
55   // EventDispatcher pushes itself on the top of this stack while dispatching
56   // events to this then pops itself off when done.
57   std::stack<EventDispatcher*> dispatchers_;
58
59   DISALLOW_COPY_AND_ASSIGN(EventHandler);
60 };
61
62 typedef std::vector<EventHandler*> EventHandlerList;
63
64 }  // namespace ui
65
66 #endif  // UI_EVENTS_EVENT_HANDLER_H_