| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ash/shell.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "ui/aura/window.h" |
| #include "ui/aura/window_event_dispatcher.h" |
| #include "ui/gfx/canvas.h" |
| #include "ui/views/controls/button/checkbox.h" |
| #include "ui/views/controls/button/label_button.h" |
| #include "ui/views/controls/button/radio_button.h" |
| #include "ui/views/widget/widget.h" |
| #include "ui/views/widget/widget_delegate.h" |
| |
| namespace { |
| |
| // Default window position. |
| const int kWindowLeft = 170; |
| const int kWindowTop = 200; |
| |
| // Default window size. |
| const int kWindowWidth = 400; |
| const int kWindowHeight = 400; |
| |
| // A window showing samples of commonly used widgets. |
| class WidgetsWindow : public views::WidgetDelegateView { |
| public: |
| WidgetsWindow(); |
| virtual ~WidgetsWindow(); |
| |
| // Overridden from views::View: |
| virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; |
| virtual void Layout() OVERRIDE; |
| virtual gfx::Size GetPreferredSize() const OVERRIDE; |
| |
| // Overridden from views::WidgetDelegate: |
| virtual views::View* GetContentsView() OVERRIDE; |
| virtual base::string16 GetWindowTitle() const OVERRIDE; |
| virtual bool CanResize() const OVERRIDE; |
| |
| private: |
| views::LabelButton* button_; |
| views::LabelButton* disabled_button_; |
| views::Checkbox* checkbox_; |
| views::Checkbox* checkbox_disabled_; |
| views::Checkbox* checkbox_checked_; |
| views::Checkbox* checkbox_checked_disabled_; |
| views::RadioButton* radio_button_; |
| views::RadioButton* radio_button_disabled_; |
| views::RadioButton* radio_button_selected_; |
| views::RadioButton* radio_button_selected_disabled_; |
| }; |
| |
| WidgetsWindow::WidgetsWindow() |
| : button_(new views::LabelButton(NULL, base::ASCIIToUTF16("Button"))), |
| disabled_button_( |
| new views::LabelButton(NULL, base::ASCIIToUTF16("Disabled button"))), |
| checkbox_(new views::Checkbox(base::ASCIIToUTF16("Checkbox"))), |
| checkbox_disabled_(new views::Checkbox( |
| base::ASCIIToUTF16("Checkbox disabled"))), |
| checkbox_checked_(new views::Checkbox( |
| base::ASCIIToUTF16("Checkbox checked"))), |
| checkbox_checked_disabled_(new views::Checkbox( |
| base::ASCIIToUTF16("Checkbox checked disabled"))), |
| radio_button_(new views::RadioButton( |
| base::ASCIIToUTF16("Radio button"), 0)), |
| radio_button_disabled_(new views::RadioButton( |
| base::ASCIIToUTF16("Radio button disabled"), 0)), |
| radio_button_selected_(new views::RadioButton( |
| base::ASCIIToUTF16("Radio button selected"), 0)), |
| radio_button_selected_disabled_(new views::RadioButton( |
| base::ASCIIToUTF16("Radio button selected disabled"), 1)) { |
| button_->SetStyle(views::Button::STYLE_BUTTON); |
| AddChildView(button_); |
| disabled_button_->SetEnabled(false); |
| disabled_button_->SetStyle(views::Button::STYLE_BUTTON); |
| AddChildView(disabled_button_); |
| AddChildView(checkbox_); |
| checkbox_disabled_->SetEnabled(false); |
| AddChildView(checkbox_disabled_); |
| checkbox_checked_->SetChecked(true); |
| AddChildView(checkbox_checked_); |
| checkbox_checked_disabled_->SetChecked(true); |
| checkbox_checked_disabled_->SetEnabled(false); |
| AddChildView(checkbox_checked_disabled_); |
| AddChildView(radio_button_); |
| radio_button_disabled_->SetEnabled(false); |
| AddChildView(radio_button_disabled_); |
| radio_button_selected_->SetChecked(true); |
| AddChildView(radio_button_selected_); |
| radio_button_selected_disabled_->SetChecked(true); |
| radio_button_selected_disabled_->SetEnabled(false); |
| AddChildView(radio_button_selected_disabled_); |
| } |
| |
| WidgetsWindow::~WidgetsWindow() { |
| } |
| |
| void WidgetsWindow::OnPaint(gfx::Canvas* canvas) { |
| canvas->FillRect(GetLocalBounds(), SK_ColorWHITE); |
| } |
| |
| void WidgetsWindow::Layout() { |
| const int kVerticalPad = 5; |
| int left = 5; |
| int top = kVerticalPad; |
| for (int i = 0; i < child_count(); ++i) { |
| views::View* view = child_at(i); |
| gfx::Size preferred = view->GetPreferredSize(); |
| view->SetBounds(left, top, preferred.width(), preferred.height()); |
| top += preferred.height() + kVerticalPad; |
| } |
| } |
| |
| gfx::Size WidgetsWindow::GetPreferredSize() const { |
| return gfx::Size(kWindowWidth, kWindowHeight); |
| } |
| |
| views::View* WidgetsWindow::GetContentsView() { |
| return this; |
| } |
| |
| base::string16 WidgetsWindow::GetWindowTitle() const { |
| return base::ASCIIToUTF16("Examples: Widgets"); |
| } |
| |
| bool WidgetsWindow::CanResize() const { |
| return true; |
| } |
| |
| } // namespace |
| |
| namespace ash { |
| namespace shell { |
| |
| void CreateWidgetsWindow() { |
| gfx::Rect bounds(kWindowLeft, kWindowTop, kWindowWidth, kWindowHeight); |
| views::Widget* widget = |
| views::Widget::CreateWindowWithContextAndBounds( |
| new WidgetsWindow, Shell::GetPrimaryRootWindow(), bounds); |
| widget->GetNativeView()->SetName("WidgetsWindow"); |
| widget->Show(); |
| } |
| |
| } // namespace shell |
| } // namespace ash |