1// Copyright 2013 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_SHELF_BUTTON_HOST_H_ 6#define ASH_SHELF_SHELF_BUTTON_HOST_H_ 7 8#include "ash/ash_export.h" 9#include "base/strings/string16.h" 10 11namespace ui { 12class LocatedEvent; 13} 14 15namespace views { 16class View; 17} 18 19namespace ash { 20namespace internal { 21 22// The shelf buttons communicate back to the host by way of this interface. 23// This interface is used to enable reordering the items on the shelf. 24class ASH_EXPORT ShelfButtonHost { 25 public: 26 enum Pointer { 27 NONE, 28 DRAG_AND_DROP, 29 MOUSE, 30 TOUCH, 31 }; 32 33 // Invoked when a pointer device is pressed on a view. 34 virtual void PointerPressedOnButton(views::View* view, 35 Pointer pointer, 36 const ui::LocatedEvent& event) = 0; 37 38 // Invoked when a pointer device is dragged over a view. 39 virtual void PointerDraggedOnButton(views::View* view, 40 Pointer pointer, 41 const ui::LocatedEvent& event) = 0; 42 43 // Invoked either if a pointer device is released or mouse capture canceled. 44 virtual void PointerReleasedOnButton(views::View* view, 45 Pointer pointer, 46 bool canceled) = 0; 47 48 // Invoked when the mouse moves on the item. 49 virtual void MouseMovedOverButton(views::View* view) = 0; 50 51 // Invoked when the mouse enters the item. 52 virtual void MouseEnteredButton(views::View* view) = 0; 53 54 // Invoked when the mouse exits the item. 55 virtual void MouseExitedButton(views::View* view) = 0; 56 57 // Invoked to get the accessible name of the item. 58 virtual base::string16 GetAccessibleName(const views::View* view) = 0; 59 60 protected: 61 virtual ~ShelfButtonHost() {} 62}; 63 64} // namespace internal 65} // namespace ash 66 67#endif // ASH_SHELF_SHELF_BUTTON_HOST_H_ 68