summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views
diff options
context:
space:
mode:
authorpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-09 19:56:30 +0000
committerpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-09 19:56:30 +0000
commit273865aa130f61f321d3eeafc0ea5a2a6dc9adf8 (patch)
tree05b9f5275ef0a0c63592f9b1102235aead02b59d /chrome/browser/views
parent12c7b1eaa34937a72c8b81de17fdb5c72d842431 (diff)
downloadchromium_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.cc131
-rw-r--r--chrome/browser/views/toolbar_view.h45
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.