1// Copyright (c) 2011 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/toolbar/bookmark_sub_menu_model.h"
6
7#include "chrome/app/chrome_command_ids.h"
8#include "chrome/grit/generated_resources.h"
9
10// For views and cocoa, we have complex delegate systems to handle
11// injecting the bookmarks to the bookmark submenu. This is done to support
12// advanced interactions with the menu contents, like right click context menus.
13// For the time being on GTK systems, we have a dedicated bookmark menu model in
14// chrome/browser/ui/gtk/bookmarks/bookmark_sub_menu_model_gtk.cc instead.
15
16// Note that although this file's header is included on GTK systems, this
17// source file is not compiled there. (The header just includes the GTK one.)
18
19BookmarkSubMenuModel::BookmarkSubMenuModel(
20    ui::SimpleMenuModel::Delegate* delegate, Browser* browser)
21    : SimpleMenuModel(delegate) {
22  Build(browser);
23}
24
25BookmarkSubMenuModel::~BookmarkSubMenuModel() {}
26
27void BookmarkSubMenuModel::Build(Browser* browser) {
28  AddCheckItemWithStringId(IDC_SHOW_BOOKMARK_BAR, IDS_SHOW_BOOKMARK_BAR);
29  AddItemWithStringId(IDC_SHOW_BOOKMARK_MANAGER, IDS_BOOKMARK_MANAGER);
30#if !defined(OS_CHROMEOS)
31  AddItemWithStringId(IDC_IMPORT_SETTINGS, IDS_IMPORT_SETTINGS_MENU_LABEL);
32#endif
33  if (delegate()->IsCommandIdVisible(IDC_BOOKMARK_PAGE) ||
34      delegate()->IsCommandIdVisible(IDC_BOOKMARK_ALL_TABS) ||
35      delegate()->IsCommandIdVisible(IDC_PIN_TO_START_SCREEN)) {
36    AddSeparator(ui::NORMAL_SEPARATOR);
37
38    AddItemWithStringId(IDC_BOOKMARK_PAGE, IDS_BOOKMARK_THIS_PAGE);
39    AddItemWithStringId(IDC_BOOKMARK_ALL_TABS, IDS_BOOKMARK_OPEN_PAGES);
40
41    AddItemWithStringId(IDC_PIN_TO_START_SCREEN, IDS_PIN_TO_START_SCREEN);
42  }
43#if defined(OS_MACOSX)
44  AddSeparator(ui::NORMAL_SEPARATOR);
45#endif
46}
47