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

Side by Side Diff: chrome/browser/ui/panels/panel_browser_frame_view.cc

Issue 7005006: Add options menu on Windows. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 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) 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/panels/panel_browser_frame_view.h" 5 #include "chrome/browser/ui/panels/panel_browser_frame_view.h"
6 6
7 #include "chrome/browser/themes/theme_service.h" 7 #include "chrome/browser/themes/theme_service.h"
8 #include "chrome/browser/ui/panels/panel.h" 8 #include "chrome/browser/ui/panels/panel.h"
9 #include "chrome/browser/ui/panels/panel_browser_view.h" 9 #include "chrome/browser/ui/panels/panel_browser_view.h"
10 #include "chrome/browser/ui/panels/panel_manager.h"
10 #include "content/browser/tab_contents/tab_contents.h" 11 #include "content/browser/tab_contents/tab_contents.h"
11 #include "grit/app_resources.h" 12 #include "grit/app_resources.h"
12 #include "grit/generated_resources.h" 13 #include "grit/generated_resources.h"
13 #include "grit/theme_resources.h" 14 #include "grit/theme_resources.h"
14 #include "grit/theme_resources_standard.h" 15 #include "grit/theme_resources_standard.h"
15 #include "third_party/skia/include/effects/SkGradientShader.h" 16 #include "third_party/skia/include/effects/SkGradientShader.h"
16 #include "ui/base/accessibility/accessible_view_state.h" 17 #include "ui/base/accessibility/accessible_view_state.h"
17 #include "ui/base/l10n/l10n_util.h" 18 #include "ui/base/l10n/l10n_util.h"
18 #include "ui/base/resource/resource_bundle.h" 19 #include "ui/base/resource/resource_bundle.h"
19 #include "ui/gfx/canvas_skia.h" 20 #include "ui/gfx/canvas_skia.h"
20 #include "views/controls/button/image_button.h" 21 #include "views/controls/button/image_button.h"
21 #include "views/controls/button/menu_button.h" 22 #include "views/controls/button/menu_button.h"
23 #include "views/controls/menu/menu_2.h"
jennb 2011/05/11 18:06:10 I meant this goes below the next line.
jianli 2011/05/11 18:31:31 Done.
22 #include "views/controls/label.h" 24 #include "views/controls/label.h"
23 #include "views/painter.h" 25 #include "views/painter.h"
24 #include "views/window/window.h" 26 #include "views/window/window.h"
25 #include "views/window/window_shape.h" 27 #include "views/window/window_shape.h"
26 28
27 #if defined(OS_LINUX) 29 #if defined(OS_LINUX)
28 #include "views/window/hit_test.h" 30 #include "views/window/hit_test.h"
29 #endif 31 #endif
30 32
31 namespace { 33 namespace {
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 BrowserNonClientFrameView::OnMouseReleased(event); 337 BrowserNonClientFrameView::OnMouseReleased(event);
336 } 338 }
337 339
338 void PanelBrowserFrameView::ButtonPressed(views::Button* sender, 340 void PanelBrowserFrameView::ButtonPressed(views::Button* sender,
339 const views::Event& event) { 341 const views::Event& event) {
340 if (sender == close_button_) 342 if (sender == close_button_)
341 frame_->GetWindow()->CloseWindow(); 343 frame_->GetWindow()->CloseWindow();
342 } 344 }
343 345
344 void PanelBrowserFrameView::RunMenu(View* source, const gfx::Point& pt) { 346 void PanelBrowserFrameView::RunMenu(View* source, const gfx::Point& pt) {
345 NOTIMPLEMENTED(); 347 CreateOptionsMenu();
348 options_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT);
349 }
350
351 bool PanelBrowserFrameView::IsCommandIdChecked(int command_id) const {
352 // Nothing in the menu is checked.
353 return false;
354 }
355
356 bool PanelBrowserFrameView::IsCommandIdEnabled(int command_id) const {
357 // All the menu options are always enabled.
358 return true;
359 }
360
361 bool PanelBrowserFrameView::GetAcceleratorForCommandId(
362 int command_id, ui::Accelerator* accelerator) {
363 return false;
364 }
365
366 void PanelBrowserFrameView::ExecuteCommand(int command_id) {
367 switch (command_id) {
368 case COMMAND_MINIMIZE_ALL:
369 browser_view_->panel()->manager()->MinimizeAll();
370 break;
371 case COMMAND_RESTORE_ALL:
372 browser_view_->panel()->manager()->RestoreAll();
373 break;
374 case COMMAND_CLOSE_ALL:
375 browser_view_->panel()->manager()->RemoveAllActive();
376 break;
377 case COMMAND_ABOUT:
378 NOTIMPLEMENTED();
379 break;
380 default:
381 NOTREACHED();
382 break;
383 }
346 } 384 }
347 385
348 bool PanelBrowserFrameView::ShouldTabIconViewAnimate() const { 386 bool PanelBrowserFrameView::ShouldTabIconViewAnimate() const {
349 // This function is queried during the creation of the window as the 387 // This function is queried during the creation of the window as the
350 // TabIconView we host is initialized, so we need to NULL check the selected 388 // TabIconView we host is initialized, so we need to NULL check the selected
351 // TabContents because in this condition there is not yet a selected tab. 389 // TabContents because in this condition there is not yet a selected tab.
352 TabContents* current_tab = browser_view_->GetSelectedTabContents(); 390 TabContents* current_tab = browser_view_->GetSelectedTabContents();
353 return current_tab ? current_tab->is_loading() : false; 391 return current_tab ? current_tab->is_loading() : false;
354 } 392 }
355 393
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 } 513 }
476 514
477 void PanelBrowserFrameView::UpdateTitleBar() { 515 void PanelBrowserFrameView::UpdateTitleBar() {
478 title_label_->SetText( 516 title_label_->SetText(
479 frame_->GetWindow()->window_delegate()->GetWindowTitle()); 517 frame_->GetWindow()->window_delegate()->GetWindowTitle());
480 } 518 }
481 519
482 void PanelBrowserFrameView::OnActivationChanged(bool active) { 520 void PanelBrowserFrameView::OnActivationChanged(bool active) {
483 SchedulePaint(); 521 SchedulePaint();
484 } 522 }
523
524 void PanelBrowserFrameView::CreateOptionsMenu() {
525 if (!options_menu_contents_.get())
526 options_menu_contents_.reset(new ui::SimpleMenuModel(this));
527 CreateOptionsMenuItems();
528 if (!options_menu_.get())
529 options_menu_.reset(new views::Menu2(options_menu_contents_.get()));
530 }
531
532 void PanelBrowserFrameView::CreateOptionsMenuItems() {
533 // Determines if we need to rebuild the menu items. The menu items might
534 // be different if any of the following have been changed since the last
535 // time:
536 // 1) Multiple panel vs. single panel.
537 // 2) All panels minimized or not.
538 bool should_manipulate_all =
539 browser_view_->panel()->manager()->active_count() > 1;
540 bool should_restore_all =
541 browser_view_->panel()->manager()->AreAllMinimized();
542
543 bool rebuild_menu_items = false;
544 if (options_menu_contents_->GetItemCount() > 0) {
545 bool manipulate_all = options_menu_contents_->GetItemCount() > 1;
546 bool restore_all =
547 options_menu_contents_->GetCommandIdAt(0) == COMMAND_RESTORE_ALL;
jennb 2011/05/11 18:06:10 I wish there was a way to check HasCommandId(COMMA
548
549 if (manipulate_all == should_manipulate_all &&
550 restore_all == should_restore_all) {
551 return;
552 }
553
554 rebuild_menu_items = true;
555 options_menu_contents_->Clear();
556 }
557
558 if (should_manipulate_all) {
559 options_menu_contents_->AddItem(
jennb 2011/05/11 18:06:10 It would be easier to read if you did: if (should_
jianli 2011/05/11 18:31:31 Done.
560 should_restore_all ? COMMAND_RESTORE_ALL : COMMAND_MINIMIZE_ALL,
561 l10n_util::GetStringUTF16(
562 should_restore_all ? IDS_PANEL_OPTIONS_MENU_RESTORE_ALL :
563 IDS_PANEL_OPTIONS_MENU_MINIMIZE_ALL));
564 options_menu_contents_->AddItem(
565 COMMAND_CLOSE_ALL,
566 l10n_util::GetStringUTF16(IDS_PANEL_OPTIONS_MENU_CLOSE_ALL));
567 options_menu_contents_->AddSeparator();
568 }
569
570 options_menu_contents_->AddItem(
571 COMMAND_ABOUT, l10n_util::GetStringUTF16(IDS_PANEL_OPTIONS_MENU_ABOUT));
572
573 // Do not call Rebuild() if we're building the menu for the first time.
574 if (rebuild_menu_items)
jennb 2011/05/11 18:06:10 Feels like this method should return true if optio
jianli 2011/05/11 18:31:31 Done. I also renamed CreateOptionsMenu to CreateOr
575 options_menu_->Rebuild();
576 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698