app_context_menu.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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 14class AppListControllerDelegate; 15class Profile; 16 17namespace extensions { 18class ContextMenuMatcher; 19} 20 21namespace app_list { 22 23class AppContextMenuDelegate; 24 25class 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