// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_EVENTS_EVENT_HANDLER_H_ #define UI_EVENTS_EVENT_HANDLER_H_ #include #include #include "base/macros.h" #include "ui/events/event_constants.h" #include "ui/events/events_export.h" namespace ui { class CancelModeEvent; class Event; class EventDispatcher; class EventTarget; class GestureEvent; class KeyEvent; class MouseEvent; class ScrollEvent; class TouchEvent; // Dispatches events to appropriate targets. The default implementations of // all of the specific handlers (e.g. OnKeyEvent, OnMouseEvent) do nothing. class EVENTS_EXPORT EventHandler { public: EventHandler(); virtual ~EventHandler(); // This is called for all events. The default implementation routes the event // to one of the event-specific callbacks (OnKeyEvent, OnMouseEvent etc.). If // this is overridden, then normally, the override should chain into the // default implementation for un-handled events. virtual void OnEvent(Event* event); virtual void OnKeyEvent(KeyEvent* event); virtual void OnMouseEvent(MouseEvent* event); virtual void OnScrollEvent(ScrollEvent* event); virtual void OnTouchEvent(TouchEvent* event); virtual void OnGestureEvent(GestureEvent* event); virtual void OnCancelMode(CancelModeEvent* event); private: friend class EventDispatcher; // EventDispatcher pushes itself on the top of this stack while dispatching // events to this then pops itself off when done. std::stack dispatchers_; DISALLOW_COPY_AND_ASSIGN(EventHandler); }; typedef std::vector EventHandlerList; } // namespace ui #endif // UI_EVENTS_EVENT_HANDLER_H_