| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 UI_VIEWS_CONTROLS_MENU_SUBMENU_VIEW_H_ | 5 #ifndef UI_VIEWS_CONTROLS_MENU_SUBMENU_VIEW_H_ |
| 6 #define UI_VIEWS_CONTROLS_MENU_SUBMENU_VIEW_H_ | 6 #define UI_VIEWS_CONTROLS_MENU_SUBMENU_VIEW_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| 11 #include "ui/views/animation/scroll_animator.h" | 11 #include "ui/views/animation/scroll_animator.h" |
| 12 #include "ui/views/controls/menu/menu_delegate.h" | 12 #include "ui/views/controls/menu/menu_delegate.h" |
| 13 #include "ui/views/controls/prefix_delegate.h" |
| 14 #include "ui/views/controls/prefix_selector.h" |
| 13 #include "ui/views/view.h" | 15 #include "ui/views/view.h" |
| 14 | 16 |
| 15 namespace views { | 17 namespace views { |
| 16 | 18 |
| 17 class MenuHost; | 19 class MenuHost; |
| 18 class MenuItemView; | 20 class MenuItemView; |
| 19 class MenuScrollViewContainer; | 21 class MenuScrollViewContainer; |
| 20 | 22 |
| 21 // SubmenuView is the parent of all menu items. | 23 // SubmenuView is the parent of all menu items. |
| 22 // | 24 // |
| 23 // SubmenuView has the following responsibilities: | 25 // SubmenuView has the following responsibilities: |
| 24 // . It positions and sizes all child views (any type of View may be added, | 26 // . It positions and sizes all child views (any type of View may be added, |
| 25 // not just MenuItemViews). | 27 // not just MenuItemViews). |
| 26 // . Forwards the appropriate events to the MenuController. This allows the | 28 // . Forwards the appropriate events to the MenuController. This allows the |
| 27 // MenuController to update the selection as the user moves the mouse around. | 29 // MenuController to update the selection as the user moves the mouse around. |
| 28 // . Renders the drop indicator during a drop operation. | 30 // . Renders the drop indicator during a drop operation. |
| 29 // . Shows and hides the window (a NativeWidgetWin) when the menu is shown on | 31 // . Shows and hides the window (a NativeWidgetWin) when the menu is shown on |
| 30 // screen. | 32 // screen. |
| 31 // | 33 // |
| 32 // SubmenuView is itself contained in a MenuScrollViewContainer. | 34 // SubmenuView is itself contained in a MenuScrollViewContainer. |
| 33 // MenuScrollViewContainer handles showing as much of the SubmenuView as the | 35 // MenuScrollViewContainer handles showing as much of the SubmenuView as the |
| 34 // screen allows. If the SubmenuView is taller than the screen, scroll buttons | 36 // screen allows. If the SubmenuView is taller than the screen, scroll buttons |
| 35 // are provided that allow the user to see all the menu items. | 37 // are provided that allow the user to see all the menu items. |
| 36 class VIEWS_EXPORT SubmenuView : public View, | 38 class VIEWS_EXPORT SubmenuView : public PrefixDelegate, |
| 37 public ScrollDelegate { | 39 public ScrollDelegate { |
| 38 public: | 40 public: |
| 39 // The submenu's class name. | 41 // The submenu's class name. |
| 40 static const char kViewClassName[]; | 42 static const char kViewClassName[]; |
| 41 | 43 |
| 42 // Creates a SubmenuView for the specified menu item. | 44 // Creates a SubmenuView for the specified menu item. |
| 43 explicit SubmenuView(MenuItemView* parent); | 45 explicit SubmenuView(MenuItemView* parent); |
| 44 virtual ~SubmenuView(); | 46 virtual ~SubmenuView(); |
| 45 | 47 |
| 46 // Returns the number of child views that are MenuItemViews. | 48 // Returns the number of child views that are MenuItemViews. |
| 47 // MenuItemViews are identified by ID. | 49 // MenuItemViews are identified by ID. |
| 48 int GetMenuItemCount(); | 50 int GetMenuItemCount(); |
| 49 | 51 |
| 50 // Returns the MenuItemView at the specified index. | 52 // Returns the MenuItemView at the specified index. |
| 51 MenuItemView* GetMenuItemAt(int index); | 53 MenuItemView* GetMenuItemAt(int index); |
| 52 | 54 |
| 53 // Positions and sizes the child views. This tiles the views vertically, | 55 // Positions and sizes the child views. This tiles the views vertically, |
| 54 // giving each child the available width. | 56 // giving each child the available width. |
| 55 virtual void Layout() OVERRIDE; | 57 virtual void Layout() OVERRIDE; |
| 56 virtual gfx::Size GetPreferredSize() OVERRIDE; | 58 virtual gfx::Size GetPreferredSize() OVERRIDE; |
| 57 | 59 |
| 58 // Override from View. | 60 // Override from View. |
| 59 virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE; | 61 virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE; |
| 62 virtual ui::TextInputClient* GetTextInputClient() OVERRIDE; |
| 60 | 63 |
| 61 // Painting. | 64 // Painting. |
| 62 virtual void PaintChildren(gfx::Canvas* canvas) OVERRIDE; | 65 virtual void PaintChildren(gfx::Canvas* canvas) OVERRIDE; |
| 63 | 66 |
| 64 // Drag and drop methods. These are forwarded to the MenuController. | 67 // Drag and drop methods. These are forwarded to the MenuController. |
| 65 virtual bool GetDropFormats( | 68 virtual bool GetDropFormats( |
| 66 int* formats, | 69 int* formats, |
| 67 std::set<OSExchangeData::CustomFormat>* custom_formats) OVERRIDE; | 70 std::set<OSExchangeData::CustomFormat>* custom_formats) OVERRIDE; |
| 68 virtual bool AreDropTypesRequired() OVERRIDE; | 71 virtual bool AreDropTypesRequired() OVERRIDE; |
| 69 virtual bool CanDrop(const OSExchangeData& data) OVERRIDE; | 72 virtual bool CanDrop(const OSExchangeData& data) OVERRIDE; |
| 70 virtual void OnDragEntered(const ui::DropTargetEvent& event) OVERRIDE; | 73 virtual void OnDragEntered(const ui::DropTargetEvent& event) OVERRIDE; |
| 71 virtual int OnDragUpdated(const ui::DropTargetEvent& event) OVERRIDE; | 74 virtual int OnDragUpdated(const ui::DropTargetEvent& event) OVERRIDE; |
| 72 virtual void OnDragExited() OVERRIDE; | 75 virtual void OnDragExited() OVERRIDE; |
| 73 virtual int OnPerformDrop(const ui::DropTargetEvent& event) OVERRIDE; | 76 virtual int OnPerformDrop(const ui::DropTargetEvent& event) OVERRIDE; |
| 74 | 77 |
| 75 // Scrolls on menu item boundaries. | 78 // Scrolls on menu item boundaries. |
| 76 virtual bool OnMouseWheel(const ui::MouseWheelEvent& e) OVERRIDE; | 79 virtual bool OnMouseWheel(const ui::MouseWheelEvent& e) OVERRIDE; |
| 77 | 80 |
| 78 // Overridden from ui::EventHandler. | 81 // Overridden from ui::EventHandler. |
| 79 // Scrolls on menu item boundaries. | 82 // Scrolls on menu item boundaries. |
| 80 virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; | 83 virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; |
| 81 | 84 |
| 85 // Overridden from PrefixDelegate. |
| 86 virtual int GetRowCount() OVERRIDE; |
| 87 virtual int GetSelectedRow() OVERRIDE; |
| 88 virtual void SetSelectedRow(int row) OVERRIDE; |
| 89 virtual base::string16 GetTextForRow(int row) OVERRIDE; |
| 90 |
| 82 // Returns true if the menu is showing. | 91 // Returns true if the menu is showing. |
| 83 bool IsShowing(); | 92 bool IsShowing(); |
| 84 | 93 |
| 85 // Shows the menu at the specified location. Coordinates are in screen | 94 // Shows the menu at the specified location. Coordinates are in screen |
| 86 // coordinates. max_width gives the max width the view should be. | 95 // coordinates. max_width gives the max width the view should be. |
| 87 void ShowAt(Widget* parent, const gfx::Rect& bounds, bool do_capture); | 96 void ShowAt(Widget* parent, const gfx::Rect& bounds, bool do_capture); |
| 88 | 97 |
| 89 // Resets the bounds of the submenu to |bounds|. | 98 // Resets the bounds of the submenu to |bounds|. |
| 90 void Reposition(const gfx::Rect& bounds); | 99 void Reposition(const gfx::Rect& bounds); |
| 91 | 100 |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 | 210 |
| 202 // The submenu's scroll animator | 211 // The submenu's scroll animator |
| 203 scoped_ptr<ScrollAnimator> scroll_animator_; | 212 scoped_ptr<ScrollAnimator> scroll_animator_; |
| 204 | 213 |
| 205 // Difference between current position and cumulative deltas passed to | 214 // Difference between current position and cumulative deltas passed to |
| 206 // OnScroll. | 215 // OnScroll. |
| 207 // TODO(tdresser): This should be removed when raw pixel scrolling for views | 216 // TODO(tdresser): This should be removed when raw pixel scrolling for views |
| 208 // is enabled. See crbug.com/329354. | 217 // is enabled. See crbug.com/329354. |
| 209 float roundoff_error_; | 218 float roundoff_error_; |
| 210 | 219 |
| 220 PrefixSelector prefix_selector_; |
| 221 |
| 211 DISALLOW_COPY_AND_ASSIGN(SubmenuView); | 222 DISALLOW_COPY_AND_ASSIGN(SubmenuView); |
| 212 }; | 223 }; |
| 213 | 224 |
| 214 } // namespace views | 225 } // namespace views |
| 215 | 226 |
| 216 #endif // UI_VIEWS_CONTROLS_MENU_SUBMENU_VIEW_H_ | 227 #endif // UI_VIEWS_CONTROLS_MENU_SUBMENU_VIEW_H_ |
| OLD | NEW |