diff options
Diffstat (limited to 'chromium/ash/shell/widgets.cc')
-rw-r--r-- | chromium/ash/shell/widgets.cc | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/chromium/ash/shell/widgets.cc b/chromium/ash/shell/widgets.cc new file mode 100644 index 00000000000..01654906fbc --- /dev/null +++ b/chromium/ash/shell/widgets.cc @@ -0,0 +1,145 @@ +// 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" // ASCIIToUTF16 +#include "ui/aura/root_window.h" +#include "ui/aura/window.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() 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, ASCIIToUTF16("Button"))), + disabled_button_( + new views::LabelButton(NULL, ASCIIToUTF16("Disabled button"))), + checkbox_(new views::Checkbox(ASCIIToUTF16("Checkbox"))), + checkbox_disabled_(new views::Checkbox( + ASCIIToUTF16("Checkbox disabled"))), + checkbox_checked_(new views::Checkbox(ASCIIToUTF16("Checkbox checked"))), + checkbox_checked_disabled_(new views::Checkbox( + ASCIIToUTF16("Checkbox checked disabled"))), + radio_button_(new views::RadioButton(ASCIIToUTF16("Radio button"), 0)), + radio_button_disabled_(new views::RadioButton( + ASCIIToUTF16("Radio button disabled"), 0)), + radio_button_selected_(new views::RadioButton( + ASCIIToUTF16("Radio button selected"), 0)), + radio_button_selected_disabled_(new views::RadioButton( + ASCIIToUTF16("Radio button selected disabled"), 1)) { + button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON); + AddChildView(button_); + disabled_button_->SetEnabled(false); + disabled_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON); + 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() { + return gfx::Size(kWindowWidth, kWindowHeight); +} + +views::View* WidgetsWindow::GetContentsView() { + return this; +} + +base::string16 WidgetsWindow::GetWindowTitle() const { + return 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 |