Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: chrome/browser/cocoa/tab_contents_controller.mm

Issue 46078: Mac bookmark work. ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 #include "chrome/browser/cocoa/tab_contents_controller.h" 5 #include "chrome/browser/cocoa/tab_contents_controller.h"
6 6
7 #import "base/sys_string_conversions.h" 7 #import "base/sys_string_conversions.h"
8 #import "chrome/app/chrome_dll_resource.h" 8 #import "chrome/app/chrome_dll_resource.h"
9 #import "chrome/browser/bookmarks/bookmark_model.h"
9 #import "chrome/browser/command_updater.h" 10 #import "chrome/browser/command_updater.h"
10 #import "chrome/browser/location_bar.h" 11 #import "chrome/browser/location_bar.h"
11 #import "chrome/browser/tab_contents/tab_contents.h" 12 #import "chrome/browser/tab_contents/tab_contents.h"
12 #import "chrome/browser/toolbar_model.h" 13 #import "chrome/browser/toolbar_model.h"
13 #import "chrome/browser/net/url_fixer_upper.h" 14 #import "chrome/browser/net/url_fixer_upper.h"
14 15
15 // For now, tab_contents lives here. TODO(port):fix 16 // For now, tab_contents lives here. TODO(port):fix
16 #include "chrome/common/temp_scaffolding_stubs.h" 17 #include "chrome/common/temp_scaffolding_stubs.h"
17 18
18 // Names of images in the bundle for the star icon (normal and 'starred'). 19 // Names of images in the bundle for the star icon (normal and 'starred').
19 static NSString* const kStarImageName = @"star"; 20 static NSString* const kStarImageName = @"star";
20 static NSString* const kStarredImageName = @"starred"; 21 static NSString* const kStarredImageName = @"starred";
21 22
22 @interface TabContentsController(CommandUpdates) 23 @interface TabContentsController(CommandUpdates)
23 - (void)enabledStateChangedForCommand:(NSInteger)command enabled:(BOOL)enabled; 24 - (void)enabledStateChangedForCommand:(NSInteger)command enabled:(BOOL)enabled;
24 @end 25 @end
25 26
26 @interface TabContentsController(LocationBar) 27 @interface TabContentsController(LocationBar)
27 - (NSString*)locationBarString; 28 - (NSString*)locationBarString;
28 - (void)focusLocationBar; 29 - (void)focusLocationBar;
29 @end 30 @end
30 31
31 @interface TabContentsController(Private) 32 @interface TabContentsController(Private)
32 - (void)updateToolbarCommandStatus; 33 - (void)updateToolbarCommandStatus;
34 - (void)applyContentsBoxOffset:(BOOL)apply;
33 @end 35 @end
34 36
35 // A C++ bridge class that handles listening for updates to commands and 37 // A C++ bridge class that handles listening for updates to commands and
36 // passing them back to the controller. 38 // passing them back to the controller.
37 class TabContentsCommandObserver : public CommandUpdater::CommandObserver { 39 class TabContentsCommandObserver : public CommandUpdater::CommandObserver {
38 public: 40 public:
39 TabContentsCommandObserver(TabContentsController* controller, 41 TabContentsCommandObserver(TabContentsController* controller,
40 CommandUpdater* commands); 42 CommandUpdater* commands);
41 ~TabContentsCommandObserver(); 43 ~TabContentsCommandObserver();
42 44
(...skipping 28 matching lines...) Expand all
71 private: 73 private:
72 TabContentsController* controller_; // weak, owns me 74 TabContentsController* controller_; // weak, owns me
73 }; 75 };
74 76
75 @implementation TabContentsController 77 @implementation TabContentsController
76 78
77 - (id)initWithNibName:(NSString*)name 79 - (id)initWithNibName:(NSString*)name
78 bundle:(NSBundle*)bundle 80 bundle:(NSBundle*)bundle
79 contents:(TabContents*)contents 81 contents:(TabContents*)contents
80 commands:(CommandUpdater*)commands 82 commands:(CommandUpdater*)commands
81 toolbarModel:(ToolbarModel*)toolbarModel { 83 toolbarModel:(ToolbarModel*)toolbarModel
84 bookmarkModel:(BookmarkModel*)bookmarkModel {
82 if ((self = [super initWithNibName:name bundle:bundle])) { 85 if ((self = [super initWithNibName:name bundle:bundle])) {
83 commands_ = commands; 86 commands_ = commands;
84 if (commands_) 87 if (commands_)
85 observer_ = new TabContentsCommandObserver(self, commands); 88 observer_ = new TabContentsCommandObserver(self, commands);
86 locationBarBridge_ = new LocationBarBridge(self); 89 locationBarBridge_ = new LocationBarBridge(self);
87 contents_ = contents; 90 contents_ = contents;
88 toolbarModel_ = toolbarModel; 91 toolbarModel_ = toolbarModel;
92 bookmarkModel_ = bookmarkModel;
89 } 93 }
90 return self; 94 return self;
91 } 95 }
92 96
93 - (void)dealloc { 97 - (void)dealloc {
94 // make sure our contents have been removed from the window 98 // make sure our contents have been removed from the window
95 [[self view] removeFromSuperview]; 99 [[self view] removeFromSuperview];
96 delete observer_; 100 delete observer_;
97 delete locationBarBridge_; 101 delete locationBarBridge_;
98 [super dealloc]; 102 [super dealloc];
99 } 103 }
100 104
101 - (void)awakeFromNib { 105 - (void)awakeFromNib {
102 [contentsBox_ setContentView:contents_->GetNativeView()]; 106 [contentsBox_ setContentView:contents_->GetNativeView()];
107 [self applyContentsBoxOffset:YES];
103 108
104 // Provide a starting point since we won't get notifications if the state 109 // Provide a starting point since we won't get notifications if the state
105 // doesn't change between tabs. 110 // doesn't change between tabs.
106 [self updateToolbarCommandStatus]; 111 [self updateToolbarCommandStatus];
107 112
108 [locationBar_ setStringValue:@"http://dev.chromium.org"]; 113 [locationBar_ setStringValue:@"http://dev.chromium.org"];
109 } 114 }
110 115
111 - (LocationBar*)locationBar { 116 - (LocationBar*)locationBar {
112 return locationBarBridge_; 117 return locationBarBridge_;
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 return localGrowBox; 232 return localGrowBox;
228 } 233 }
229 234
230 - (void)setIsLoading:(BOOL)isLoading { 235 - (void)setIsLoading:(BOOL)isLoading {
231 NSString* imageName = @"go"; 236 NSString* imageName = @"go";
232 if (isLoading) 237 if (isLoading)
233 imageName = @"stop"; 238 imageName = @"stop";
234 [goButton_ setImage:[NSImage imageNamed:imageName]]; 239 [goButton_ setImage:[NSImage imageNamed:imageName]];
235 } 240 }
236 241
242 - (void)toggleBookmarkBar:(BOOL)enable {
243 contentsBoxHasOffset_ = enable;
244 [self applyContentsBoxOffset:enable];
245
246 if (enable) {
247 // TODO(jrg): display something useful in the bookmark bar
248 // TODO(jrg): use a BookmarksView, not a ToolbarView
249 // TODO(jrg): don't draw a border around it
250 // TODO(jrg): ...
251 }
252 }
253
254 // Apply a contents box offset to make (or remove) room for the
255 // bookmark bar. If apply==YES, always make room (the contentsBox_ is
256 // "full size"). If apply==NO we are trying to undo an offset. If no
257 // offset there is nothing to undo.
258 - (void)applyContentsBoxOffset:(BOOL)apply {
259
260 if (bookmarkView_ == nil) {
261 // We're too early, but awakeFromNib will call me again.
262 return;
263 }
264 if (!contentsBoxHasOffset_ && apply) {
265 // There is no offset to unconditionally apply.
266 return;
267 }
268
269 int offset = [bookmarkView_ frame].size.height;
270 NSRect frame = [contentsBox_ frame];
271 if (apply)
272 frame.size.height -= offset;
273 else
274 frame.size.height += offset;
275
276 // TODO(jrg): animate
277 [contentsBox_ setFrame:frame];
278
279 [bookmarkView_ setNeedsDisplay:YES];
280 [contentsBox_ setNeedsDisplay:YES];
281 }
282
237 @end 283 @end
238 284
239 //-------------------------------------------------------------------------- 285 //--------------------------------------------------------------------------
240 286
241 TabContentsCommandObserver::TabContentsCommandObserver( 287 TabContentsCommandObserver::TabContentsCommandObserver(
242 TabContentsController* controller, CommandUpdater* commands) 288 TabContentsController* controller, CommandUpdater* commands)
243 : controller_(controller), commands_(commands) { 289 : controller_(controller), commands_(commands) {
244 DCHECK(controller_ && commands); 290 DCHECK(controller_ && commands);
245 // Register for notifications about state changes for the toolbar buttons 291 // Register for notifications about state changes for the toolbar buttons
246 commands_->AddCommandObserver(IDC_BACK, this); 292 commands_->AddCommandObserver(IDC_BACK, this);
(...skipping 25 matching lines...) Expand all
272 // over. 318 // over.
273 std::wstring url = base::SysNSStringToWide([controller_ locationBarString]); 319 std::wstring url = base::SysNSStringToWide([controller_ locationBarString]);
274 320
275 // Try to flesh out the input to make a real URL. 321 // Try to flesh out the input to make a real URL.
276 return URLFixerUpper::FixupURL(url, std::wstring()); 322 return URLFixerUpper::FixupURL(url, std::wstring());
277 } 323 }
278 324
279 void LocationBarBridge::FocusLocation() { 325 void LocationBarBridge::FocusLocation() {
280 [controller_ focusLocationBar]; 326 [controller_ focusLocationBar];
281 } 327 }
OLDNEW
« no previous file with comments | « chrome/browser/cocoa/tab_contents_controller.h ('k') | chrome/browser/cocoa/tab_strip_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698