diff options
Diffstat (limited to 'chromium/ash/system/tray/actionable_view.h')
-rw-r--r-- | chromium/ash/system/tray/actionable_view.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/chromium/ash/system/tray/actionable_view.h b/chromium/ash/system/tray/actionable_view.h new file mode 100644 index 00000000000..f2b3ec1deba --- /dev/null +++ b/chromium/ash/system/tray/actionable_view.h @@ -0,0 +1,68 @@ +// Copyright 2013 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 ASH_SYSTEM_TRAY_ACTIONABLE_VIEW_H_ +#define ASH_SYSTEM_TRAY_ACTIONABLE_VIEW_H_ + +#include "ash/ash_export.h" +#include "base/basictypes.h" +#include "base/compiler_specific.h" +#include "ui/views/view.h" + +namespace ash { +namespace internal { + +// A focusable view that performs an action when user clicks on it, or presses +// enter or space when focused. Note that the action is triggered on mouse-up, +// instead of on mouse-down. So if user presses the mouse on the view, then +// moves the mouse out of the view and then releases, then the action will not +// be performed. +// Exported for SystemTray. +class ASH_EXPORT ActionableView : public views::View { + public: + static const char kViewClassName[]; + + ActionableView(); + + virtual ~ActionableView(); + + void SetAccessibleName(const base::string16& name); + const base::string16& accessible_name() const { return accessible_name_; } + + protected: + void OnPaintFocus(gfx::Canvas* canvas); + + // Returns the bounds to paint the focus rectangle in. + virtual gfx::Rect GetFocusBounds(); + + // Performs an action when user clicks on the view (on mouse-press event), or + // presses a key when this view is in focus. Returns true if the event has + // been handled and an action was performed. Returns false otherwise. + virtual bool PerformAction(const ui::Event& event) = 0; + + // Overridden from views::View. + virtual const char* GetClassName() const OVERRIDE; + virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE; + virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE; + virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE; + virtual void OnMouseCaptureLost() OVERRIDE; + virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE; + virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; + virtual void OnFocus() OVERRIDE; + virtual void OnBlur() OVERRIDE; + + // Overridden from ui::EventHandler. + virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; + + private: + base::string16 accessible_name_; + bool has_capture_; + + DISALLOW_COPY_AND_ASSIGN(ActionableView); +}; + +} // namespace internal +} // namespace ash + +#endif // ASH_SYSTEM_TRAY_ACTIONABLE_VIEW_H_ |