| Index: chrome/browser/tab_contents/render_view_context_menu_observer.h
|
| ===================================================================
|
| --- chrome/browser/tab_contents/render_view_context_menu_observer.h (revision 0)
|
| +++ chrome/browser/tab_contents/render_view_context_menu_observer.h (revision 0)
|
| @@ -0,0 +1,102 @@
|
| +// Copyright (c) 2011 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.
|
| +
|
| +#ifndef CHROME_BROWSER_TAB_CONTENTS_RENDER_VIEW_CONTEXT_MENU_OBSERVER_H_
|
| +#define CHROME_BROWSER_TAB_CONTENTS_RENDER_VIEW_CONTEXT_MENU_OBSERVER_H_
|
| +#pragma once
|
| +
|
| +struct ContextMenuParams;
|
| +
|
| +// The interface used for implementing context-menu items. The following
|
| +// instruction describe how to implement a context-menu item with this
|
| +// interface.
|
| +//
|
| +// 1. Add command IDs for the context-menu items to 'chrome_command_ids.h'.
|
| +//
|
| +// #define IDC_MY_COMMAND 99999
|
| +//
|
| +// 2. Add strings for the context-menu items to 'generated_sources.grd'.
|
| +//
|
| +// <message name="IDS_MY_COMMAND" desc="...">
|
| +// My command
|
| +// </message>
|
| +//
|
| +// 3. Create a class that implements this interface. (It is a good idea to use
|
| +// the RenderViewContextMenuDelegate interface to avoid accessing the
|
| +// RenderViewContextMenu class directly.)
|
| +//
|
| +// class MyMenuObserver : public RenderViewContextMenuObserver {
|
| +// public:
|
| +// MyMenuObserver(RenderViewContextMenuDelegate* d);
|
| +// ~MyMenuObserver();
|
| +//
|
| +// virtual void InitMenu(const ContextMenuParams& params) OVERRIDE;
|
| +// virtual bool IsCommandIdSupported(int command_id) OVERRIDE;
|
| +// virtual bool IsCommandIdEnabled(int command_id) OVERRIDE;
|
| +// virtual void ExecuteCommand(int command_id) OVERRIDE;
|
| +//
|
| +// private:
|
| +// RenderViewContextMenuDelgate* delegate_;
|
| +// }
|
| +//
|
| +// void MyMenuObserver::InitMenu(const ContextMenuParams& params) {
|
| +// delegate_->AddMenuItem(IDC_MY_COMMAND,...);
|
| +// }
|
| +//
|
| +// bool MyMenuObserver::IsCommandIdSupported(int command_id) {
|
| +// return command_id == IDC_MY_COMMAND;
|
| +// }
|
| +//
|
| +// bool MyMenuObserver::IsCommandIdEnabled(int command_id) {
|
| +// DCHECK(command_id == IDC_MY_COMMAND);
|
| +// return true;
|
| +// }
|
| +//
|
| +// void MyMenuObserver::ExecuteCommand(int command_id) {
|
| +// DCHECK(command_id == IDC_MY_COMMAND);
|
| +// }
|
| +//
|
| +// 4. Add this observer class to the RenderViewContextMenu class. (It is good
|
| +// to use scoped_ptr<> so Chrome can create its instances only when it needs.)
|
| +//
|
| +// class RenderViewContextMenu {
|
| +// ...
|
| +// private:
|
| +// scoped_ptr<MyMenuObserver> my_menu_observer_;
|
| +// };
|
| +//
|
| +// 5. Create its instance in InitMenu() and add it to the observer list of the
|
| +// RenderViewContextMenu class.
|
| +//
|
| +// void RenderViewContextMenu::InitMenu() {
|
| +// ...
|
| +// my_menu_observer_.reset(new MyMenuObserver(this));
|
| +// observers_.AddObserver(my_menu_observer_.get());
|
| +// }
|
| +//
|
| +//
|
| +class RenderViewContextMenuObserver {
|
| + public:
|
| + virtual ~RenderViewContextMenuObserver() {}
|
| +
|
| + // Called when the RenderViewContextMenu class initializes a context menu. We
|
| + // usually call RenderViewContextMenuDelegate::AddMenuItem() to add menu items
|
| + // in this function.
|
| + virtual void InitMenu(const ContextMenuParams& params);
|
| +
|
| + // Called when the RenderViewContextMenu class asks whether an observer
|
| + // listens for the specified command ID. If this function returns true, the
|
| + // RenderViewContextMenu class calls IsCommandIdEnabled() or ExecuteCommand().
|
| + virtual bool IsCommandIdSupported(int command_id);
|
| +
|
| + // Called when the RenderViewContextMenu class sets the initial status of the
|
| + // specified context-menu item. If we need to enable or disable a context-menu
|
| + // item while showing, use RenderViewContextMenuDelegate::UpdateMenuItem().
|
| + virtual bool IsCommandIdEnabled(int command_id);
|
| +
|
| + // Called when a user selects the specified context-menu item.
|
| + virtual void ExecuteCommand(int command_id);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_TAB_CONTENTS_RENDER_VIEW_CONTEXT_MENU_OBSERVER_H_
|
|
|
| Property changes on: chrome\browser\tab_contents\render_view_context_menu_observer.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|