15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef UI_VIEWS_CONTROLS_MENU_MENU_CONTROLLER_DELEGATE_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UI_VIEWS_CONTROLS_MENU_MENU_CONTROLLER_DELEGATE_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views {
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MenuItemView;
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This is internal as there should be no need for usage of this class outside
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// of views.
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace internal {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Used by MenuController to notify of interesting events that are intended for
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the class using MenuController. This is implemented by MenuRunnerImpl.
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MenuControllerDelegate {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum NotifyType {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    NOTIFY_DELEGATE,
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    DONT_NOTIFY_DELEGATE
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Invoked when MenuController closes a menu and the MenuController was
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // configured for drop (MenuRunner::FOR_DROP).
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void DropMenuClosed(NotifyType type, MenuItemView* menu) = 0;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Invoked when the MenuDelegate::GetSiblingMenu() returns non-NULL.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SiblingMenuCreated(MenuItemView* menu) = 0;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MenuControllerDelegate() {}
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace internal
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace view
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // UI_VIEWS_CONTROLS_MENU_MENU_CONTROLLER_DELEGATE_H_
41