| 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_TOOLBAR_CONTROLLER_H_ | 5 #ifndef CHROME_BROWSER_COCOA_TOOLBAR_CONTROLLER_H_ |
| 6 #define CHROME_BROWSER_COCOA_TOOLBAR_CONTROLLER_H_ | 6 #define CHROME_BROWSER_COCOA_TOOLBAR_CONTROLLER_H_ |
| 7 | 7 |
| 8 #import <Cocoa/Cocoa.h> | 8 #import <Cocoa/Cocoa.h> |
| 9 | 9 |
| 10 #include "base/scoped_ptr.h" | 10 #include "base/scoped_ptr.h" |
| 11 #include "base/scoped_nsobject.h" |
| 11 #import "chrome/browser/cocoa/command_observer_bridge.h" | 12 #import "chrome/browser/cocoa/command_observer_bridge.h" |
| 12 | 13 |
| 13 class CommandUpdater; | 14 class CommandUpdater; |
| 14 class LocationBar; | 15 class LocationBar; |
| 15 class LocationBarViewMac; | 16 class LocationBarViewMac; |
| 16 class Profile; | 17 class Profile; |
| 17 class TabContents; | 18 class TabContents; |
| 18 class ToolbarModel; | 19 class ToolbarModel; |
| 19 class ToolbarView; | 20 class ToolbarView; |
| 20 | 21 |
| 22 // Field editor used for the location bar. |
| 23 @interface LocationBarFieldEditor : NSTextView |
| 24 // Copy contents of the TextView to the designated clipboard as plain text. |
| 25 - (void)performCopy:(NSPasteboard*)pb; |
| 26 |
| 27 // Same as above, note that this calls through to performCopy. |
| 28 - (void)performCut:(NSPasteboard*)pb; |
| 29 @end |
| 30 |
| 21 // A controller for the toolbar in the browser window. Manages updating the | 31 // A controller for the toolbar in the browser window. Manages updating the |
| 22 // state for location bar and back/fwd/reload/go buttons. | 32 // state for location bar and back/fwd/reload/go buttons. |
| 23 | 33 |
| 24 @interface ToolbarController : NSViewController<CommandObserverProtocol> { | 34 @interface ToolbarController : NSViewController<CommandObserverProtocol> { |
| 25 @private | 35 @private |
| 26 ToolbarModel* toolbarModel_; // weak, one per window | 36 ToolbarModel* toolbarModel_; // weak, one per window |
| 27 CommandUpdater* commands_; // weak, one per window | 37 CommandUpdater* commands_; // weak, one per window |
| 28 Profile* profile_; // weak, one per window | 38 Profile* profile_; // weak, one per window |
| 29 scoped_ptr<CommandObserverBridge> commandObserver_; | 39 scoped_ptr<CommandObserverBridge> commandObserver_; |
| 30 scoped_ptr<LocationBarViewMac> locationBarView_; | 40 scoped_ptr<LocationBarViewMac> locationBarView_; |
| 41 scoped_nsobject<LocationBarFieldEditor> locationBarFieldEditor_; // strong |
| 31 | 42 |
| 32 // The ordering is important for unit tests. If new items are added or the | 43 // The ordering is important for unit tests. If new items are added or the |
| 33 // ordering is changed, make sure to update |-toolbarViews| and the | 44 // ordering is changed, make sure to update |-toolbarViews| and the |
| 34 // corresponding enum in the unit tests. | 45 // corresponding enum in the unit tests. |
| 35 IBOutlet NSButton* backButton_; | 46 IBOutlet NSButton* backButton_; |
| 36 IBOutlet NSButton* forwardButton_; | 47 IBOutlet NSButton* forwardButton_; |
| 37 IBOutlet NSButton* reloadButton_; | 48 IBOutlet NSButton* reloadButton_; |
| 38 IBOutlet NSButton* starButton_; | 49 IBOutlet NSButton* starButton_; |
| 39 IBOutlet NSButton* goButton_; | 50 IBOutlet NSButton* goButton_; |
| 40 IBOutlet NSTextField* locationBar_; | 51 IBOutlet NSTextField* locationBar_; |
| 41 } | 52 } |
| 42 | 53 |
| 43 // Initialize the toolbar and register for command updates. The profile is | 54 // Initialize the toolbar and register for command updates. The profile is |
| 44 // needed for initializing the location bar. | 55 // needed for initializing the location bar. |
| 45 - (id)initWithModel:(ToolbarModel*)model | 56 - (id)initWithModel:(ToolbarModel*)model |
| 46 commands:(CommandUpdater*)commands | 57 commands:(CommandUpdater*)commands |
| 47 profile:(Profile*)profile; | 58 profile:(Profile*)profile; |
| 48 | 59 |
| 49 // Get the C++ bridge object representing the location bar for this tab. | 60 // Get the C++ bridge object representing the location bar for this tab. |
| 50 - (LocationBar*)locationBar; | 61 - (LocationBar*)locationBar; |
| 51 | 62 |
| 63 // Called by the Window delegate so we can provide a custom field editor if |
| 64 // needed. |
| 65 // Note that this may be called for objects unrelated to the toolbar. |
| 66 // returns nil if we don't want to override the custom field editor for |obj|. |
| 67 - (id)customFieldEditorForObject:(id)obj; |
| 68 |
| 52 // Make the location bar the first responder, if possible. | 69 // Make the location bar the first responder, if possible. |
| 53 - (void)focusLocationBar; | 70 - (void)focusLocationBar; |
| 54 | 71 |
| 55 // Updates the toolbar (and transitively the location bar) with the states of | 72 // Updates the toolbar (and transitively the location bar) with the states of |
| 56 // the specified |tab|. If |shouldRestore| is true, we're switching | 73 // the specified |tab|. If |shouldRestore| is true, we're switching |
| 57 // (back?) to this tab and should restore any previous location bar state | 74 // (back?) to this tab and should restore any previous location bar state |
| 58 // (such as user editing) as well. | 75 // (such as user editing) as well. |
| 59 - (void)updateToolbarWithContents:(TabContents*)tabForRestoring | 76 - (void)updateToolbarWithContents:(TabContents*)tabForRestoring |
| 60 shouldRestoreState:(BOOL)shouldRestore; | 77 shouldRestoreState:(BOOL)shouldRestore; |
| 61 | 78 |
| 62 // Sets whether or not the current page in the frontmost tab is bookmarked. | 79 // Sets whether or not the current page in the frontmost tab is bookmarked. |
| 63 - (void)setStarredState:(BOOL)isStarred; | 80 - (void)setStarredState:(BOOL)isStarred; |
| 64 | 81 |
| 65 // Called to update the loading state. Handles updating the go/stop button | 82 // Called to update the loading state. Handles updating the go/stop button |
| 66 // state. | 83 // state. |
| 67 - (void)setIsLoading:(BOOL)isLoading; | 84 - (void)setIsLoading:(BOOL)isLoading; |
| 68 | 85 |
| 69 @end | 86 @end |
| 70 | 87 |
| 71 // A set of private methods used by tests, in the absence of "friends" in ObjC. | 88 // A set of private methods used by tests, in the absence of "friends" in ObjC. |
| 72 @interface ToolbarController(PrivateTestMethods) | 89 @interface ToolbarController(PrivateTestMethods) |
| 73 // Returns an array of views in the order of the outlets above. | 90 // Returns an array of views in the order of the outlets above. |
| 74 - (NSArray*)toolbarViews; | 91 - (NSArray*)toolbarViews; |
| 75 @end | 92 @end |
| 76 | 93 |
| 77 #endif // CHROME_BROWSER_COCOA_TOOLBAR_CONTROLLER_H_ | 94 #endif // CHROME_BROWSER_COCOA_TOOLBAR_CONTROLLER_H_ |
| OLD | NEW |