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 #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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |