diff options
author | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-09 19:56:30 +0000 |
---|---|---|
committer | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-09 19:56:30 +0000 |
commit | 273865aa130f61f321d3eeafc0ea5a2a6dc9adf8 (patch) | |
tree | 05b9f5275ef0a0c63592f9b1102235aead02b59d /chrome/browser/views | |
parent | 12c7b1eaa34937a72c8b81de17fdb5c72d842431 (diff) | |
download | chromium_src-273865aa130f61f321d3eeafc0ea5a2a6dc9adf8.zip chromium_src-273865aa130f61f321d3eeafc0ea5a2a6dc9adf8.tar.gz chromium_src-273865aa130f61f321d3eeafc0ea5a2a6dc9adf8.tar.bz2 |
Share the code that builds the page menu in a common model, make Mac and Win use it. Implement a mac menu controller that takes this model and generates an NSMenu. Remove the Page Menu NSMenu from Toolbar.xib since it's now created in code.
BUG=22646
TEST=page menu should work as before
Review URL: http://codereview.chromium.org/465130
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34179 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views')
-rw-r--r-- | chrome/browser/views/toolbar_view.cc | 131 | ||||
-rw-r--r-- | chrome/browser/views/toolbar_view.h | 45 |
2 files changed, 4 insertions, 172 deletions
diff --git a/chrome/browser/views/toolbar_view.cc b/chrome/browser/views/toolbar_view.cc index 86576ea..8576656 100644 --- a/chrome/browser/views/toolbar_view.cc +++ b/chrome/browser/views/toolbar_view.cc @@ -77,77 +77,6 @@ static const int kPopupBottomSpacingGlass = 1; static SkBitmap* kPopupBackgroundEdge = NULL; //////////////////////////////////////////////////////////////////////////////// -// EncodingMenuModel - -EncodingMenuModel::EncodingMenuModel(Browser* browser) - : SimpleMenuModel(this), - browser_(browser) { - Build(); -} - -void EncodingMenuModel::Build() { - EncodingMenuController::EncodingMenuItemList encoding_menu_items; - EncodingMenuController encoding_menu_controller; - encoding_menu_controller.GetEncodingMenuItems(browser_->profile(), - &encoding_menu_items); - - int group_id = 0; - EncodingMenuController::EncodingMenuItemList::iterator it = - encoding_menu_items.begin(); - for (; it != encoding_menu_items.end(); ++it) { - int id = it->first; - string16& label = it->second; - if (id == 0) { - AddSeparator(); - } else { - if (id == IDC_ENCODING_AUTO_DETECT) { - AddCheckItem(id, label); - } else { - // Use the id of the first radio command as the id of the group. - if (group_id <= 0) - group_id = id; - AddRadioItem(id, label, group_id); - } - } - } -} - -bool EncodingMenuModel::IsCommandIdChecked(int command_id) const { - TabContents* current_tab = browser_->GetSelectedTabContents(); - EncodingMenuController controller; - return controller.IsItemChecked(browser_->profile(), - current_tab->encoding(), command_id); -} - -bool EncodingMenuModel::IsCommandIdEnabled(int command_id) const { - return browser_->command_updater()->IsCommandEnabled(command_id); -} - -bool EncodingMenuModel::GetAcceleratorForCommandId( - int command_id, - menus::Accelerator* accelerator) { - return false; -} - -void EncodingMenuModel::ExecuteCommand(int command_id) { - browser_->ExecuteCommand(command_id); -} - -//////////////////////////////////////////////////////////////////////////////// -// EncodingMenuModel - -ZoomMenuModel::ZoomMenuModel(menus::SimpleMenuModel::Delegate* delegate) - : SimpleMenuModel(delegate) { - Build(); -} - -void ZoomMenuModel::Build() { - AddItemWithStringId(IDC_ZOOM_PLUS, IDS_ZOOM_PLUS); - AddItemWithStringId(IDC_ZOOM_NORMAL, IDS_ZOOM_NORMAL); - AddItemWithStringId(IDC_ZOOM_MINUS, IDS_ZOOM_MINUS); -} - -//////////////////////////////////////////////////////////////////////////////// // ToolbarView, public: ToolbarView::ToolbarView(Browser* browser) @@ -835,7 +764,8 @@ void ToolbarView::LoadRightSideControlsImages() { } void ToolbarView::RunPageMenu(const gfx::Point& pt) { - CreatePageMenu(); + page_menu_model_.reset(new PageMenuModel(this, browser_)); + page_menu_menu_.reset(new views::Menu2(page_menu_model_.get())); page_menu_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); } @@ -844,63 +774,6 @@ void ToolbarView::RunAppMenu(const gfx::Point& pt) { app_menu_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); } -void ToolbarView::CreatePageMenu() { - if (page_menu_contents_.get()) - return; - - page_menu_contents_.reset(new menus::SimpleMenuModel(this)); - page_menu_contents_->AddItemWithStringId(IDC_CREATE_SHORTCUTS, - IDS_CREATE_SHORTCUTS); - page_menu_contents_->AddSeparator(); - page_menu_contents_->AddItemWithStringId(IDC_CUT, IDS_CUT); - page_menu_contents_->AddItemWithStringId(IDC_COPY, IDS_COPY); - page_menu_contents_->AddItemWithStringId(IDC_PASTE, IDS_PASTE); - page_menu_contents_->AddSeparator(); - page_menu_contents_->AddItemWithStringId(IDC_FIND, IDS_FIND); - page_menu_contents_->AddItemWithStringId(IDC_SAVE_PAGE, IDS_SAVE_PAGE); - page_menu_contents_->AddItemWithStringId(IDC_PRINT, IDS_PRINT); - page_menu_contents_->AddSeparator(); - - zoom_menu_contents_.reset(new ZoomMenuModel(this)); - page_menu_contents_->AddSubMenuWithStringId( - IDS_ZOOM_MENU, zoom_menu_contents_.get()); - - encoding_menu_contents_.reset(new EncodingMenuModel(browser_)); - page_menu_contents_->AddSubMenuWithStringId( - IDS_ENCODING_MENU, encoding_menu_contents_.get()); - -#if defined(OS_WIN) - CreateDevToolsMenuContents(); - page_menu_contents_->AddSeparator(); - page_menu_contents_->AddSubMenuWithStringId( - IDS_DEVELOPER_MENU, devtools_menu_contents_.get()); - - page_menu_contents_->AddSeparator(); - page_menu_contents_->AddItemWithStringId(IDC_REPORT_BUG, IDS_REPORT_BUG); -#else - NOTIMPLEMENTED(); -#endif - - page_menu_menu_.reset(new views::Menu2(page_menu_contents_.get())); -} - -#if defined(OS_WIN) -void ToolbarView::CreateDevToolsMenuContents() { - devtools_menu_contents_.reset(new menus::SimpleMenuModel(this)); - devtools_menu_contents_->AddItem(IDC_VIEW_SOURCE, - l10n_util::GetString(IDS_VIEW_SOURCE)); - if (g_browser_process->have_inspector_files()) { - devtools_menu_contents_->AddItem(IDC_DEV_TOOLS, - l10n_util::GetString(IDS_DEV_TOOLS)); - devtools_menu_contents_->AddItem( - IDC_DEV_TOOLS_CONSOLE, - l10n_util::GetString(IDS_DEV_TOOLS_CONSOLE)); - } - devtools_menu_contents_->AddItem(IDC_TASK_MANAGER, - l10n_util::GetString(IDS_TASK_MANAGER)); -} -#endif - void ToolbarView::CreateAppMenu() { // We always rebuild the app menu so that we can get the current state of // the sync system. diff --git a/chrome/browser/views/toolbar_view.h b/chrome/browser/views/toolbar_view.h index 6d1f1d0..5048fb1 100644 --- a/chrome/browser/views/toolbar_view.h +++ b/chrome/browser/views/toolbar_view.h @@ -12,6 +12,7 @@ #include "base/scoped_ptr.h" #include "chrome/browser/bubble_positioner.h" #include "chrome/browser/command_updater.h" +#include "chrome/browser/page_menu_model.h" #include "chrome/browser/user_data_manager.h" #include "chrome/browser/views/accessible_toolbar_view.h" #include "chrome/browser/views/go_button.h" @@ -32,39 +33,6 @@ namespace views { class Menu2; } -// A menu model that builds the contents of an encoding menu. -class EncodingMenuModel : public menus::SimpleMenuModel, - public menus::SimpleMenuModel::Delegate { - public: - explicit EncodingMenuModel(Browser* browser); - virtual ~EncodingMenuModel() {} - - // Overridden from menus::SimpleMenuModel::Delegate: - virtual bool IsCommandIdChecked(int command_id) const; - virtual bool IsCommandIdEnabled(int command_id) const; - virtual bool GetAcceleratorForCommandId(int command_id, - menus::Accelerator* accelerator); - virtual void ExecuteCommand(int command_id); - - private: - void Build(); - - Browser* browser_; - - DISALLOW_COPY_AND_ASSIGN(EncodingMenuModel); -}; - -class ZoomMenuModel : public menus::SimpleMenuModel { - public: - explicit ZoomMenuModel(menus::SimpleMenuModel::Delegate* delegate); - virtual ~ZoomMenuModel() {} - - private: - void Build(); - - DISALLOW_COPY_AND_ASSIGN(ZoomMenuModel); -}; - // The Browser Window's toolbar. class ToolbarView : public AccessibleToolbarView, public views::ViewMenuDelegate, @@ -175,12 +143,6 @@ class ToolbarView : public AccessibleToolbarView, void RunPageMenu(const gfx::Point& pt); void RunAppMenu(const gfx::Point& pt); - void CreatePageMenu(); - void CreateZoomMenuContents(); - void CreateEncodingMenuContents(); -#if defined(OS_WIN) - void CreateDevToolsMenuContents(); -#endif void CreateAppMenu(); // Types of display mode this toolbar can have. @@ -228,10 +190,7 @@ class ToolbarView : public AccessibleToolbarView, DisplayMode display_mode_; // The contents of the various menus. - scoped_ptr<menus::SimpleMenuModel> page_menu_contents_; - scoped_ptr<ZoomMenuModel> zoom_menu_contents_; - scoped_ptr<EncodingMenuModel> encoding_menu_contents_; - scoped_ptr<menus::SimpleMenuModel> devtools_menu_contents_; + scoped_ptr<PageMenuModel> page_menu_model_; scoped_ptr<menus::SimpleMenuModel> app_menu_contents_; // TODO(beng): build these into MenuButton. |