Home | History | Annotate | Download | only in tabs
      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 
     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 
     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