| // 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_ |