• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #include "chrome/browser/ui/tabs/tab_menu_model.h"
6 
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"
11 
TabMenuModel(ui::SimpleMenuModel::Delegate * delegate,TabStripModel * tab_strip,int index)12 TabMenuModel::TabMenuModel(ui::SimpleMenuModel::Delegate* delegate,
13                            TabStripModel* tab_strip,
14                            int index)
15     : ui::SimpleMenuModel(delegate) {
16   Build(tab_strip, index);
17 }
18 
Build(TabStripModel * tab_strip,int 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) {
30     AddItemWithStringId(
31         TabStripModel::CommandTogglePinned,
32         will_pin ? IDS_TAB_CXMENU_PIN_TABS : IDS_TAB_CXMENU_UNPIN_TABS);
33   } else {
34     AddItemWithStringId(
35         TabStripModel::CommandTogglePinned,
36         will_pin ? IDS_TAB_CXMENU_PIN_TAB : IDS_TAB_CXMENU_UNPIN_TAB);
37   }
38   AddSeparator(ui::NORMAL_SEPARATOR);
39   if (affects_multiple_tabs) {
40     AddItemWithStringId(TabStripModel::CommandCloseTab,
41                         IDS_TAB_CXMENU_CLOSETABS);
42   } else {
43     AddItemWithStringId(TabStripModel::CommandCloseTab,
44                         IDS_TAB_CXMENU_CLOSETAB);
45   }
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);
57 }
58