Home | History | Annotate | Download | only in shelf
      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_ITEM_DELEGATE_H_
      6 #define ASH_SHELF_SHELF_ITEM_DELEGATE_H_
      7 
      8 #include "ash/ash_export.h"
      9 #include "base/strings/string16.h"
     10 
     11 namespace aura {
     12 class Window;
     13 }
     14 
     15 namespace ui {
     16 class Event;
     17 class MenuModel;
     18 }
     19 
     20 namespace ash {
     21 
     22 class ShelfMenuModel;
     23 
     24 // Delegate for the LauncherItem.
     25 class ASH_EXPORT ShelfItemDelegate {
     26  public:
     27   virtual ~ShelfItemDelegate() {}
     28 
     29   // Invoked when the user clicks on a window entry in the launcher.
     30   // |event| is the click event. The |event| is dispatched by a view
     31   // and has an instance of |views::View| as the event target
     32   // but not |aura::Window|. If the |event| is of type KeyEvent, it is assumed
     33   // that this was triggered by keyboard action (Alt+<number>) and special
     34   // handling might happen.
     35   // Returns true if a new item was created.
     36   virtual bool ItemSelected(const ui::Event& event) = 0;
     37 
     38   // Returns the title to display.
     39   virtual base::string16 GetTitle() = 0;
     40 
     41   // Returns the context menumodel for the specified item on
     42   // |root_window|.  Return NULL if there should be no context
     43   // menu. The caller takes ownership of the returned model.
     44   virtual ui::MenuModel* CreateContextMenu(aura::Window* root_window) = 0;
     45 
     46   // Returns the application menu model for the specified item. There are three
     47   // possible return values:
     48   //  - A return of NULL indicates that no menu is wanted for this item.
     49   //  - A return of a menu with one item means that only the name of the
     50   //    application/item was added and there are no active applications.
     51   //    Note: This is useful for hover menus which also show context help.
     52   //  - A list containing the title and the active list of items.
     53   // The caller takes ownership of the returned model.
     54   // |event_flags| specifies the flags of the event which triggered this menu.
     55   virtual ShelfMenuModel* CreateApplicationMenu(int event_flags) = 0;
     56 
     57   // Whether the launcher item is draggable.
     58   virtual bool IsDraggable() = 0;
     59 
     60   // Returns true if a tooltip should be shown.
     61   virtual bool ShouldShowTooltip() = 0;
     62 };
     63 
     64 }  // namespace ash
     65 
     66 #endif  // ASH_SHELF_SHELF_ITEM_DELEGATE_H_
     67