172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 24a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 34a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// found in the LICENSE file. 44a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_CONTEXT_MENU_H_ 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_CONTEXT_MENU_H_ 74a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#pragma once 84a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/views/bookmarks/bookmark_context_menu_controller_views.h" 104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "views/controls/menu/menu_delegate.h" 114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch// Observer for the BookmarkContextMenu. 134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BookmarkContextMenuObserver { 144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Invoked before the specified items are removed from the bookmark model. 164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void WillRemoveBookmarks( 174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const std::vector<const BookmarkNode*>& bookmarks) = 0; 184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Invoked after the items have been removed from the model. 204a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void DidRemoveBookmarks() = 0; 214a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 224a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch protected: 234a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~BookmarkContextMenuObserver() {} 244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 264a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass BookmarkContextMenu : public BookmarkContextMenuControllerViewsDelegate, 274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public views::MenuDelegate { 284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch public: 294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch BookmarkContextMenu( 304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch gfx::NativeWindow parent_window, 314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch Profile* profile, 324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch PageNavigator* page_navigator, 334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const BookmarkNode* parent, 344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const std::vector<const BookmarkNode*>& selection); 354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual ~BookmarkContextMenu(); 364a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 374a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Shows the context menu at the specified point. 384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void RunMenuAt(const gfx::Point& point); 394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch views::MenuItemView* menu() const { return menu_.get(); } 414a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 424a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void set_observer(BookmarkContextMenuObserver* observer) { 434a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch observer_ = observer; 444a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 464a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Overridden from views::MenuDelegate: 474a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void ExecuteCommand(int command_id); 484a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsItemChecked(int command_id) const; 494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool IsCommandEnabled(int command_id) const; 504a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual bool ShouldCloseAllMenusOnExecute(int id); 514a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // Overridden from BookmarkContextMenuControllerViewsDelegate: 534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void CloseMenu(); 544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void AddItemWithStringId(int command_id, int string_id); 554a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void AddSeparator(); 5621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen virtual void AddCheckboxItem(int command_id, int string_id); 574a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void WillRemoveBookmarks( 584a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch const std::vector<const BookmarkNode*>& bookmarks); 594a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual void DidRemoveBookmarks(); 604a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 614a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch private: 624a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch scoped_ptr<BookmarkContextMenuControllerViews> controller_; 634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 644a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The parent of dialog boxes opened from the context menu. 654a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch gfx::NativeWindow parent_window_; 664a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch // The menu itself. 684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch scoped_ptr<views::MenuItemView> menu_; 694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // The node we're showing the menu for. 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const BookmarkNode* parent_node_; 72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 734a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch BookmarkContextMenuObserver* observer_; 744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch DISALLOW_COPY_AND_ASSIGN(BookmarkContextMenu); 764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch}; 774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 78dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif // CHROME_BROWSER_UI_VIEWS_BOOKMARKS_BOOKMARK_CONTEXT_MENU_H_ 79