 Chromium Code Reviews
 Chromium Code Reviews| 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/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 Loading... | |
| 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 Loading... | |
| 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 } | |
| OLD | NEW |