summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/tabs/tab_gtk.cc
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-14 23:58:08 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-14 23:58:08 +0000
commit841b5d18b22145d0127cf72123b54c91a76fd64f (patch)
tree8712b530fa7349585a34a4bb58285cff6766cb2f /chrome/browser/gtk/tabs/tab_gtk.cc
parent8ab9ba5454bbd0bf079c1af4e3c8a5f30d058e0c (diff)
downloadchromium_src-841b5d18b22145d0127cf72123b54c91a76fd64f.zip
chromium_src-841b5d18b22145d0127cf72123b54c91a76fd64f.tar.gz
chromium_src-841b5d18b22145d0127cf72123b54c91a76fd64f.tar.bz2
Simplify TabGtk::ContextMenuController by adding methods to dynamically build a MenuGtk and use them.
Review URL: http://codereview.chromium.org/68013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13722 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/tabs/tab_gtk.cc')
-rw-r--r--chrome/browser/gtk/tabs/tab_gtk.cc91
1 files changed, 31 insertions, 60 deletions
diff --git a/chrome/browser/gtk/tabs/tab_gtk.cc b/chrome/browser/gtk/tabs/tab_gtk.cc
index 02100e1..3a72bf3 100644
--- a/chrome/browser/gtk/tabs/tab_gtk.cc
+++ b/chrome/browser/gtk/tabs/tab_gtk.cc
@@ -18,7 +18,33 @@ class TabGtk::ContextMenuController : public MenuGtk::Delegate {
public:
explicit ContextMenuController(TabGtk* tab)
: tab_(tab) {
- menu_.reset(new MenuGtk(this));
+ menu_.reset(new MenuGtk(this, false));
+ menu_->AppendMenuItemWithLabel(
+ TabStripModel::CommandNewTab,
+ l10n_util::GetStringUTF8(IDS_TAB_CXMENU_NEWTAB));
+ menu_->AppendSeparator();
+ menu_->AppendMenuItemWithLabel(
+ TabStripModel::CommandReload,
+ l10n_util::GetStringUTF8(IDS_TAB_CXMENU_RELOAD));
+ menu_->AppendMenuItemWithLabel(
+ TabStripModel::CommandDuplicate,
+ l10n_util::GetStringUTF8(IDS_TAB_CXMENU_DUPLICATE));
+ menu_->AppendSeparator();
+ menu_->AppendMenuItemWithLabel(
+ TabStripModel::CommandCloseTab,
+ l10n_util::GetStringUTF8(IDS_TAB_CXMENU_CLOSETAB));
+ menu_->AppendMenuItemWithLabel(
+ TabStripModel::CommandCloseOtherTabs,
+ l10n_util::GetStringUTF8(IDS_TAB_CXMENU_CLOSEOTHERTABS));
+ menu_->AppendMenuItemWithLabel(
+ TabStripModel::CommandCloseTabsToRight,
+ l10n_util::GetStringUTF8(IDS_TAB_CXMENU_CLOSETABSTORIGHT));
+ menu_->AppendMenuItemWithLabel(
+ TabStripModel::CommandCloseTabsOpenedBy,
+ l10n_util::GetStringUTF8(IDS_TAB_CXMENU_CLOSETABSOPENEDBY));
+ menu_->AppendMenuItemWithLabel(
+ TabStripModel::CommandRestoreTab,
+ l10n_util::GetStringUTF8(IDS_RESTORE_TAB));
}
virtual ~ContextMenuController() {}
@@ -34,76 +60,21 @@ class TabGtk::ContextMenuController : public MenuGtk::Delegate {
private:
- // Converts the gtk command id to the tab command id. Gtk includes the
- // menu separators, but TabStripModel::ContextMenuCommand does not, so
- // readjust the id to take into account separators.
- // TODO(jhawkins): Add AppendMenuItemWithLabel and AppendSeparator methods
- // to MenuGtk so we can avoid this hacky conversion.
- int gtk_command_to_tab_command(int command_id) const {
- if (command_id == 1)
- return command_id;
- else if (command_id < 5)
- return command_id - 1;
- else
- return command_id - 2;
- }
-
// MenuGtk::Delegate implementation:
virtual bool IsCommandEnabled(int command_id) const {
if (!tab_)
return false;
- TabStripModel::ContextMenuCommand id;
- id = static_cast<TabStripModel::ContextMenuCommand>(
- gtk_command_to_tab_command(command_id));
-
- return tab_->delegate()->IsCommandEnabledForTab(id, tab_);
+ return tab_->delegate()->IsCommandEnabledForTab(
+ static_cast<TabStripModel::ContextMenuCommand>(command_id), tab_);
}
virtual void ExecuteCommand(int command_id) {
if (!tab_)
return;
- TabStripModel::ContextMenuCommand id;
- id = static_cast<TabStripModel::ContextMenuCommand>(
- gtk_command_to_tab_command(command_id));
-
- tab_->delegate()->ExecuteCommandForTab(id, tab_);
- }
-
- virtual int GetItemCount() const {
- return TabStripModel::CommandLast;
- }
-
- virtual bool IsItemSeparator(int command_id) const {
- if (command_id == 2 || command_id == 5)
- return true;
-
- return false;
- }
-
- virtual std::string GetLabel(int command_id) const {
- switch (command_id) {
- case 1:
- return WideToUTF8(l10n_util::GetString(IDS_TAB_CXMENU_NEWTAB));
- case 3:
- return WideToUTF8(l10n_util::GetString(IDS_TAB_CXMENU_RELOAD));
- case 4:
- return WideToUTF8(l10n_util::GetString(IDS_TAB_CXMENU_DUPLICATE));
- case 6:
- return WideToUTF8(l10n_util::GetString(IDS_TAB_CXMENU_CLOSETAB));
- case 7:
- return WideToUTF8(l10n_util::GetString(IDS_TAB_CXMENU_CLOSEOTHERTABS));
- case 8:
- return WideToUTF8(l10n_util::GetString(
- IDS_TAB_CXMENU_CLOSETABSTORIGHT));
- case 9:
- return WideToUTF8(l10n_util::GetString(
- IDS_TAB_CXMENU_CLOSETABSOPENEDBY));
- default:
- NOTREACHED();
- return std::string();
- }
+ tab_->delegate()->ExecuteCommandForTab(
+ static_cast<TabStripModel::ContextMenuCommand>(command_id), tab_);
}
// The context menu.