extension_toolbar_menu_view.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CHROME_BROWSER_UI_VIEWS_TOOLBAR_EXTENSION_TOOLBAR_MENU_VIEW_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CHROME_BROWSER_UI_VIEWS_TOOLBAR_EXTENSION_TOOLBAR_MENU_VIEW_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/memory/weak_ptr.h"
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/scoped_observer.h"
105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/ui/views/toolbar/browser_actions_container_observer.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/views/view.h"
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Browser;
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass BrowserActionsContainer;
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class WrenchMenu;
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// ExtensionToolbarMenuView is the view containing the extension actions that
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// overflowed from the BrowserActionsContainer, and is contained in and owned by
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// the wrench menu.
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// In the event that the WrenchMenu was opened for an Extension Action drag-and-
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// drop, this will also close the menu upon completion.
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ExtensionToolbarMenuView : public views::View,
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                 public BrowserActionsContainerObserver {
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public:
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  ExtensionToolbarMenuView(Browser* browser, WrenchMenu* wrench_menu);
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual ~ExtensionToolbarMenuView();
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  // views::View:
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual gfx::Size GetPreferredSize() const OVERRIDE;
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  virtual void Layout() OVERRIDE;
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private:
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // BrowserActionsContainerObserver:
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void OnBrowserActionDragDone() OVERRIDE;
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // The associated browser.
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  Browser* browser_;
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // The WrenchMenu, which may need to be closed after a drag-and-drop.
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  WrenchMenu* wrench_menu_;
415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // The overflow BrowserActionsContainer which is nested in this view.
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  BrowserActionsContainer* container_;
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  ScopedObserver<BrowserActionsContainer, BrowserActionsContainerObserver>
465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      browser_actions_container_observer_;
475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(ExtensionToolbarMenuView);
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // CHROME_BROWSER_UI_VIEWS_TOOLBAR_EXTENSION_TOOLBAR_MENU_VIEW_H_
52