summaryrefslogtreecommitdiff
path: root/chromium/ash/shell/widgets.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/shell/widgets.cc')
-rw-r--r--chromium/ash/shell/widgets.cc145
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