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_SHELF_APP_LIST_BUTTON_H_ 6 #define ASH_SHELF_APP_LIST_BUTTON_H_ 7 8 #include "ui/views/controls/button/image_button.h" 9 10 namespace ash { 11 class ShelfButtonHost; 12 class ShelfWidget; 13 14 // Button used for the AppList icon on the shelf. 15 class AppListButton : public views::ImageButton { 16 public: 17 // Bounds size (inset) required for the app icon image (in pixels). 18 static const int kImageBoundsSize; 19 20 AppListButton(views::ButtonListener* listener, 21 ShelfButtonHost* host, 22 ShelfWidget* shelf_widget); 23 virtual ~AppListButton(); 24 25 protected: 26 // views::ImageButton overrides: 27 virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE; 28 virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE; 29 virtual void OnMouseCaptureLost() OVERRIDE; 30 virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE; 31 virtual void OnMouseMoved(const ui::MouseEvent& event) OVERRIDE; 32 virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE; 33 virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE; 34 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 35 virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE; 36 37 // ui::EventHandler overrides: 38 virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; 39 40 private: 41 ShelfButtonHost* host_; 42 // Reference to the shelf widget containing this button, owned by the 43 // root window controller. 44 ShelfWidget* shelf_widget_; 45 46 DISALLOW_COPY_AND_ASSIGN(AppListButton); 47 }; 48 49 } // namespace ash 50 51 #endif // ASH_SHELF_APP_LIST_BUTTON_H_ 52