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 "grit/generated_resources.h"
12 TabMenuModel::TabMenuModel(ui::SimpleMenuModel::Delegate
* delegate
,
13 TabStripModel
* tab_strip
,
15 : ui::SimpleMenuModel(delegate
) {
16 Build(tab_strip
, index
);
19 void TabMenuModel::Build(TabStripModel
* tab_strip
, int index
) {
20 bool affects_multiple_tabs
=
21 (tab_strip
->IsTabSelected(index
) &&
22 tab_strip
->selection_model().selected_indices().size() > 1);
23 AddItemWithStringId(TabStripModel::CommandNewTab
, IDS_TAB_CXMENU_NEWTAB
);
24 AddSeparator(ui::NORMAL_SEPARATOR
);
25 AddItemWithStringId(TabStripModel::CommandReload
, IDS_TAB_CXMENU_RELOAD
);
26 AddItemWithStringId(TabStripModel::CommandDuplicate
,
27 IDS_TAB_CXMENU_DUPLICATE
);
28 bool will_pin
= tab_strip
->WillContextMenuPin(index
);
29 if (affects_multiple_tabs
) {
31 TabStripModel::CommandTogglePinned
,
32 will_pin
? IDS_TAB_CXMENU_PIN_TABS
: IDS_TAB_CXMENU_UNPIN_TABS
);
35 TabStripModel::CommandTogglePinned
,
36 will_pin
? IDS_TAB_CXMENU_PIN_TAB
: IDS_TAB_CXMENU_UNPIN_TAB
);
38 AddSeparator(ui::NORMAL_SEPARATOR
);
39 if (affects_multiple_tabs
) {
40 AddItemWithStringId(TabStripModel::CommandCloseTab
,
41 IDS_TAB_CXMENU_CLOSETABS
);
43 AddItemWithStringId(TabStripModel::CommandCloseTab
,
44 IDS_TAB_CXMENU_CLOSETAB
);
46 AddItemWithStringId(TabStripModel::CommandCloseOtherTabs
,
47 IDS_TAB_CXMENU_CLOSEOTHERTABS
);
48 AddItemWithStringId(TabStripModel::CommandCloseTabsToRight
,
49 IDS_TAB_CXMENU_CLOSETABSTORIGHT
);
50 AddSeparator(ui::NORMAL_SEPARATOR
);
51 const bool is_window
= tab_strip
->delegate()->GetRestoreTabType() ==
52 TabStripModelDelegate::RESTORE_WINDOW
;
53 AddItemWithStringId(TabStripModel::CommandRestoreTab
,
54 is_window
? IDS_RESTORE_WINDOW
: IDS_RESTORE_TAB
);
55 AddItemWithStringId(TabStripModel::CommandBookmarkAllTabs
,
56 IDS_TAB_CXMENU_BOOKMARK_ALL_TABS
);