OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 CHROME_BROWSER_VIEWS_BOOKMARK_BAR_VIEW_H_ | 5 #ifndef CHROME_BROWSER_VIEWS_BOOKMARK_BAR_VIEW_H_ |
6 #define CHROME_BROWSER_VIEWS_BOOKMARK_BAR_VIEW_H_ | 6 #define CHROME_BROWSER_VIEWS_BOOKMARK_BAR_VIEW_H_ |
7 | 7 |
8 #include "app/slide_animation.h" | 8 #include "app/slide_animation.h" |
9 #include "chrome/browser/bookmarks/bookmark_drag_data.h" | 9 #include "chrome/browser/bookmarks/bookmark_drag_data.h" |
10 #include "chrome/browser/bookmarks/bookmark_model_observer.h" | 10 #include "chrome/browser/bookmarks/bookmark_model_observer.h" |
11 #include "chrome/browser/extensions/extensions_service.h" | 11 #include "chrome/browser/extensions/extensions_service.h" |
12 #include "chrome/browser/sync/profile_sync_service.h" | 12 #include "chrome/browser/sync/profile_sync_service.h" |
13 #include "chrome/browser/views/bookmark_menu_controller_views.h" | 13 #include "chrome/browser/views/bookmark_menu_controller_views.h" |
14 #include "chrome/browser/views/detachable_toolbar_view.h" | 14 #include "chrome/browser/views/detachable_toolbar_view.h" |
15 #include "chrome/common/notification_registrar.h" | 15 #include "chrome/common/notification_registrar.h" |
16 #include "views/controls/button/menu_button.h" | 16 #include "views/controls/button/button.h" |
17 #include "views/controls/label.h" | |
18 #include "views/controls/menu/view_menu_delegate.h" | 17 #include "views/controls/menu/view_menu_delegate.h" |
19 #include "views/view.h" | |
20 #include "third_party/skia/include/core/SkRect.h" | |
21 | 18 |
22 class Browser; | 19 class Browser; |
23 class PageNavigator; | 20 class PageNavigator; |
24 class PrefService; | 21 class PrefService; |
25 | 22 |
26 namespace views { | 23 namespace views { |
| 24 class CustomButton; |
| 25 class Label; |
| 26 class MenuButton; |
27 class MenuItemView; | 27 class MenuItemView; |
| 28 class TextButton; |
28 } | 29 } |
29 | 30 |
30 // BookmarkBarView renders the BookmarkModel. Each starred entry on the | 31 // BookmarkBarView renders the BookmarkModel. Each starred entry on the |
31 // BookmarkBar is rendered as a MenuButton. An additional MenuButton aligned to | 32 // BookmarkBar is rendered as a MenuButton. An additional MenuButton aligned to |
32 // the right allows the user to quickly see recently starred entries. | 33 // the right allows the user to quickly see recently starred entries. |
33 // | 34 // |
34 // BookmarkBarView shows the bookmarks from a specific Profile. BookmarkBarView | 35 // BookmarkBarView shows the bookmarks from a specific Profile. BookmarkBarView |
35 // waits until the HistoryService for the profile has been loaded before | 36 // waits until the HistoryService for the profile has been loaded before |
36 // creating the BookmarkModel. | 37 // creating the BookmarkModel. |
37 class BookmarkBarView : public DetachableToolbarView, | 38 class BookmarkBarView : public DetachableToolbarView, |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 void AnimationEnded(const Animation* animation); | 167 void AnimationEnded(const Animation* animation); |
167 | 168 |
168 // BookmarkMenuController::Observer | 169 // BookmarkMenuController::Observer |
169 virtual void BookmarkMenuDeleted(BookmarkMenuController* controller); | 170 virtual void BookmarkMenuDeleted(BookmarkMenuController* controller); |
170 | 171 |
171 // Returns the button at the specified index. | 172 // Returns the button at the specified index. |
172 views::TextButton* GetBookmarkButton(int index); | 173 views::TextButton* GetBookmarkButton(int index); |
173 | 174 |
174 // Returns the button responsible for showing bookmarks in the other bookmark | 175 // Returns the button responsible for showing bookmarks in the other bookmark |
175 // folder. | 176 // folder. |
176 views::TextButton* other_bookmarked_button() const { | 177 views::MenuButton* other_bookmarked_button() const { |
177 return other_bookmarked_button_; | 178 return other_bookmarked_button_; |
178 } | 179 } |
179 | 180 |
180 // Returns the active MenuItemView, or NULL if a menu isn't showing. | 181 // Returns the active MenuItemView, or NULL if a menu isn't showing. |
181 views::MenuItemView* GetMenu(); | 182 views::MenuItemView* GetMenu(); |
182 | 183 |
183 // Returns the drop MenuItemView, or NULL if a menu isn't showing. | 184 // Returns the drop MenuItemView, or NULL if a menu isn't showing. |
184 views::MenuItemView* GetDropMenu(); | 185 views::MenuItemView* GetDropMenu(); |
185 | 186 |
186 // Returns the context menu, or null if one isn't showing. | 187 // Returns the context menu, or null if one isn't showing. |
187 views::MenuItemView* GetContextMenu(); | 188 views::MenuItemView* GetContextMenu(); |
188 | 189 |
189 // Returns the button used when not all the items on the bookmark bar fit. | 190 // Returns the button used when not all the items on the bookmark bar fit. |
190 views::TextButton* overflow_button() const { return overflow_button_; } | 191 views::MenuButton* overflow_button() const { return overflow_button_; } |
| 192 |
| 193 // If |loc| is over a bookmark button the node is returned corresponding |
| 194 // to the button and |start_index| is set to 0. If a overflow button is |
| 195 // showing and |loc| is over the overflow button, the bookmark bar node is |
| 196 // returned and |start_index| is set to the index of the first node |
| 197 // contained in the overflow menu. |
| 198 const BookmarkNode* GetNodeForButtonAt(const gfx::Point& loc, |
| 199 int* start_index); |
| 200 |
| 201 // Returns the MenuButton for node. |
| 202 views::MenuButton* GetMenuButtonForNode(const BookmarkNode* node); |
| 203 |
| 204 // Returns the position to anchor the menu for |button| at, the index of the |
| 205 // first child of the node to build the menu from. |
| 206 void GetAnchorPositionAndStartIndexForButton( |
| 207 views::MenuButton* button, |
| 208 views::MenuItemView::AnchorPosition* anchor, |
| 209 int* start_index); |
191 | 210 |
192 // Maximum size of buttons on the bookmark bar. | 211 // Maximum size of buttons on the bookmark bar. |
193 static const int kMaxButtonWidth; | 212 static const int kMaxButtonWidth; |
194 | 213 |
195 // If true we're running tests. This short circuits a couple of animations. | 214 // If true we're running tests. This short circuits a couple of animations. |
196 static bool testing_; | 215 static bool testing_; |
197 | 216 |
198 // Constants used in Browser View, as well as here. | 217 // Constants used in Browser View, as well as here. |
199 // How inset the bookmarks bar is when displayed on the new tab page. | 218 // How inset the bookmarks bar is when displayed on the new tab page. |
200 static const int kNewtabHorizontalPadding; | 219 static const int kNewtabHorizontalPadding; |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 int press_x, | 329 int press_x, |
311 int press_y, | 330 int press_y, |
312 OSExchangeData* data); | 331 OSExchangeData* data); |
313 | 332 |
314 // Writes a BookmarkDragData for node to data. | 333 // Writes a BookmarkDragData for node to data. |
315 void WriteDragData(const BookmarkNode* node, OSExchangeData* data); | 334 void WriteDragData(const BookmarkNode* node, OSExchangeData* data); |
316 | 335 |
317 // Returns the drag operations for the specified button. | 336 // Returns the drag operations for the specified button. |
318 virtual int GetDragOperations(views::View* sender, int x, int y); | 337 virtual int GetDragOperations(views::View* sender, int x, int y); |
319 | 338 |
320 // ViewMenuDelegate method. 3 types of menus may be shown: | 339 // ViewMenuDelegate method. Ends up creating a BookmarkMenuController to |
321 // . the menu allowing the user to choose when the bookmark bar is visible. | 340 // show the menu. |
322 // . most recently bookmarked menu | |
323 // . menu for star groups. | |
324 // The latter two are handled by a MenuRunner, which builds the appropriate | |
325 // menu. | |
326 virtual void RunMenu(views::View* view, const gfx::Point& pt); | 341 virtual void RunMenu(views::View* view, const gfx::Point& pt); |
327 | 342 |
328 // Invoked when a star entry corresponding to a URL on the bookmark bar is | 343 // Invoked when a star entry corresponding to a URL on the bookmark bar is |
329 // pressed. Forwards to the PageNavigator to open the URL. | 344 // pressed. Forwards to the PageNavigator to open the URL. |
330 virtual void ButtonPressed(views::Button* sender, const views::Event& event); | 345 virtual void ButtonPressed(views::Button* sender, const views::Event& event); |
331 | 346 |
332 // Invoked for this View, one of the buttons or the 'other' button. Shows the | 347 // Invoked for this View, one of the buttons or the 'other' button. Shows the |
333 // appropriate context menu. | 348 // appropriate context menu. |
334 virtual void ShowContextMenu(views::View* source, | 349 virtual void ShowContextMenu(views::View* source, |
335 int x, | 350 int x, |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 // Background for extension toolstrips. | 492 // Background for extension toolstrips. |
478 SkBitmap toolstrip_background_; | 493 SkBitmap toolstrip_background_; |
479 | 494 |
480 // Storage of strings needed for accessibility. | 495 // Storage of strings needed for accessibility. |
481 std::wstring accessible_name_; | 496 std::wstring accessible_name_; |
482 | 497 |
483 DISALLOW_COPY_AND_ASSIGN(BookmarkBarView); | 498 DISALLOW_COPY_AND_ASSIGN(BookmarkBarView); |
484 }; | 499 }; |
485 | 500 |
486 #endif // CHROME_BROWSER_VIEWS_BOOKMARK_BAR_VIEW_H_ | 501 #endif // CHROME_BROWSER_VIEWS_BOOKMARK_BAR_VIEW_H_ |
OLD | NEW |