OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/ui/views/toolbar_view.h" | 5 #include "chrome/browser/ui/views/toolbar_view.h" |
6 | 6 |
7 #include "base/i18n/number_formatting.h" | 7 #include "base/i18n/number_formatting.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "chrome/app/chrome_command_ids.h" | 9 #include "chrome/app/chrome_command_ids.h" |
10 #include "chrome/browser/accessibility/browser_accessibility_state.h" | 10 #include "chrome/browser/accessibility/browser_accessibility_state.h" |
(...skipping 22 matching lines...) Expand all Loading... |
33 #include "ui/gfx/skbitmap_operations.h" | 33 #include "ui/gfx/skbitmap_operations.h" |
34 #include "views/controls/button/button_dropdown.h" | 34 #include "views/controls/button/button_dropdown.h" |
35 #include "views/focus/view_storage.h" | 35 #include "views/focus/view_storage.h" |
36 #include "views/widget/tooltip_manager.h" | 36 #include "views/widget/tooltip_manager.h" |
37 #include "views/window/non_client_view.h" | 37 #include "views/window/non_client_view.h" |
38 #include "views/window/window.h" | 38 #include "views/window/window.h" |
39 | 39 |
40 #if defined(OS_CHROMEOS) | 40 #if defined(OS_CHROMEOS) |
41 #include "chrome/browser/chromeos/cros/cros_library.h" | 41 #include "chrome/browser/chromeos/cros/cros_library.h" |
42 #include "chrome/browser/chromeos/cros/update_library.h" | 42 #include "chrome/browser/chromeos/cros/update_library.h" |
43 #include "chrome/browser/chromeos/webui/wrench_menu_ui.h" | |
44 #include "views/controls/menu/menu_2.h" | 43 #include "views/controls/menu/menu_2.h" |
45 #endif | 44 #endif |
46 #include "chrome/browser/ui/views/wrench_menu.h" | 45 #include "chrome/browser/ui/views/wrench_menu.h" |
47 | 46 |
48 #if defined(OS_WIN) | 47 #if defined(OS_WIN) |
49 #include "chrome/browser/enumerate_modules_model_win.h" | 48 #include "chrome/browser/enumerate_modules_model_win.h" |
50 #endif | 49 #endif |
51 | 50 |
52 // The space between items is 4 px in general. | 51 // The space between items is 4 px in general. |
53 const int ToolbarView::kStandardSpacing = 4; | 52 const int ToolbarView::kStandardSpacing = 4; |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 // after the Browser (which owns the CommandUpdater), so the CommandUpdater is | 128 // after the Browser (which owns the CommandUpdater), so the CommandUpdater is |
130 // already gone. | 129 // already gone. |
131 } | 130 } |
132 | 131 |
133 void ToolbarView::Init(Profile* profile) { | 132 void ToolbarView::Init(Profile* profile) { |
134 back_menu_model_.reset(new BackForwardMenuModel( | 133 back_menu_model_.reset(new BackForwardMenuModel( |
135 browser_, BackForwardMenuModel::BACKWARD_MENU)); | 134 browser_, BackForwardMenuModel::BACKWARD_MENU)); |
136 forward_menu_model_.reset(new BackForwardMenuModel( | 135 forward_menu_model_.reset(new BackForwardMenuModel( |
137 browser_, BackForwardMenuModel::FORWARD_MENU)); | 136 browser_, BackForwardMenuModel::FORWARD_MENU)); |
138 wrench_menu_model_.reset(new WrenchMenuModel(this, browser_)); | 137 wrench_menu_model_.reset(new WrenchMenuModel(this, browser_)); |
139 #if defined(OS_CHROMEOS) | |
140 if (chromeos::MenuUI::IsEnabled()) { | |
141 wrench_menu_2_.reset( | |
142 chromeos::WrenchMenuUI::CreateMenu2(wrench_menu_model_.get())); | |
143 } | |
144 #endif | |
145 back_ = new views::ButtonDropDown(this, back_menu_model_.get()); | 138 back_ = new views::ButtonDropDown(this, back_menu_model_.get()); |
146 back_->set_triggerable_event_flags(ui::EF_LEFT_BUTTON_DOWN | | 139 back_->set_triggerable_event_flags(ui::EF_LEFT_BUTTON_DOWN | |
147 ui::EF_MIDDLE_BUTTON_DOWN); | 140 ui::EF_MIDDLE_BUTTON_DOWN); |
148 back_->set_tag(IDC_BACK); | 141 back_->set_tag(IDC_BACK); |
149 back_->SetImageAlignment(views::ImageButton::ALIGN_RIGHT, | 142 back_->SetImageAlignment(views::ImageButton::ALIGN_RIGHT, |
150 views::ImageButton::ALIGN_TOP); | 143 views::ImageButton::ALIGN_TOP); |
151 back_->SetTooltipText( | 144 back_->SetTooltipText( |
152 UTF16ToWide(l10n_util::GetStringUTF16(IDS_TOOLTIP_BACK))); | 145 UTF16ToWide(l10n_util::GetStringUTF16(IDS_TOOLTIP_BACK))); |
153 back_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_BACK)); | 146 back_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_BACK)); |
154 back_->SetID(VIEW_ID_BACK_BUTTON); | 147 back_->SetID(VIEW_ID_BACK_BUTTON); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 | 254 |
262 void ToolbarView::SetPaneFocusAndFocusAppMenu(int view_storage_id) { | 255 void ToolbarView::SetPaneFocusAndFocusAppMenu(int view_storage_id) { |
263 SetPaneFocus(view_storage_id, app_menu_); | 256 SetPaneFocus(view_storage_id, app_menu_); |
264 } | 257 } |
265 | 258 |
266 bool ToolbarView::IsAppMenuFocused() { | 259 bool ToolbarView::IsAppMenuFocused() { |
267 return app_menu_->HasFocus(); | 260 return app_menu_->HasFocus(); |
268 } | 261 } |
269 | 262 |
270 void ToolbarView::AddMenuListener(views::MenuListener* listener) { | 263 void ToolbarView::AddMenuListener(views::MenuListener* listener) { |
271 #if defined(OS_CHROMEOS) | |
272 if (chromeos::MenuUI::IsEnabled()) { | |
273 DCHECK(wrench_menu_2_.get()); | |
274 wrench_menu_2_->AddMenuListener(listener); | |
275 return; | |
276 } | |
277 #endif | |
278 menu_listeners_.push_back(listener); | 264 menu_listeners_.push_back(listener); |
279 } | 265 } |
280 | 266 |
281 void ToolbarView::RemoveMenuListener(views::MenuListener* listener) { | 267 void ToolbarView::RemoveMenuListener(views::MenuListener* listener) { |
282 #if defined(OS_CHROMEOS) | |
283 if (chromeos::MenuUI::IsEnabled()) { | |
284 DCHECK(wrench_menu_2_.get()); | |
285 wrench_menu_2_->RemoveMenuListener(listener); | |
286 return; | |
287 } | |
288 #endif | |
289 for (std::vector<views::MenuListener*>::iterator i(menu_listeners_.begin()); | 268 for (std::vector<views::MenuListener*>::iterator i(menu_listeners_.begin()); |
290 i != menu_listeners_.end(); ++i) { | 269 i != menu_listeners_.end(); ++i) { |
291 if (*i == listener) { | 270 if (*i == listener) { |
292 menu_listeners_.erase(i); | 271 menu_listeners_.erase(i); |
293 return; | 272 return; |
294 } | 273 } |
295 } | 274 } |
296 } | 275 } |
297 | 276 |
298 //////////////////////////////////////////////////////////////////////////////// | 277 //////////////////////////////////////////////////////////////////////////////// |
(...skipping 21 matching lines...) Expand all Loading... |
320 } | 299 } |
321 | 300 |
322 //////////////////////////////////////////////////////////////////////////////// | 301 //////////////////////////////////////////////////////////////////////////////// |
323 // ToolbarView, views::MenuDelegate implementation: | 302 // ToolbarView, views::MenuDelegate implementation: |
324 | 303 |
325 void ToolbarView::RunMenu(views::View* source, const gfx::Point& /* pt */) { | 304 void ToolbarView::RunMenu(views::View* source, const gfx::Point& /* pt */) { |
326 DCHECK_EQ(VIEW_ID_APP_MENU, source->GetID()); | 305 DCHECK_EQ(VIEW_ID_APP_MENU, source->GetID()); |
327 | 306 |
328 bool destroyed_flag = false; | 307 bool destroyed_flag = false; |
329 destroyed_flag_ = &destroyed_flag; | 308 destroyed_flag_ = &destroyed_flag; |
330 #if defined(OS_CHROMEOS) | |
331 if (chromeos::MenuUI::IsEnabled()) { | |
332 gfx::Point screen_loc; | |
333 views::View::ConvertPointToScreen(app_menu_, &screen_loc); | |
334 gfx::Rect bounds(screen_loc, app_menu_->size()); | |
335 if (base::i18n::IsRTL()) | |
336 bounds.set_x(bounds.x() - app_menu_->size().width()); | |
337 wrench_menu_2_->RunMenuAt(gfx::Point(bounds.right(), bounds.bottom()), | |
338 views::Menu2::ALIGN_TOPRIGHT); | |
339 // TODO(oshima): nuke this once we made decision about go or no go | |
340 // for WebUI menu. | |
341 goto cleanup; | |
342 } | |
343 #endif | |
344 wrench_menu_ = new WrenchMenu(browser_); | 309 wrench_menu_ = new WrenchMenu(browser_); |
345 wrench_menu_->Init(wrench_menu_model_.get()); | 310 wrench_menu_->Init(wrench_menu_model_.get()); |
346 | 311 |
347 for (size_t i = 0; i < menu_listeners_.size(); ++i) | 312 for (size_t i = 0; i < menu_listeners_.size(); ++i) |
348 menu_listeners_[i]->OnMenuOpened(); | 313 menu_listeners_[i]->OnMenuOpened(); |
349 | 314 |
350 wrench_menu_->RunMenu(app_menu_); | 315 wrench_menu_->RunMenu(app_menu_); |
351 | 316 |
352 #if defined(OS_CHROMEOS) | |
353 cleanup: | |
354 #endif | |
355 if (destroyed_flag) | 317 if (destroyed_flag) |
356 return; | 318 return; |
357 destroyed_flag_ = NULL; | 319 destroyed_flag_ = NULL; |
358 } | 320 } |
359 | 321 |
360 //////////////////////////////////////////////////////////////////////////////// | 322 //////////////////////////////////////////////////////////////////////////////// |
361 // ToolbarView, LocationBarView::Delegate implementation: | 323 // ToolbarView, LocationBarView::Delegate implementation: |
362 | 324 |
363 TabContentsWrapper* ToolbarView::GetTabContentsWrapper() { | 325 TabContentsWrapper* ToolbarView::GetTabContentsWrapper() { |
364 return browser_->GetSelectedTabContentsWrapper(); | 326 return browser_->GetSelectedTabContentsWrapper(); |
(...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
779 NOTREACHED(); | 741 NOTREACHED(); |
780 #endif | 742 #endif |
781 } else { | 743 } else { |
782 NOTREACHED(); | 744 NOTREACHED(); |
783 } | 745 } |
784 | 746 |
785 canvas->DrawBitmapInt(badge, icon.width() - badge.width(), kBadgeTopMargin); | 747 canvas->DrawBitmapInt(badge, icon.width() - badge.width(), kBadgeTopMargin); |
786 | 748 |
787 return canvas->ExtractBitmap(); | 749 return canvas->ExtractBitmap(); |
788 } | 750 } |
OLD | NEW |