Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef VIEWS_CONTROLS_MENU_MENU_ITEM_VIEW_H_ | 5 #ifndef VIEWS_CONTROLS_MENU_MENU_ITEM_VIEW_H_ |
| 6 #define VIEWS_CONTROLS_MENU_MENU_ITEM_VIEW_H_ | 6 #define VIEWS_CONTROLS_MENU_MENU_ITEM_VIEW_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | |
| 10 | 11 |
| 11 #if defined(OS_WIN) | 12 #if defined(OS_WIN) |
| 12 #include <windows.h> | 13 #include <windows.h> |
| 13 #endif | 14 #endif |
| 14 | 15 |
| 15 // TODO(avi): remove when not needed | 16 // TODO(avi): remove when not needed |
| 16 #include "base/utf_string_conversions.h" | 17 #include "base/utf_string_conversions.h" |
| 17 #include "third_party/skia/include/core/SkBitmap.h" | 18 #include "third_party/skia/include/core/SkBitmap.h" |
| 18 #include "views/view.h" | 19 #include "views/view.h" |
| 19 | 20 |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 120 const gfx::Rect& bounds, | 121 const gfx::Rect& bounds, |
| 121 AnchorPosition anchor, | 122 AnchorPosition anchor, |
| 122 bool has_mnemonics); | 123 bool has_mnemonics); |
| 123 void RunMenuForDropAt(gfx::NativeWindow parent, | 124 void RunMenuForDropAt(gfx::NativeWindow parent, |
| 124 const gfx::Rect& bounds, | 125 const gfx::Rect& bounds, |
| 125 AnchorPosition anchor); | 126 AnchorPosition anchor); |
| 126 | 127 |
| 127 // Hides and cancels the menu. This does nothing if the menu is not open. | 128 // Hides and cancels the menu. This does nothing if the menu is not open. |
| 128 void Cancel(); | 129 void Cancel(); |
| 129 | 130 |
| 130 // Adds an item to this menu. | 131 // Add an item to the menu at a specified index. |
| 132 MenuItemView* AddMenuItemAt(int index, | |
| 133 int item_id, | |
| 134 const std::wstring& label, | |
| 135 const SkBitmap& icon, | |
| 136 Type type); | |
| 137 | |
| 138 // Remove an item from the menu at a specified index. Either | |
| 139 // ChildrenChanged() or DeleteRemovedItems() should be called after | |
|
sky
2011/05/06 16:17:00
DeleteRemovedItems isn't public, so folks have to
| |
| 140 // removing menu items. | |
| 141 void RemoveMenuItemAt(int index); | |
| 142 | |
| 143 // Appends an item to this menu. | |
| 131 // item_id The id of the item, used to identify it in delegate callbacks | 144 // item_id The id of the item, used to identify it in delegate callbacks |
| 132 // or (if delegate is NULL) to identify the command associated | 145 // or (if delegate is NULL) to identify the command associated |
| 133 // with this item with the controller specified in the ctor. Note | 146 // with this item with the controller specified in the ctor. Note |
| 134 // that this value should not be 0 as this has a special meaning | 147 // that this value should not be 0 as this has a special meaning |
| 135 // ("NULL command, no item selected") | 148 // ("NULL command, no item selected") |
| 136 // label The text label shown. | 149 // label The text label shown. |
| 137 // type The type of item. | 150 // type The type of item. |
| 138 void AppendMenuItem(int item_id, | 151 void AppendMenuItem(int item_id, |
| 139 const std::wstring& label, | 152 const std::wstring& label, |
| 140 Type type) { | 153 Type type) { |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 354 // Returns the various margins. | 367 // Returns the various margins. |
| 355 int GetTopMargin(); | 368 int GetTopMargin(); |
| 356 int GetBottomMargin(); | 369 int GetBottomMargin(); |
| 357 | 370 |
| 358 // Returns the preferred width (and padding) of any children. | 371 // Returns the preferred width (and padding) of any children. |
| 359 int GetChildPreferredWidth(); | 372 int GetChildPreferredWidth(); |
| 360 | 373 |
| 361 // Calculates the preferred size. | 374 // Calculates the preferred size. |
| 362 gfx::Size CalculatePreferredSize(); | 375 gfx::Size CalculatePreferredSize(); |
| 363 | 376 |
| 377 // Delete orphaned items removed from the menu. | |
| 378 void DeleteRemovedItems(); | |
| 379 | |
| 364 // The delegate. This is only valid for the root menu item. You shouldn't | 380 // The delegate. This is only valid for the root menu item. You shouldn't |
| 365 // use this directly, instead use GetDelegate() which walks the tree as | 381 // use this directly, instead use GetDelegate() which walks the tree as |
| 366 // as necessary. | 382 // as necessary. |
| 367 MenuDelegate* delegate_; | 383 MenuDelegate* delegate_; |
| 368 | 384 |
| 369 // Returns the controller for the run operation, or NULL if the menu isn't | 385 // Returns the controller for the run operation, or NULL if the menu isn't |
| 370 // showing. | 386 // showing. |
| 371 MenuController* controller_; | 387 MenuController* controller_; |
| 372 | 388 |
| 373 // Used to detect when Cancel was invoked. | 389 // Used to detect when Cancel was invoked. |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 416 // Margins between the right of the item and the label. | 432 // Margins between the right of the item and the label. |
| 417 static int item_right_margin_; | 433 static int item_right_margin_; |
| 418 | 434 |
| 419 // Preferred height of menu items. Reset every time a menu is run. | 435 // Preferred height of menu items. Reset every time a menu is run. |
| 420 static int pref_menu_height_; | 436 static int pref_menu_height_; |
| 421 | 437 |
| 422 // Previously calculated preferred size to reduce GetStringWidth calls in | 438 // Previously calculated preferred size to reduce GetStringWidth calls in |
| 423 // GetPreferredSize. | 439 // GetPreferredSize. |
| 424 gfx::Size pref_size_; | 440 gfx::Size pref_size_; |
| 425 | 441 |
| 442 // Removed items to be deleted in ChildrenChanged(). | |
| 443 std::vector<View*> removed_items_; | |
| 444 | |
| 426 DISALLOW_COPY_AND_ASSIGN(MenuItemView); | 445 DISALLOW_COPY_AND_ASSIGN(MenuItemView); |
| 427 }; | 446 }; |
| 428 | 447 |
| 429 } // namespace views | 448 } // namespace views |
| 430 | 449 |
| 431 #endif // VIEWS_CONTROLS_MENU_MENU_ITEM_VIEW_H_ | 450 #endif // VIEWS_CONTROLS_MENU_MENU_ITEM_VIEW_H_ |
| OLD | NEW |