• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_CONTEXT_MENU_H_
6 #define CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_CONTEXT_MENU_H_
7 #pragma once
8 
9 #include "chrome/browser/ui/views/bookmarks/bookmark_context_menu_controller_views.h"
10 #include "views/controls/menu/menu_delegate.h"
11 
12 // Observer for the BookmarkContextMenu.
13 class BookmarkContextMenuObserver {
14  public:
15   // Invoked before the specified items are removed from the bookmark model.
16   virtual void WillRemoveBookmarks(
17       const std::vector<const BookmarkNode*>& bookmarks) = 0;
18 
19   // Invoked after the items have been removed from the model.
20   virtual void DidRemoveBookmarks() = 0;
21 
22  protected:
~BookmarkContextMenuObserver()23   virtual ~BookmarkContextMenuObserver() {}
24 };
25 
26 class BookmarkContextMenu : public BookmarkContextMenuControllerViewsDelegate,
27                             public views::MenuDelegate {
28  public:
29   BookmarkContextMenu(
30       gfx::NativeWindow parent_window,
31       Profile* profile,
32       PageNavigator* page_navigator,
33       const BookmarkNode* parent,
34       const std::vector<const BookmarkNode*>& selection);
35   virtual ~BookmarkContextMenu();
36 
37   // Shows the context menu at the specified point.
38   void RunMenuAt(const gfx::Point& point);
39 
menu()40   views::MenuItemView* menu() const { return menu_.get(); }
41 
set_observer(BookmarkContextMenuObserver * observer)42   void set_observer(BookmarkContextMenuObserver* observer) {
43     observer_ = observer;
44   }
45 
46   // Overridden from views::MenuDelegate:
47   virtual void ExecuteCommand(int command_id);
48   virtual bool IsItemChecked(int command_id) const;
49   virtual bool IsCommandEnabled(int command_id) const;
50   virtual bool ShouldCloseAllMenusOnExecute(int id);
51 
52   // Overridden from BookmarkContextMenuControllerViewsDelegate:
53   virtual void CloseMenu();
54   virtual void AddItemWithStringId(int command_id, int string_id);
55   virtual void AddSeparator();
56   virtual void AddCheckboxItem(int command_id, int string_id);
57   virtual void WillRemoveBookmarks(
58       const std::vector<const BookmarkNode*>& bookmarks);
59   virtual void DidRemoveBookmarks();
60 
61  private:
62   scoped_ptr<BookmarkContextMenuControllerViews> controller_;
63 
64   // The parent of dialog boxes opened from the context menu.
65   gfx::NativeWindow parent_window_;
66 
67   // The menu itself.
68   scoped_ptr<views::MenuItemView> menu_;
69 
70   // The node we're showing the menu for.
71   const BookmarkNode* parent_node_;
72 
73   BookmarkContextMenuObserver* observer_;
74 
75   DISALLOW_COPY_AND_ASSIGN(BookmarkContextMenu);
76 };
77 
78 #endif  // CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_CONTEXT_MENU_H_
79