| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/ui/tabs/tab_menu_model.h" |
| |
| #include "base/command_line.h" |
| #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| #include "chrome/browser/ui/tabs/tab_strip_model_delegate.h" |
| #include "chrome/common/chrome_switches.h" |
| #include "grit/generated_resources.h" |
| |
| TabMenuModel::TabMenuModel(ui::SimpleMenuModel::Delegate* delegate, |
| TabStripModel* tab_strip, |
| int index) |
| : ui::SimpleMenuModel(delegate) { |
| Build(tab_strip, index); |
| } |
| |
| void TabMenuModel::Build(TabStripModel* tab_strip, int index) { |
| bool affects_multiple_tabs = |
| (tab_strip->IsTabSelected(index) && |
| tab_strip->selection_model().selected_indices().size() > 1); |
| AddItemWithStringId(TabStripModel::CommandNewTab, IDS_TAB_CXMENU_NEWTAB); |
| AddSeparator(ui::NORMAL_SEPARATOR); |
| AddItemWithStringId(TabStripModel::CommandReload, IDS_TAB_CXMENU_RELOAD); |
| AddItemWithStringId(TabStripModel::CommandDuplicate, |
| IDS_TAB_CXMENU_DUPLICATE); |
| bool will_pin = tab_strip->WillContextMenuPin(index); |
| if (affects_multiple_tabs) { |
| AddItemWithStringId( |
| TabStripModel::CommandTogglePinned, |
| will_pin ? IDS_TAB_CXMENU_PIN_TABS : IDS_TAB_CXMENU_UNPIN_TABS); |
| } else { |
| AddItemWithStringId( |
| TabStripModel::CommandTogglePinned, |
| will_pin ? IDS_TAB_CXMENU_PIN_TAB : IDS_TAB_CXMENU_UNPIN_TAB); |
| } |
| AddSeparator(ui::NORMAL_SEPARATOR); |
| if (affects_multiple_tabs) { |
| AddItemWithStringId(TabStripModel::CommandCloseTab, |
| IDS_TAB_CXMENU_CLOSETABS); |
| } else { |
| AddItemWithStringId(TabStripModel::CommandCloseTab, |
| IDS_TAB_CXMENU_CLOSETAB); |
| } |
| AddItemWithStringId(TabStripModel::CommandCloseOtherTabs, |
| IDS_TAB_CXMENU_CLOSEOTHERTABS); |
| AddItemWithStringId(TabStripModel::CommandCloseTabsToRight, |
| IDS_TAB_CXMENU_CLOSETABSTORIGHT); |
| AddSeparator(ui::NORMAL_SEPARATOR); |
| const bool is_window = tab_strip->delegate()->GetRestoreTabType() == |
| TabStripModelDelegate::RESTORE_WINDOW; |
| AddItemWithStringId(TabStripModel::CommandRestoreTab, |
| is_window ? IDS_RESTORE_WINDOW : IDS_RESTORE_TAB); |
| AddItemWithStringId(TabStripModel::CommandBookmarkAllTabs, |
| IDS_TAB_CXMENU_BOOKMARK_ALL_TABS); |
| if (CommandLine::ForCurrentProcess()->HasSwitch( |
| switches::kEnableTabGroupsContextMenu)) { |
| AddSeparator(ui::NORMAL_SEPARATOR); |
| AddItemWithStringId(TabStripModel::CommandSelectByDomain, |
| IDS_TAB_CXMENU_SELECT_BY_DOMAIN); |
| AddItemWithStringId(TabStripModel::CommandSelectByOpener, |
| IDS_TAB_CXMENU_SELECT_BY_OPENER); |
| } |
| } |