| 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_COCOA_BOOKMARK_BAR_CONTROLLER_H_ | 5 #ifndef CHROME_BROWSER_COCOA_BOOKMARK_BAR_CONTROLLER_H_ |
| 6 #define CHROME_BROWSER_COCOA_BOOKMARK_BAR_CONTROLLER_H_ | 6 #define CHROME_BROWSER_COCOA_BOOKMARK_BAR_CONTROLLER_H_ |
| 7 | 7 |
| 8 #import <Cocoa/Cocoa.h> | 8 #import <Cocoa/Cocoa.h> |
| 9 #include <map> | 9 #include <map> |
| 10 | 10 |
| 11 #include "base/scoped_nsobject.h" | 11 #include "base/scoped_nsobject.h" |
| 12 #include "base/scoped_ptr.h" | 12 #include "base/scoped_ptr.h" |
| 13 #include "chrome/browser/cocoa/bookmark_bar_bridge.h" | 13 #include "chrome/browser/cocoa/bookmark_bar_bridge.h" |
| 14 #include "webkit/glue/window_open_disposition.h" | 14 #include "webkit/glue/window_open_disposition.h" |
| 15 | 15 |
| 16 @class BookmarkBarStateController; | 16 @class BookmarkBarStateController; |
| 17 class BookmarkModel; | 17 class BookmarkModel; |
| 18 class BookmarkNode; | 18 class BookmarkNode; |
| 19 @class BookmarkBarView; | 19 @class BookmarkBarView; |
| 20 class GURL; | 20 class GURL; |
| 21 class Profile; | 21 class Profile; |
| 22 class PrefService; | 22 class PrefService; |
| 23 @protocol ViewResizer; |
| 23 | 24 |
| 24 // The interface for an object which can open URLs for a bookmark. | 25 // The interface for an object which can open URLs for a bookmark. |
| 25 @protocol BookmarkURLOpener | 26 @protocol BookmarkURLOpener |
| 26 - (void)openBookmarkURL:(const GURL&)url | 27 - (void)openBookmarkURL:(const GURL&)url |
| 27 disposition:(WindowOpenDisposition)disposition; | 28 disposition:(WindowOpenDisposition)disposition; |
| 28 @end | 29 @end |
| 29 | 30 |
| 30 | 31 |
| 31 // A controller for the bookmark bar in the browser window. Handles showing | 32 // A controller for the bookmark bar in the browser window. Handles showing |
| 32 // and hiding based on the preference in the given profile. | 33 // and hiding based on the preference in the given profile. |
| 33 @interface BookmarkBarController : NSViewController { | 34 @interface BookmarkBarController : NSViewController { |
| 34 @private | 35 @private |
| 35 Profile* profile_; // weak | 36 Profile* profile_; // weak |
| 36 BookmarkModel* bookmarkModel_; // weak; part of the profile owned by the | 37 BookmarkModel* bookmarkModel_; // weak; part of the profile owned by the |
| 37 // top-level Browser object. | 38 // top-level Browser object. |
| 38 | 39 |
| 39 // Currently these two are always the same when not in fullscreen | 40 // Our initial view width, which is applied in awakeFromNib. |
| 40 // mode, but they mean slightly different things. | 41 float initialWidth_; |
| 41 // contentAreaHasOffset_ is an implementation detail of bookmark bar | |
| 42 // show state. | |
| 43 BOOL contentViewHasOffset_; | |
| 44 BOOL barShouldBeShown_; | |
| 45 | 42 |
| 46 // BookmarkNodes have a 64bit id. NSMenuItems have a 32bit tag used | 43 // BookmarkNodes have a 64bit id. NSMenuItems have a 32bit tag used |
| 47 // to represent the bookmark node they refer to. This map provides | 44 // to represent the bookmark node they refer to. This map provides |
| 48 // a mapping from one to the other, so we can properly identify the | 45 // a mapping from one to the other, so we can properly identify the |
| 49 // node from the item. When adding items in, we start with seedId_. | 46 // node from the item. When adding items in, we start with seedId_. |
| 50 int32 seedId_; | 47 int32 seedId_; |
| 51 std::map<int32,int64> menuTagMap_; | 48 std::map<int32,int64> menuTagMap_; |
| 52 | 49 |
| 53 // Our bookmark buttons, ordered from L-->R. | 50 // Our bookmark buttons, ordered from L-->R. |
| 54 scoped_nsobject<NSMutableArray> buttons_; | 51 scoped_nsobject<NSMutableArray> buttons_; |
| 55 | 52 |
| 56 // If the bar is disabled, we hide it and ignore show/hide commands. | 53 // If the bar is disabled, we hide it and ignore show/hide commands. |
| 57 // Set when using fullscreen mode. | 54 // Set when using fullscreen mode. |
| 58 BOOL barIsEnabled_; | 55 BOOL barIsEnabled_; |
| 59 | 56 |
| 60 NSView* parentView_; // weak; our parent view | 57 // Set to YES when the user elects to always show the bookmark bar. |
| 61 NSView* webContentView_; // weak; where the web goes | 58 BOOL barShouldBeShown_; |
| 62 NSView* infoBarsView_; // weak; where the infobars go | |
| 63 | 59 |
| 64 // Bridge from Chrome-style C++ notifications (e.g. derived from | 60 // Bridge from Chrome-style C++ notifications (e.g. derived from |
| 65 // BookmarkModelObserver) | 61 // BookmarkModelObserver) |
| 66 scoped_ptr<BookmarkBarBridge> bridge_; | 62 scoped_ptr<BookmarkBarBridge> bridge_; |
| 67 | 63 |
| 68 // Delegate which can open URLs for us. | 64 // Delegate that can resize us. |
| 69 id<BookmarkURLOpener> delegate_; // weak | 65 id<ViewResizer> resizeDelegate_; // weak |
| 66 |
| 67 // Delegate that can open URLs for us. |
| 68 id<BookmarkURLOpener> urlDelegate_; // weak |
| 70 | 69 |
| 71 IBOutlet NSView* buttonView_; | 70 IBOutlet NSView* buttonView_; |
| 72 IBOutlet NSButton* offTheSideButton_; | 71 IBOutlet NSButton* offTheSideButton_; |
| 73 IBOutlet NSMenu* buttonContextMenu_; | 72 IBOutlet NSMenu* buttonContextMenu_; |
| 74 } | 73 } |
| 75 | 74 |
| 76 // Initializes the bookmark bar controller with the given browser | 75 // Initializes the bookmark bar controller with the given browser |
| 77 // profile, parent view (the toolbar), web content view, and delegate. | 76 // profile and delegates. |
| 78 // |delegate| is used for opening URLs. | |
| 79 // TODO(rohitrao, jrg): The bookmark bar shouldn't know about the | |
| 80 // infoBarsView or the webContentView. | |
| 81 - (id)initWithProfile:(Profile*)profile | 77 - (id)initWithProfile:(Profile*)profile |
| 82 parentView:(NSView*)parentView | 78 initialWidth:(float)initialWidth |
| 83 webContentView:(NSView*)webContentView | 79 resizeDelegate:(id<ViewResizer>)resizeDelegate |
| 84 infoBarsView:(NSView*)infoBarsView | 80 urlDelegate:(id<BookmarkURLOpener>)urlDelegate; |
| 85 delegate:(id<BookmarkURLOpener>)delegate; | |
| 86 | 81 |
| 87 // Returns whether or not the bookmark bar is visible. | 82 // Returns whether or not the bookmark bar is visible. |
| 88 - (BOOL)isBookmarkBarVisible; | 83 - (BOOL)isBookmarkBarVisible; |
| 89 | 84 |
| 90 // Toggle the state of the bookmark bar. | 85 // Toggle the state of the bookmark bar. |
| 91 - (void)toggleBookmarkBar; | 86 - (void)toggleBookmarkBar; |
| 92 | 87 |
| 93 // Turn on or off the bookmark bar and prevent or reallow its | 88 // Turn on or off the bookmark bar and prevent or reallow its |
| 94 // appearance. On disable, toggle off if shown. On enable, show only | 89 // appearance. On disable, toggle off if shown. On enable, show only |
| 95 // if needed. For fullscreen mode. | 90 // if needed. For fullscreen mode. |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 - (void)nodeFavIconLoaded:(BookmarkModel*)model | 126 - (void)nodeFavIconLoaded:(BookmarkModel*)model |
| 132 node:(const BookmarkNode*)node; | 127 node:(const BookmarkNode*)node; |
| 133 - (void)nodeChildrenReordered:(BookmarkModel*)model | 128 - (void)nodeChildrenReordered:(BookmarkModel*)model |
| 134 node:(const BookmarkNode*)node; | 129 node:(const BookmarkNode*)node; |
| 135 @end | 130 @end |
| 136 | 131 |
| 137 | 132 |
| 138 // These APIs should only be used by unit tests (or used internally). | 133 // These APIs should only be used by unit tests (or used internally). |
| 139 @interface BookmarkBarController(InternalOrTestingAPI) | 134 @interface BookmarkBarController(InternalOrTestingAPI) |
| 140 // Set the delegate for a unit test. | 135 // Set the delegate for a unit test. |
| 141 - (void)setDelegate:(id<BookmarkURLOpener>)delegate; | 136 - (void)setUrlDelegate:(id<BookmarkURLOpener>)urlDelegate; |
| 142 - (void)clearBookmarkBar; | 137 - (void)clearBookmarkBar; |
| 143 - (NSView*)buttonView; | 138 - (NSView*)buttonView; |
| 144 - (NSArray*)buttons; | 139 - (NSArray*)buttons; |
| 145 - (NSRect)frameForBookmarkButtonFromCell:(NSCell*)cell xOffset:(int*)xOffset; | 140 - (NSRect)frameForBookmarkButtonFromCell:(NSCell*)cell xOffset:(int*)xOffset; |
| 146 - (void)checkForBookmarkButtonGrowth:(NSButton*)button; | 141 - (void)checkForBookmarkButtonGrowth:(NSButton*)button; |
| 147 - (void)frameDidChange; | 142 - (void)frameDidChange; |
| 148 - (BOOL)offTheSideButtonIsEnabled; | 143 - (BOOL)offTheSideButtonIsEnabled; |
| 149 - (NSMenu *)menuForFolderNode:(const BookmarkNode*)node; | 144 - (NSMenu *)menuForFolderNode:(const BookmarkNode*)node; |
| 150 - (int64)nodeIdFromMenuTag:(int32)tag; | 145 - (int64)nodeIdFromMenuTag:(int32)tag; |
| 151 - (int32)menuTagFromNodeId:(int64)menuid; | 146 - (int32)menuTagFromNodeId:(int64)menuid; |
| 152 @end | 147 @end |
| 153 | 148 |
| 154 #endif // CHROME_BROWSER_COCOA_BOOKMARK_BAR_CONTROLLER_H_ | 149 #endif // CHROME_BROWSER_COCOA_BOOKMARK_BAR_CONTROLLER_H_ |
| OLD | NEW |