1// Copyright 2014 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 ASH_SYSTEM_USER_BUTTON_FROM_VIEW_H_ 6#define ASH_SYSTEM_USER_BUTTON_FROM_VIEW_H_ 7 8#include "base/macros.h" 9#include "ui/gfx/insets.h" 10#include "ui/views/controls/button/custom_button.h" 11 12namespace ash { 13namespace tray { 14 15// This view is used to wrap it's content and transform it into button. 16class ButtonFromView : public views::CustomButton { 17 public: 18 // The |content| is the content which is shown within the button. The 19 // |button_listener| will be informed - if provided - when a button was 20 // pressed. If |highlight_on_hover| is set to true, the button will be 21 // highlighted upon hover and show the accessibility caret. 22 // The |tab_frame_inset| will be used to inset the blue tab frame inside the 23 // button. 24 ButtonFromView(views::View* content, 25 views::ButtonListener* listener, 26 bool highlight_on_hover, 27 const gfx::Insets& tab_frame_inset); 28 virtual ~ButtonFromView(); 29 30 // Called when the border should remain even in the non highlighted state. 31 void ForceBorderVisible(bool show); 32 33 // Overridden from views::View 34 virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE; 35 virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE; 36 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 37 virtual void OnFocus() OVERRIDE; 38 virtual void OnBlur() OVERRIDE; 39 40 // Check if the item is hovered. 41 bool is_hovered_for_test() { return button_hovered_; } 42 43 private: 44 // Change the hover/active state of the "button" when the status changes. 45 void ShowActive(); 46 47 // Content of button. 48 views::View* content_; 49 50 // Whether button should be highligthed on hover. 51 bool highlight_on_hover_; 52 53 // True if button is hovered. 54 bool button_hovered_; 55 56 // True if the border should be always visible. 57 bool show_border_; 58 59 // The insets which get used for the drawn accessibility (tab) frame. 60 gfx::Insets tab_frame_inset_; 61 62 DISALLOW_COPY_AND_ASSIGN(ButtonFromView); 63}; 64 65} // namespace tray 66} // namespace ash 67 68#endif // ASH_SYSTEM_USER_BUTTON_FROM_VIEW_H_ 69