Home | History | Annotate | Download | only in app_list
      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 CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_H_
      6 #define CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/memory/scoped_ptr.h"
     12 #include "ui/base/models/simple_menu_model.h"
     13 
     14 class AppListControllerDelegate;
     15 class Profile;
     16 
     17 namespace extensions {
     18 class ContextMenuMatcher;
     19 }
     20 
     21 namespace app_list {
     22 
     23 class AppContextMenuDelegate;
     24 
     25 class AppContextMenu : public ui::SimpleMenuModel::Delegate {
     26  public:
     27   AppContextMenu(AppContextMenuDelegate* delegate,
     28                  Profile* profile,
     29                  const std::string& app_id,
     30                  AppListControllerDelegate* controller);
     31   virtual ~AppContextMenu();
     32 
     33   // Note this could return NULL if corresponding extension is gone.
     34   ui::MenuModel* GetMenuModel();
     35 
     36   void set_is_platform_app(bool is_platform_app) {
     37     is_platform_app_ = is_platform_app;
     38   }
     39   void set_is_search_result(bool is_search_result) {
     40     is_search_result_ = is_search_result;
     41   }
     42   void set_is_in_folder(bool is_in_folder) {
     43     is_in_folder_ = is_in_folder;
     44   }
     45 
     46  private:
     47   // ui::SimpleMenuModel::Delegate overrides:
     48   virtual bool IsItemForCommandIdDynamic(int command_id) const OVERRIDE;
     49   virtual base::string16 GetLabelForCommandId(int command_id) const OVERRIDE;
     50   virtual bool IsCommandIdChecked(int command_id) const OVERRIDE;
     51   virtual bool IsCommandIdEnabled(int command_id) const OVERRIDE;
     52   virtual bool GetAcceleratorForCommandId(
     53       int command_id,
     54       ui::Accelerator* acclelrator) OVERRIDE;
     55   virtual void ExecuteCommand(int command_id, int event_flags) OVERRIDE;
     56 
     57   AppContextMenuDelegate* delegate_;
     58   Profile* profile_;
     59   const std::string app_id_;
     60   AppListControllerDelegate* controller_;
     61   bool is_platform_app_;
     62   bool is_search_result_;
     63   bool is_in_folder_;
     64 
     65   scoped_ptr<ui::SimpleMenuModel> menu_model_;
     66   scoped_ptr<extensions::ContextMenuMatcher> extension_menu_items_;
     67 
     68   DISALLOW_COPY_AND_ASSIGN(AppContextMenu);
     69 };
     70 
     71 }  // namespace app_list
     72 
     73 #endif  // CHROME_BROWSER_UI_APP_LIST_APP_CONTEXT_MENU_H_
     74