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

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

Issue 138783002: Cleans up gyp file for views example and removes duplicate code (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix windows Created 6 years, 11 months 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_with_content.h ('k') | ui/views/examples/label_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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_window_with_content.h" 5 #include "ui/views/examples/examples_window_with_content.h"
6 6
7 #include <string>
8
9 #include "base/memory/scoped_vector.h"
10 #include "base/strings/utf_string_conversions.h"
11 #include "content/public/browser/browser_context.h" 7 #include "content/public/browser/browser_context.h"
12 #include "ui/base/models/combobox_model.h"
13 #include "ui/base/ui_base_paths.h"
14 #include "ui/views/background.h"
15 #include "ui/views/controls/combobox/combobox.h"
16 #include "ui/views/controls/label.h"
17 #include "ui/views/examples/bubble_example.h"
18 #include "ui/views/examples/button_example.h"
19 #include "ui/views/examples/checkbox_example.h"
20 #include "ui/views/examples/combobox_example.h"
21 #include "ui/views/examples/double_split_view_example.h"
22 #include "ui/views/examples/label_example.h"
23 #include "ui/views/examples/link_example.h"
24 #include "ui/views/examples/menu_example.h"
25 #include "ui/views/examples/message_box_example.h"
26 #include "ui/views/examples/multiline_example.h"
27 #include "ui/views/examples/progress_bar_example.h"
28 #include "ui/views/examples/radio_button_example.h"
29 #include "ui/views/examples/scroll_view_example.h"
30 #include "ui/views/examples/single_split_view_example.h"
31 #include "ui/views/examples/slider_example.h"
32 #include "ui/views/examples/tabbed_pane_example.h"
33 #include "ui/views/examples/table_example.h"
34 #include "ui/views/examples/text_example.h"
35 #include "ui/views/examples/textfield_example.h"
36 #include "ui/views/examples/throbber_example.h"
37 #include "ui/views/examples/tree_view_example.h"
38 #include "ui/views/examples/webview_example.h" 8 #include "ui/views/examples/webview_example.h"
39 #include "ui/views/examples/widget_example.h"
40 #include "ui/views/layout/fill_layout.h"
41 #include "ui/views/layout/grid_layout.h"
42 #include "ui/views/widget/widget.h"
43 #include "ui/views/widget/widget_delegate.h"
44 9
45 namespace views { 10 namespace views {
46 namespace examples { 11 namespace examples {
47 12
48 // Model for the examples that are being added via AddExample().
49 class ComboboxModelExampleList : public ui::ComboboxModel {
50 public:
51 ComboboxModelExampleList() {}
52 virtual ~ComboboxModelExampleList() {}
53
54 // Overridden from ui::ComboboxModel:
55 virtual int GetItemCount() const OVERRIDE { return example_list_.size(); }
56 virtual base::string16 GetItemAt(int index) OVERRIDE {
57 return base::UTF8ToUTF16(example_list_[index]->example_title());
58 }
59
60 View* GetItemViewAt(int index) {
61 return example_list_[index]->example_view();
62 }
63
64 void AddExample(ExampleBase* example) {
65 example_list_.push_back(example);
66 }
67
68 private:
69 ScopedVector<ExampleBase> example_list_;
70
71 DISALLOW_COPY_AND_ASSIGN(ComboboxModelExampleList);
72 };
73
74 class ExamplesWindowContents : public WidgetDelegateView,
75 public ComboboxListener {
76 public:
77 ExamplesWindowContents(Operation operation,
78 content::BrowserContext* browser_context)
79 : combobox_(new Combobox(&combobox_model_)),
80 example_shown_(new View),
81 status_label_(new Label),
82 operation_(operation),
83 browser_context_(browser_context) {
84 instance_ = this;
85 combobox_->set_listener(this);
86 }
87 virtual ~ExamplesWindowContents() {
88 // Delete |combobox_| first as it references |combobox_model_|.
89 delete combobox_;
90 combobox_ = NULL;
91 }
92
93 // Prints a message in the status area, at the bottom of the window.
94 void SetStatus(const std::string& status) {
95 status_label_->SetText(base::UTF8ToUTF16(status));
96 }
97
98 static ExamplesWindowContents* instance() { return instance_; }
99
100 private:
101 // Overridden from WidgetDelegateView:
102 virtual bool CanResize() const OVERRIDE { return true; }
103 virtual bool CanMaximize() const OVERRIDE { return true; }
104 virtual base::string16 GetWindowTitle() const OVERRIDE {
105 return base::ASCIIToUTF16("Views Examples");
106 }
107 virtual View* GetContentsView() OVERRIDE { return this; }
108 virtual void WindowClosing() OVERRIDE {
109 instance_ = NULL;
110 if (operation_ == QUIT_ON_CLOSE)
111 base::MessageLoopForUI::current()->Quit();
112 }
113
114 // Overridden from View:
115 virtual void ViewHierarchyChanged(
116 const ViewHierarchyChangedDetails& details) OVERRIDE {
117 if (details.is_add && details.child == this)
118 InitExamplesWindow();
119 }
120
121 // Overridden from ComboboxListener:
122 virtual void OnSelectedIndexChanged(Combobox* combobox) OVERRIDE {
123 DCHECK_EQ(combobox, combobox_);
124 DCHECK(combobox->selected_index() < combobox_model_.GetItemCount());
125 example_shown_->RemoveAllChildViews(false);
126 example_shown_->AddChildView(combobox_model_.GetItemViewAt(
127 combobox->selected_index()));
128 SetStatus(std::string());
129 Layout();
130 SchedulePaint();
131 }
132
133 // Creates the layout within the examples window.
134 void InitExamplesWindow() {
135 AddExamples();
136
137 set_background(Background::CreateStandardPanelBackground());
138 GridLayout* layout = new GridLayout(this);
139 SetLayoutManager(layout);
140 ColumnSet* column_set = layout->AddColumnSet(0);
141 column_set->AddPaddingColumn(0, 5);
142 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1,
143 GridLayout::USE_PREF, 0, 0);
144 column_set->AddPaddingColumn(0, 5);
145 layout->AddPaddingRow(0, 5);
146 layout->StartRow(0 /* no expand */, 0);
147 layout->AddView(combobox_);
148
149 if (combobox_model_.GetItemCount() > 0) {
150 layout->StartRow(1, 0);
151 example_shown_->SetLayoutManager(new FillLayout());
152 example_shown_->AddChildView(combobox_model_.GetItemViewAt(0));
153 layout->AddView(example_shown_);
154 }
155
156 layout->StartRow(0 /* no expand */, 0);
157 layout->AddView(status_label_);
158 layout->AddPaddingRow(0, 5);
159 }
160
161 // Adds all the individual examples to the combobox model.
162 void AddExamples() {
163 // Please keep this list in alphabetical order!
164 combobox_model_.AddExample(new BubbleExample);
165 combobox_model_.AddExample(new ButtonExample);
166 combobox_model_.AddExample(new CheckboxExample);
167 combobox_model_.AddExample(new ComboboxExample);
168 combobox_model_.AddExample(new DoubleSplitViewExample);
169 combobox_model_.AddExample(new LabelExample);
170 combobox_model_.AddExample(new LinkExample);
171 combobox_model_.AddExample(new MenuExample);
172 combobox_model_.AddExample(new MessageBoxExample);
173 combobox_model_.AddExample(new MultilineExample);
174 combobox_model_.AddExample(new ProgressBarExample);
175 combobox_model_.AddExample(new RadioButtonExample);
176 combobox_model_.AddExample(new ScrollViewExample);
177 combobox_model_.AddExample(new SingleSplitViewExample);
178 combobox_model_.AddExample(new SliderExample);
179 combobox_model_.AddExample(new TabbedPaneExample);
180 combobox_model_.AddExample(new TableExample);
181 combobox_model_.AddExample(new TextExample);
182 combobox_model_.AddExample(new TextfieldExample);
183 combobox_model_.AddExample(new ThrobberExample);
184 combobox_model_.AddExample(new TreeViewExample);
185 combobox_model_.AddExample(new WebViewExample(browser_context_));
186 combobox_model_.AddExample(new WidgetExample);
187 }
188
189 static ExamplesWindowContents* instance_;
190 ComboboxModelExampleList combobox_model_;
191 Combobox* combobox_;
192 View* example_shown_;
193 Label* status_label_;
194 const Operation operation_;
195 content::BrowserContext* browser_context_;
196
197 DISALLOW_COPY_AND_ASSIGN(ExamplesWindowContents);
198 };
199
200 // static
201 ExamplesWindowContents* ExamplesWindowContents::instance_ = NULL;
202
203 void ShowExamplesWindowWithContent(Operation operation, 13 void ShowExamplesWindowWithContent(Operation operation,
204 content::BrowserContext* browser_context, 14 content::BrowserContext* browser_context,
205 gfx::NativeView window_context) { 15 gfx::NativeView window_context) {
206 if (ExamplesWindowContents::instance()) { 16 scoped_ptr<ScopedVector<ExampleBase> > extra_examples(
207 ExamplesWindowContents::instance()->GetWidget()->Activate(); 17 new ScopedVector<ExampleBase>);
208 } else { 18 extra_examples->push_back(new WebViewExample(browser_context));
209 Widget* widget = new Widget; 19 ShowExamplesWindow(operation, window_context, extra_examples.Pass());
210 Widget::InitParams params;
211 params.delegate = new ExamplesWindowContents(operation, browser_context);
212 params.context = window_context;
213 params.bounds = gfx::Rect(0, 0, 850, 300);
214 params.top_level = true;
215 widget->Init(params);
216 widget->Show();
217 }
218 }
219
220 void LogStatus(const std::string& string) {
221 ExamplesWindowContents::instance()->SetStatus(string);
222 } 20 }
223 21
224 } // namespace examples 22 } // namespace examples
225 } // namespace views 23 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/examples/examples_window_with_content.h ('k') | ui/views/examples/label_example.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698