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 "chrome/common/chrome_switches.h" 11 #include "grit/generated_resources.h" 12 13 TabMenuModel::TabMenuModel(ui::SimpleMenuModel::Delegate* delegate, 14 TabStripModel* tab_strip, 15 int index) 16 : ui::SimpleMenuModel(delegate) { 17 Build(tab_strip, index); 18 } 19 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) { 31 AddItemWithStringId( 32 TabStripModel::CommandTogglePinned, 33 will_pin ? IDS_TAB_CXMENU_PIN_TABS : IDS_TAB_CXMENU_UNPIN_TABS); 34 } else { 35 AddItemWithStringId( 36 TabStripModel::CommandTogglePinned, 37 will_pin ? IDS_TAB_CXMENU_PIN_TAB : IDS_TAB_CXMENU_UNPIN_TAB); 38 } 39 AddSeparator(ui::NORMAL_SEPARATOR); 40 if (affects_multiple_tabs) { 41 AddItemWithStringId(TabStripModel::CommandCloseTab, 42 IDS_TAB_CXMENU_CLOSETABS); 43 } else { 44 AddItemWithStringId(TabStripModel::CommandCloseTab, 45 IDS_TAB_CXMENU_CLOSETAB); 46 } 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); 65 } 66 } 67