1// Copyright 2013 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_APP_LIST_VIEWS_APP_LIST_MENU_VIEWS_H_
6#define UI_APP_LIST_VIEWS_APP_LIST_MENU_VIEWS_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "ui/app_list/app_list_menu.h"
10#include "ui/views/controls/menu/menu_model_adapter.h"
11#include "ui/views/controls/menu/menu_runner.h"
12
13namespace gfx {
14class Point;
15}
16
17namespace views {
18class MenuButton;
19}
20
21namespace app_list {
22
23// Views implementation of the app list menu.
24// TODO(benwells): We should consider moving this into Chrome.
25class AppListMenuViews : public app_list::AppListMenu {
26 public:
27  explicit AppListMenuViews(AppListViewDelegate* delegate);
28  virtual ~AppListMenuViews();
29
30  void RunMenuAt(views::MenuButton* button, const gfx::Point& point);
31  void Cancel();
32
33 private:
34  // The context menu itself and its contents.
35  scoped_ptr<views::MenuModelAdapter> menu_delegate_;
36  views::MenuItemView* menu_;  // Owned by menu_runner_.
37  scoped_ptr<views::MenuRunner> menu_runner_;
38
39  DISALLOW_COPY_AND_ASSIGN(AppListMenuViews);
40};
41
42}  // namespace app_list
43
44#endif  // UI_APP_LIST_VIEWS_APP_LIST_MENU_VIEWS_H_
45