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#ifndef UI_VIEWS_CONTEXT_MENU_CONTROLLER_H_
6#define UI_VIEWS_CONTEXT_MENU_CONTROLLER_H_
7
8#include "ui/base/ui_base_types.h"
9#include "ui/views/views_export.h"
10
11namespace gfx {
12class Point;
13}
14
15namespace views {
16class View;
17
18// ContextMenuController is responsible for showing the context menu for a
19// View. To use a ContextMenuController invoke set_context_menu_controller on a
20// View. When the appropriate user gesture occurs ShowContextMenu is invoked
21// on the ContextMenuController.
22//
23// Setting a ContextMenuController on a view makes the view process mouse
24// events.
25//
26// It is up to subclasses that do their own mouse processing to invoke
27// the appropriate ContextMenuController method, typically by invoking super's
28// implementation for mouse processing.
29class VIEWS_EXPORT ContextMenuController {
30 public:
31  // Invoked to show the context menu for |source|.
32  // |point| is in screen coordinates.
33  virtual void ShowContextMenuForView(View* source,
34                                      const gfx::Point& point,
35                                      ui::MenuSourceType source_type) = 0;
36
37 protected:
38  virtual ~ContextMenuController() {}
39};
40
41}  // namespace views
42
43#endif  // UI_VIEWS_CONTEXT_MENU_CONTROLLER_H_
44