1 // Copyright (c) 2012 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.
5 #include "chrome/browser/ui/tabs/tab_menu_model.h"
7 #include "base/command_line.h"
8 #include "chrome/browser/ui/tabs/tab_strip_model.h"
9 #include "chrome/browser/ui/tabs/tab_strip_model_delegate.h"
10 #include "chrome/common/chrome_switches.h"
11 #include "grit/generated_resources.h"
13 TabMenuModel::TabMenuModel(ui::SimpleMenuModel::Delegate
* delegate
,
14 TabStripModel
* tab_strip
,
16 : ui::SimpleMenuModel(delegate
) {
17 Build(tab_strip
, index
);
20 void TabMenuModel::Build(TabStripModel
* tab_strip
, int index
) {
21 bool affects_multiple_tabs
=
22 (tab_strip
->IsTabSelected(index
) &&
23 tab_strip
->selection_model().selected_indices().size() > 1);
24 AddItemWithStringId(TabStripModel::CommandNewTab
, IDS_TAB_CXMENU_NEWTAB
);
25 AddSeparator(ui::NORMAL_SEPARATOR
);
26 AddItemWithStringId(TabStripModel::CommandReload
, IDS_TAB_CXMENU_RELOAD
);
27 AddItemWithStringId(TabStripModel::CommandDuplicate
,
28 IDS_TAB_CXMENU_DUPLICATE
);
29 bool will_pin
= tab_strip
->WillContextMenuPin(index
);
30 if (affects_multiple_tabs
) {
32 TabStripModel::CommandTogglePinned
,
33 will_pin
? IDS_TAB_CXMENU_PIN_TABS
: IDS_TAB_CXMENU_UNPIN_TABS
);
36 TabStripModel::CommandTogglePinned
,
37 will_pin
? IDS_TAB_CXMENU_PIN_TAB
: IDS_TAB_CXMENU_UNPIN_TAB
);
39 AddSeparator(ui::NORMAL_SEPARATOR
);
40 if (affects_multiple_tabs
) {
41 AddItemWithStringId(TabStripModel::CommandCloseTab
,
42 IDS_TAB_CXMENU_CLOSETABS
);
44 AddItemWithStringId(TabStripModel::CommandCloseTab
,
45 IDS_TAB_CXMENU_CLOSETAB
);
47 AddItemWithStringId(TabStripModel::CommandCloseOtherTabs
,
48 IDS_TAB_CXMENU_CLOSEOTHERTABS
);
49 AddItemWithStringId(TabStripModel::CommandCloseTabsToRight
,
50 IDS_TAB_CXMENU_CLOSETABSTORIGHT
);
51 AddSeparator(ui::NORMAL_SEPARATOR
);
52 const bool is_window
= tab_strip
->delegate()->GetRestoreTabType() ==
53 TabStripModelDelegate::RESTORE_WINDOW
;
54 AddItemWithStringId(TabStripModel::CommandRestoreTab
,
55 is_window
? IDS_RESTORE_WINDOW
: IDS_RESTORE_TAB
);
56 AddItemWithStringId(TabStripModel::CommandBookmarkAllTabs
,
57 IDS_TAB_CXMENU_BOOKMARK_ALL_TABS
);
58 if (CommandLine::ForCurrentProcess()->HasSwitch(
59 switches::kEnableTabGroupsContextMenu
)) {
60 AddSeparator(ui::NORMAL_SEPARATOR
);
61 AddItemWithStringId(TabStripModel::CommandSelectByDomain
,
62 IDS_TAB_CXMENU_SELECT_BY_DOMAIN
);
63 AddItemWithStringId(TabStripModel::CommandSelectByOpener
,
64 IDS_TAB_CXMENU_SELECT_BY_OPENER
);