// 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_CHROMEOS_WEBUI_MENU_CONTROL_H_ #define CHROME_BROWSER_CHROMEOS_WEBUI_MENU_CONTROL_H_ #pragma once namespace gfx { class Size; } // namespace gfx namespace ui { class MenuModel; } // namespace ui namespace chromeos { // WebUIMenuControl class is used to control the UI counterpart of // a MenuModel. One instance of WebUIMenuControl is created for each // MenuModel instance, that is, a submenu will have its own // WebUIMenuControl. class WebUIMenuControl { public: enum ActivationMode { ACTIVATE_NO_CLOSE, // Activate the command without closing menu. CLOSE_AND_ACTIVATE, // Close the menu and then activate the command. }; virtual ~WebUIMenuControl() {} // Returns the MenuModel associated with this control. virtual ui::MenuModel* GetMenuModel() = 0; // Activates an item in the |model| at |index|. virtual void Activate(ui::MenuModel* model, int index, ActivationMode activation_mode) = 0; // Close All menu window from root menu to leaf submenus. virtual void CloseAll() = 0; // Close the submenu (and all decendant submenus). virtual void CloseSubmenu() = 0; // Move the input to parent. Used in keyboard navigation. virtual void MoveInputToParent() = 0; // Move the input to submenu. Used in keyboard navigation. virtual void MoveInputToSubmenu() = 0; // Called when the menu page is loaded. This is used to call // initialize function in JavaScript. virtual void OnLoad() = 0; // Open submenu using the submenu model at index in the model. // The top coordinate of the selected menu is passed as |y_top| // so that the submenu can be aligned to the selected item. virtual void OpenSubmenu(int index, int y_top) =0; // Sets the size of the menu. virtual void SetSize(const gfx::Size& size) = 0; }; } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_WEBUI_MENU_CONTROL_H_