Home | History | Annotate | Download | only in events
      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_BASE_EVENTS_EVENT_HANDLER_H_
      6 #define UI_BASE_EVENTS_EVENT_HANDLER_H_
      7 
      8 #include <stack>
      9 #include <vector>
     10 
     11 #include "base/basictypes.h"
     12 #include "ui/base/events/event_constants.h"
     13 #include "ui/base/ui_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 UI_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_BASE_EVENTS_EVENT_HANDLER_H_
     67