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

Side by Side Diff: ui/views/examples/examples_window.cc

Issue 8687013: Get the examples to run in aura_shell. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years 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
« no previous file with comments | « ui/views/examples/examples_window.h ('k') | ui/views/examples/link_example.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ui/views/examples/examples_main.h" 5 #include "ui/views/examples/examples_main.h"
6 6
7 #include "base/at_exit.h" 7 #include "base/at_exit.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/i18n/icu_util.h" 9 #include "base/i18n/icu_util.h"
10 #include "base/process_util.h" 10 #include "base/process_util.h"
11 #include "base/stl_util.h" 11 #include "base/stl_util.h"
12 #include "base/utf_string_conversions.h" 12 #include "base/utf_string_conversions.h"
13 #include "ui/base/resource/resource_bundle.h" 13 #include "ui/base/resource/resource_bundle.h"
14 #include "ui/base/ui_base_paths.h" 14 #include "ui/base/ui_base_paths.h"
15 #include "ui/views/controls/button/text_button.h" 15 #include "ui/views/controls/button/text_button.h"
16 #include "ui/views/controls/tabbed_pane/tabbed_pane.h" 16 #include "ui/views/controls/tabbed_pane/tabbed_pane.h"
17 #include "ui/views/examples/bubble_example.h" 17 #include "ui/views/examples/bubble_example.h"
18 #include "ui/views/examples/button_example.h" 18 #include "ui/views/examples/button_example.h"
19 #include "ui/views/examples/combobox_example.h" 19 #include "ui/views/examples/combobox_example.h"
20 #include "ui/views/examples/double_split_view_example.h" 20 #include "ui/views/examples/double_split_view_example.h"
21 #include "ui/views/examples/link_example.h" 21 #include "ui/views/examples/link_example.h"
22 #include "ui/views/examples/menu_example.h"
23 #include "ui/views/examples/message_box_example.h" 22 #include "ui/views/examples/message_box_example.h"
24 #include "ui/views/examples/native_theme_button_example.h" 23 #include "ui/views/examples/native_theme_button_example.h"
25 #include "ui/views/examples/native_theme_checkbox_example.h" 24 #include "ui/views/examples/native_theme_checkbox_example.h"
26 #include "ui/views/examples/progress_bar_example.h" 25 #include "ui/views/examples/progress_bar_example.h"
27 #include "ui/views/examples/radio_button_example.h" 26 #include "ui/views/examples/radio_button_example.h"
28 #include "ui/views/examples/scroll_view_example.h" 27 #include "ui/views/examples/scroll_view_example.h"
29 #include "ui/views/examples/single_split_view_example.h" 28 #include "ui/views/examples/single_split_view_example.h"
30 #include "ui/views/examples/tabbed_pane_example.h" 29 #include "ui/views/examples/tabbed_pane_example.h"
31 #include "ui/views/examples/table2_example.h"
32 #include "ui/views/examples/text_example.h" 30 #include "ui/views/examples/text_example.h"
33 #include "ui/views/examples/textfield_example.h" 31 #include "ui/views/examples/textfield_example.h"
34 #include "ui/views/examples/throbber_example.h" 32 #include "ui/views/examples/throbber_example.h"
35 #include "ui/views/examples/widget_example.h" 33 #include "ui/views/examples/widget_example.h"
36 #include "ui/views/focus/accelerator_handler.h" 34 #include "ui/views/focus/accelerator_handler.h"
37 #include "ui/views/layout/grid_layout.h" 35 #include "ui/views/layout/grid_layout.h"
38 #include "ui/views/test/test_views_delegate.h" 36 #include "ui/views/test/test_views_delegate.h"
39 #include "ui/views/widget/widget.h" 37 #include "ui/views/widget/widget.h"
40 #include "views/controls/label.h" 38 #include "views/controls/label.h"
41 39
40 #if !defined(USE_AURA)
41 #include "ui/views/examples/menu_example.h"
42 #include "ui/views/examples/table2_example.h"
42 #if defined(OS_WIN) 43 #if defined(OS_WIN)
43 // TableView is not yet ported to Linux.
44 #include "ui/views/examples/table_example.h" 44 #include "ui/views/examples/table_example.h"
45 #endif 45 #endif
46 #endif
46 47
48
49 namespace views {
47 namespace examples { 50 namespace examples {
48 51
49 ExamplesMain::ExamplesMain() 52 class ExampleBase;
50 : tabbed_pane_(NULL), 53
51 contents_(NULL), 54 class ExamplesWindowContents : public views::WidgetDelegateView {
52 status_label_(NULL) { 55 public:
56 explicit ExamplesWindowContents(bool quit_on_close)
57 : tabbed_pane_(new views::TabbedPane),
58 status_label_(new views::Label),
59 quit_on_close_(quit_on_close) {
60 instance_ = this;
61 }
62 virtual ~ExamplesWindowContents() {
63 }
64
65 // Prints a message in the status area, at the bottom of the window.
66 void SetStatus(const std::string& status) {
67 status_label_->SetText(UTF8ToUTF16(status));
68 }
69
70 static ExamplesWindowContents* instance() { return instance_; }
71
72 private:
73 // Overridden from WidgetDelegateView:
74 virtual bool CanResize() const OVERRIDE { return true; }
75 virtual bool CanMaximize() const OVERRIDE { return true; }
76 virtual string16 GetWindowTitle() const OVERRIDE {
77 return ASCIIToUTF16("Views Examples");
78 }
79 virtual views::View* GetContentsView() OVERRIDE { return this; }
80 virtual void WindowClosing() OVERRIDE {
81 instance_ = NULL;
82 if (quit_on_close_)
83 MessageLoopForUI::current()->Quit();
84 }
85
86 // Overridden from View:
87 virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child) {
88 if (is_add && child == this)
89 InitExamplesWindow();
90 }
91
92 // Creates the layout within the examples window.
93 void InitExamplesWindow() {
94 set_background(views::Background::CreateStandardPanelBackground());
95 views::GridLayout* layout = new views::GridLayout(this);
96 SetLayoutManager(layout);
97 views::ColumnSet* column_set = layout->AddColumnSet(0);
98 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
99 views::GridLayout::USE_PREF, 0, 0);
100 layout->StartRow(1, 0);
101 layout->AddView(tabbed_pane_);
102 layout->StartRow(0 /* no expand */, 0);
103 layout->AddView(status_label_);
104
105 AddExamples();
106 }
107
108 // Adds all the individual examples to the tab strip.
109 void AddExamples() {
110 AddExample(new BubbleExample);
111 AddExample(new ButtonExample);
112 AddExample(new ComboboxExample);
113 AddExample(new DoubleSplitViewExample);
114 AddExample(new LinkExample);
115 #if !defined(USE_AURA)
116 AddExample(new MenuExample);
117 #endif
118 AddExample(new MessageBoxExample);
119 AddExample(new NativeThemeButtonExample);
120 AddExample(new NativeThemeCheckboxExample);
121 AddExample(new ProgressBarExample);
122 AddExample(new RadioButtonExample);
123 AddExample(new ScrollViewExample);
124 AddExample(new SingleSplitViewExample);
125 AddExample(new TabbedPaneExample);
126 #if !defined(USE_AURA)
127 #if defined(OS_WIN)
128 AddExample(new TableExample);
129 #endif
130 AddExample(new Table2Example);
131 #endif
132 AddExample(new TextExample);
133 AddExample(new TextfieldExample);
134 AddExample(new ThrobberExample);
135 AddExample(new WidgetExample);
136 }
137
138 // Adds a new example to the tabbed window.
139 void AddExample(ExampleBase* example) {
140 tabbed_pane_->AddTab(UTF8ToUTF16(example->example_title()),
141 example->example_view());
142 }
143
144 static ExamplesWindowContents* instance_;
145 views::TabbedPane* tabbed_pane_;
146 views::Label* status_label_;
147 bool quit_on_close_;
148
149 DISALLOW_COPY_AND_ASSIGN(ExamplesWindowContents);
150 };
151
152 // static
153 ExamplesWindowContents* ExamplesWindowContents::instance_ = NULL;
154
155 void ShowExamplesWindow(bool quit_on_close) {
156 if (ExamplesWindowContents::instance()) {
157 ExamplesWindowContents::instance()->GetWidget()->Activate();
158 } else {
159 Widget::CreateWindowWithBounds(new ExamplesWindowContents(quit_on_close),
160 gfx::Rect(0, 0, 850, 300))->Show();
161 }
53 } 162 }
54 163
55 ExamplesMain::~ExamplesMain() { 164 void LogStatus(const std::string& string) {
56 STLDeleteElements(&examples_); 165 ExamplesWindowContents::instance()->SetStatus(string);
57 }
58
59 void ExamplesMain::Init() {
60 // Creates a window with the tabbed pane for each example,
61 // and a label to print messages from each example.
62 DCHECK(contents_ == NULL) << "Run called more than once.";
63 contents_ = new views::View();
64 contents_->set_background(views::Background::CreateStandardPanelBackground());
65 views::GridLayout* layout = new views::GridLayout(contents_);
66 contents_->SetLayoutManager(layout);
67
68 views::ColumnSet* column_set = layout->AddColumnSet(0);
69 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1,
70 views::GridLayout::USE_PREF, 0, 0);
71
72 tabbed_pane_ = new views::TabbedPane();
73 status_label_ = new views::Label();
74
75 layout->StartRow(1, 0);
76 layout->AddView(tabbed_pane_);
77 layout->StartRow(0 /* no expand */, 0);
78 layout->AddView(status_label_);
79
80 // TODO(satorux): The window is getting wide. Eventually, we would have
81 // the second tabbed pane.
82 views::Widget* window =
83 views::Widget::CreateWindowWithBounds(this, gfx::Rect(0, 0, 850, 300));
84
85 // Keep these in alphabetical order!
86 examples_.push_back(new BubbleExample(this));
87 examples_.push_back(new ButtonExample(this));
88 examples_.push_back(new ComboboxExample(this));
89 examples_.push_back(new DoubleSplitViewExample(this));
90 examples_.push_back(new LinkExample(this));
91 examples_.push_back(new MenuExample(this));
92 examples_.push_back(new MessageBoxExample(this));
93 examples_.push_back(new NativeThemeButtonExample(this));
94 examples_.push_back(new NativeThemeCheckboxExample(this));
95 examples_.push_back(new ProgressBarExample(this));
96 examples_.push_back(new RadioButtonExample(this));
97 examples_.push_back(new ScrollViewExample(this));
98 examples_.push_back(new SingleSplitViewExample(this));
99 examples_.push_back(new TabbedPaneExample(this));
100 #if defined(OS_WIN)
101 examples_.push_back(new TableExample(this));
102 #endif
103 examples_.push_back(new Table2Example(this));
104 examples_.push_back(new TextExample(this));
105 examples_.push_back(new TextfieldExample(this));
106 examples_.push_back(new ThrobberExample(this));
107 examples_.push_back(new WidgetExample(this));
108
109 for (std::vector<ExampleBase*>::const_iterator i(examples_.begin());
110 i != examples_.end(); ++i)
111 AddExample(*i);
112
113 window->Show();
114 }
115
116 void ExamplesMain::SetStatus(const std::string& status) {
117 status_label_->SetText(UTF8ToUTF16(status));
118 }
119
120 void ExamplesMain::AddExample(ExampleBase* example) {
121 tabbed_pane_->AddTab(UTF8ToUTF16(example->example_title()),
122 example->example_view());
123 }
124
125 bool ExamplesMain::CanResize() const {
126 return true;
127 }
128
129 bool ExamplesMain::CanMaximize() const {
130 return true;
131 }
132
133 string16 ExamplesMain::GetWindowTitle() const {
134 return ASCIIToUTF16("Views Examples");
135 }
136
137 views::View* ExamplesMain::GetContentsView() {
138 return contents_;
139 }
140
141 void ExamplesMain::WindowClosing() {
142 MessageLoopForUI::current()->Quit();
143 }
144
145 views::Widget* ExamplesMain::GetWidget() {
146 return contents_->GetWidget();
147 }
148
149 const views::Widget* ExamplesMain::GetWidget() const {
150 return contents_->GetWidget();
151 } 166 }
152 167
153 } // namespace examples 168 } // namespace examples
154 169 } // namespace views
155 int main(int argc, char** argv) {
156 #if defined(OS_WIN)
157 OleInitialize(NULL);
158 #elif defined(OS_LINUX)
159 // Initializes gtk stuff.
160 g_type_init();
161 gtk_init(&argc, &argv);
162 #endif
163 CommandLine::Init(argc, argv);
164
165 base::EnableTerminationOnHeapCorruption();
166
167 // The exit manager is in charge of calling the dtors of singleton objects.
168 base::AtExitManager exit_manager;
169
170 ui::RegisterPathProvider();
171 bool icu_result = icu_util::Initialize();
172 CHECK(icu_result);
173 ui::ResourceBundle::InitSharedInstance("en-US");
174
175 MessageLoop main_message_loop(MessageLoop::TYPE_UI);
176
177 views::TestViewsDelegate delegate;
178
179 // We do not use this header: chrome/common/chrome_switches.h
180 // because that would create a bad dependency back on Chrome.
181 views::Widget::SetPureViews(
182 CommandLine::ForCurrentProcess()->HasSwitch("use-pure-views"));
183
184 examples::ExamplesMain main;
185 main.Init();
186
187 views::AcceleratorHandler accelerator_handler;
188 MessageLoopForUI::current()->RunWithDispatcher(&accelerator_handler);
189
190 #if defined(OS_WIN)
191 OleUninitialize();
192 #endif
193 return 0;
194 }
OLDNEW
« no previous file with comments | « ui/views/examples/examples_window.h ('k') | ui/views/examples/link_example.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698