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

Side by Side Diff: chrome/browser/chromeos/chromeos_browser_extenders.cc

Issue 341008: CompactLocationBar (Closed)
Patch Set: comment updated Created 11 years, 1 month 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
« no previous file with comments | « no previous file | chrome/browser/chromeos/compact_location_bar.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <algorithm> 5 #include <algorithm>
6 6
7 #include "app/theme_provider.h" 7 #include "app/theme_provider.h"
8 #include "chrome/app/chrome_dll_resource.h" 8 #include "chrome/app/chrome_dll_resource.h"
9 #include "chrome/browser/chromeos/compact_location_bar.h"
9 #include "chrome/browser/chromeos/compact_navigation_bar.h" 10 #include "chrome/browser/chromeos/compact_navigation_bar.h"
10 #include "chrome/browser/chromeos/main_menu.h" 11 #include "chrome/browser/chromeos/main_menu.h"
11 #include "chrome/browser/chromeos/status_area_view.h" 12 #include "chrome/browser/chromeos/status_area_view.h"
12 #include "chrome/browser/chromeos/panel_controller.h" 13 #include "chrome/browser/chromeos/panel_controller.h"
13 #include "chrome/browser/views/frame/browser_extender.h" 14 #include "chrome/browser/views/frame/browser_extender.h"
14 #include "chrome/browser/views/frame/browser_frame_gtk.h" 15 #include "chrome/browser/views/frame/browser_frame_gtk.h"
15 #include "chrome/browser/views/frame/browser_view.h" 16 #include "chrome/browser/views/frame/browser_view.h"
16 #include "chrome/browser/views/tabs/tab_overview_types.h" 17 #include "chrome/browser/views/tabs/tab_overview_types.h"
18 #include "chrome/browser/views/tabs/tab_strip.h"
19 #include "chrome/browser/views/tabs/tab_strip_wrapper.h"
17 #include "chrome/browser/views/toolbar_view.h" 20 #include "chrome/browser/views/toolbar_view.h"
18 #include "grit/generated_resources.h" 21 #include "grit/generated_resources.h"
19 #include "grit/theme_resources.h" 22 #include "grit/theme_resources.h"
20 #include "views/controls/button/button.h" 23 #include "views/controls/button/button.h"
21 #include "views/controls/button/image_button.h" 24 #include "views/controls/button/image_button.h"
22 #include "views/controls/menu/simple_menu_model.h" 25 #include "views/controls/menu/simple_menu_model.h"
23 #include "views/window/window.h" 26 #include "views/window/window.h"
24 27
25 namespace { 28 namespace {
26 29
(...skipping 26 matching lines...) Expand all
53 virtual void Init() { 56 virtual void Init() {
54 main_menu_ = new views::ImageButton(this); 57 main_menu_ = new views::ImageButton(this);
55 ThemeProvider* theme_provider = 58 ThemeProvider* theme_provider =
56 browser_view()->frame()->GetThemeProviderForFrame(); 59 browser_view()->frame()->GetThemeProviderForFrame();
57 SkBitmap* image = theme_provider->GetBitmapNamed(IDR_MAIN_MENU_BUTTON); 60 SkBitmap* image = theme_provider->GetBitmapNamed(IDR_MAIN_MENU_BUTTON);
58 main_menu_->SetImage(views::CustomButton::BS_NORMAL, image); 61 main_menu_->SetImage(views::CustomButton::BS_NORMAL, image);
59 main_menu_->SetImage(views::CustomButton::BS_HOT, image); 62 main_menu_->SetImage(views::CustomButton::BS_HOT, image);
60 main_menu_->SetImage(views::CustomButton::BS_PUSHED, image); 63 main_menu_->SetImage(views::CustomButton::BS_PUSHED, image);
61 browser_view()->AddChildView(main_menu_); 64 browser_view()->AddChildView(main_menu_);
62 65
66 compact_location_bar_.reset(new CompactLocationBar(browser_view()));
63 compact_navigation_bar_ = 67 compact_navigation_bar_ =
64 new CompactNavigationBar(browser_view()->browser()); 68 new CompactNavigationBar(browser_view()->browser());
65 browser_view()->AddChildView(compact_navigation_bar_); 69 browser_view()->AddChildView(compact_navigation_bar_);
66 compact_navigation_bar_->Init(); 70 compact_navigation_bar_->Init();
67 status_area_ = new StatusAreaView( 71 status_area_ = new StatusAreaView(
68 browser_view()->browser(), 72 browser_view()->browser(),
69 browser_view()->GetWindow()->GetNativeWindow()); 73 browser_view()->GetWindow()->GetNativeWindow());
70 browser_view()->AddChildView(status_area_); 74 browser_view()->AddChildView(status_area_);
71 status_area_->Init(); 75 status_area_->Init();
72 76
(...skipping 16 matching lines...) Expand all
89 main_menu_->SetVisible(false); 93 main_menu_->SetVisible(false);
90 compact_navigation_bar_->SetVisible(false); 94 compact_navigation_bar_->SetVisible(false);
91 status_area_->SetVisible(false); 95 status_area_->SetVisible(false);
92 return bounds; 96 return bounds;
93 } else { 97 } else {
94 main_menu_->SetVisible(true); 98 main_menu_->SetVisible(true);
95 compact_navigation_bar_->SetVisible(compact_navigation_bar_enabled_); 99 compact_navigation_bar_->SetVisible(compact_navigation_bar_enabled_);
96 status_area_->SetVisible(true); 100 status_area_->SetVisible(true);
97 } 101 }
98 102
103 if (compact_navigation_bar_->IsVisible()) {
104 // Update the size and location of the compact location bar.
105 compact_location_bar_->UpdateBounds(
106 browser_view()->tabstrip()->AsTabStrip()->GetSelectedTab());
107 }
108
99 // Layout main menu before tab strip. 109 // Layout main menu before tab strip.
100 gfx::Size main_menu_size = main_menu_->GetPreferredSize(); 110 gfx::Size main_menu_size = main_menu_->GetPreferredSize();
101 main_menu_->SetBounds(bounds.x(), bounds.y(), 111 main_menu_->SetBounds(bounds.x(), bounds.y(),
102 main_menu_size.width(), bounds.height()); 112 main_menu_size.width(), bounds.height());
103 113
104 // Layout status area after tab strip. 114 // Layout status area after tab strip.
105 gfx::Size status_size = status_area_->GetPreferredSize(); 115 gfx::Size status_size = status_area_->GetPreferredSize();
106 status_area_->SetBounds(bounds.x() + bounds.width() - status_size.width(), 116 status_area_->SetBounds(bounds.x() + bounds.width() - status_size.width(),
107 bounds.y(), status_size.width(), 117 bounds.y(), status_size.width(),
108 status_size.height()); 118 status_size.height());
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 virtual void ActivationChanged() {} 167 virtual void ActivationChanged() {}
158 168
159 virtual bool ShouldForceHideToolbar() { 169 virtual bool ShouldForceHideToolbar() {
160 return compact_navigation_bar_enabled_; 170 return compact_navigation_bar_enabled_;
161 } 171 }
162 172
163 virtual void ToggleCompactNavigationBar() { 173 virtual void ToggleCompactNavigationBar() {
164 compact_navigation_bar_enabled_ = !compact_navigation_bar_enabled_; 174 compact_navigation_bar_enabled_ = !compact_navigation_bar_enabled_;
165 } 175 }
166 176
177 virtual void OnMouseEnteredToTab(Tab* tab) {
178 ShowCompactLocationBarUnderSelectedTab();
179 }
180
181 virtual void OnMouseMovedOnTab(Tab* tab) {
182 ShowCompactLocationBarUnderSelectedTab();
183 }
184
185 virtual void OnMouseExitedFromTab(Tab* tab) {
186 compact_location_bar_->StartPopupTimer();
187 }
188
167 private: 189 private:
190 // Shows the compact location bar under the selected tab.
191 void ShowCompactLocationBarUnderSelectedTab() {
192 if (!compact_navigation_bar_enabled_)
193 return;
194 compact_location_bar_->Update(
195 browser_view()->tabstrip()->AsTabStrip()->GetSelectedTab(),
196 browser_view()->browser()->GetSelectedTabContents());
197 }
198
168 // Creates system menu. 199 // Creates system menu.
169 void InitSystemMenu() { 200 void InitSystemMenu() {
170 system_menu_contents_.reset(new views::SimpleMenuModel(browser_view())); 201 system_menu_contents_.reset(new views::SimpleMenuModel(browser_view()));
171 system_menu_contents_->AddItemWithStringId(IDC_RESTORE_TAB, 202 system_menu_contents_->AddItemWithStringId(IDC_RESTORE_TAB,
172 IDS_RESTORE_TAB); 203 IDS_RESTORE_TAB);
173 system_menu_contents_->AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB); 204 system_menu_contents_->AddItemWithStringId(IDC_NEW_TAB, IDS_NEW_TAB);
174 system_menu_contents_->AddSeparator(); 205 system_menu_contents_->AddSeparator();
175 system_menu_contents_->AddItemWithStringId(IDC_TASK_MANAGER, 206 system_menu_contents_->AddItemWithStringId(IDC_TASK_MANAGER,
176 IDS_TASK_MANAGER); 207 IDS_TASK_MANAGER);
177 system_menu_menu_.reset(new views::Menu2(system_menu_contents_.get())); 208 system_menu_menu_.reset(new views::Menu2(system_menu_contents_.get()));
(...skipping 11 matching lines...) Expand all
189 bool is_mouse_gesture) { 220 bool is_mouse_gesture) {
190 system_menu_menu_->RunMenuAt(gfx::Point(x, y), views::Menu2::ALIGN_TOPLEFT); 221 system_menu_menu_->RunMenuAt(gfx::Point(x, y), views::Menu2::ALIGN_TOPLEFT);
191 } 222 }
192 223
193 // Main menu button. 224 // Main menu button.
194 views::ImageButton* main_menu_; 225 views::ImageButton* main_menu_;
195 226
196 // Status Area view. 227 // Status Area view.
197 StatusAreaView* status_area_; 228 StatusAreaView* status_area_;
198 229
199 // System menus 230 // System menus.
200 scoped_ptr<views::SimpleMenuModel> system_menu_contents_; 231 scoped_ptr<views::SimpleMenuModel> system_menu_contents_;
201 scoped_ptr<views::Menu2> system_menu_menu_; 232 scoped_ptr<views::Menu2> system_menu_menu_;
202 233
203 // CompactNavigationBar view. 234 // CompactNavigationBar view.
204 CompactNavigationBar* compact_navigation_bar_; 235 CompactNavigationBar* compact_navigation_bar_;
205 236
206 // A toggle flag to show/hide the compact navigation bar. 237 // A toggle flag to show/hide the compact navigation bar.
207 bool compact_navigation_bar_enabled_; 238 bool compact_navigation_bar_enabled_;
208 239
240 // CompactLocationBar view.
241 scoped_ptr<CompactLocationBar> compact_location_bar_;
242
209 DISALLOW_COPY_AND_ASSIGN(NormalExtender); 243 DISALLOW_COPY_AND_ASSIGN(NormalExtender);
210 }; 244 };
211 245
212 // PopupExtender class creates dedicated title window for popup window. 246 // PopupExtender class creates dedicated title window for popup window.
213 // The size and location of the created title window is controlled by 247 // The size and location of the created title window is controlled by
214 // by window manager. 248 // by window manager.
215 class PopupExtender : public BrowserExtender { 249 class PopupExtender : public BrowserExtender {
216 public: 250 public:
217 explicit PopupExtender(BrowserView* browser_view) 251 explicit PopupExtender(BrowserView* browser_view)
218 : BrowserExtender(browser_view) { 252 : BrowserExtender(browser_view) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
268 } 302 }
269 } 303 }
270 304
271 virtual bool ShouldForceHideToolbar() { 305 virtual bool ShouldForceHideToolbar() {
272 // Always hide toolbar for popups. 306 // Always hide toolbar for popups.
273 return true; 307 return true;
274 } 308 }
275 309
276 virtual void ToggleCompactNavigationBar() {} 310 virtual void ToggleCompactNavigationBar() {}
277 311
312 virtual void OnMouseEnteredToTab(Tab* tab) {}
313
314 virtual void OnMouseMovedOnTab(Tab* tab) {}
315
316 virtual void OnMouseExitedFromTab(Tab* tab) {}
317
278 // Controls interactions with the window manager for popup panels. 318 // Controls interactions with the window manager for popup panels.
279 scoped_ptr<PanelController> panel_controller_; 319 scoped_ptr<PanelController> panel_controller_;
280 320
281 DISALLOW_COPY_AND_ASSIGN(PopupExtender); 321 DISALLOW_COPY_AND_ASSIGN(PopupExtender);
282 }; 322 };
283 323
284 } // namespace 324 } // namespace
285 325
286 //////////////////////////////////////////////////////////////////////////////// 326 ////////////////////////////////////////////////////////////////////////////////
287 // BrowserExtender, public: 327 // BrowserExtender, public:
288 328
289 // static 329 // static
290 BrowserExtender* BrowserExtender::Create(BrowserView* browser_view) { 330 BrowserExtender* BrowserExtender::Create(BrowserView* browser_view) {
291 BrowserExtender* extender; 331 BrowserExtender* extender;
292 if (browser_view->browser()->type() & Browser::TYPE_POPUP) 332 if (browser_view->browser()->type() & Browser::TYPE_POPUP)
293 extender = new PopupExtender(browser_view); 333 extender = new PopupExtender(browser_view);
294 else 334 else
295 extender = new NormalExtender(browser_view); 335 extender = new NormalExtender(browser_view);
296 extender->Init(); 336 extender->Init();
297 return extender; 337 return extender;
298 } 338 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/compact_location_bar.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698