15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/examples_window.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <algorithm> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_vector.h" 11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/models/combobox_model.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/ui_base_paths.h" 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "ui/views/background.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/combobox/combobox.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/label.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/bubble_example.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/button_example.h" 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "ui/views/examples/checkbox_example.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/combobox_example.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/double_split_view_example.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/label_example.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/link_example.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/menu_example.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/message_box_example.h" 267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ui/views/examples/multiline_example.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/progress_bar_example.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/radio_button_example.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/scroll_view_example.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/single_split_view_example.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/slider_example.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/tabbed_pane_example.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/table_example.h" 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/text_example.h" 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/textfield_example.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/throbber_example.h" 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/tree_view_example.h" 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/examples/widget_example.h" 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/fill_layout.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/grid_layout.h" 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h" 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget_delegate.h" 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace examples { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)typedef scoped_ptr<ScopedVector<ExampleBase> > ScopedExamples; 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace { 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Creates the default set of examples. Caller owns the result. 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ScopedExamples CreateExamples() { 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ScopedExamples examples(new ScopedVector<ExampleBase>); 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new BubbleExample); 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new ButtonExample); 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new CheckboxExample); 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new ComboboxExample); 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new DoubleSplitViewExample); 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new LabelExample); 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new LinkExample); 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new MenuExample); 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new MessageBoxExample); 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new MultilineExample); 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new ProgressBarExample); 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new RadioButtonExample); 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new ScrollViewExample); 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new SingleSplitViewExample); 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new SliderExample); 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new TabbedPaneExample); 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new TableExample); 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new TextExample); 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new TextfieldExample); 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new ThrobberExample); 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new TreeViewExample); 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->push_back(new WidgetExample); 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return examples.Pass(); 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct ExampleTitleCompare { 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool operator() (ExampleBase* a, ExampleBase* b) { 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return a->example_title() < b->example_title(); 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ScopedExamples GetExamplesToShow(ScopedExamples extra) { 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ScopedExamples examples(CreateExamples()); 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (extra.get()) { 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) examples->insert(examples->end(), extra->begin(), extra->end()); 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) extra->weak_clear(); 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::sort(examples->begin(), examples->end(), ExampleTitleCompare()); 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return examples.Pass(); 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Model for the examples that are being added via AddExample(). 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ComboboxModelExampleList : public ui::ComboboxModel { 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ComboboxModelExampleList() {} 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ComboboxModelExampleList() {} 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void SetExamples(ScopedExamples examples) { 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) example_list_.swap(*examples); 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // ui::ComboboxModel: 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual int GetItemCount() const OVERRIDE { return example_list_.size(); } 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual base::string16 GetItemAt(int index) OVERRIDE { 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::UTF8ToUTF16(example_list_[index]->example_title()); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) View* GetItemViewAt(int index) { 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return example_list_[index]->example_view(); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ScopedVector<ExampleBase> example_list_; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ComboboxModelExampleList); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExamplesWindowContents : public WidgetDelegateView, 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public ComboboxListener { 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ExamplesWindowContents(Operation operation, ScopedExamples examples) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : combobox_(new Combobox(&combobox_model_)), 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) example_shown_(new View), 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) status_label_(new Label), 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) operation_(operation) { 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) instance_ = this; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox_->set_listener(this); 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) combobox_model_.SetExamples(examples.Pass()); 134cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) combobox_->ModelChanged(); 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) set_background(Background::CreateStandardPanelBackground()); 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GridLayout* layout = new GridLayout(this); 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SetLayoutManager(layout); 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ColumnSet* column_set = layout->AddColumnSet(0); 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) column_set->AddPaddingColumn(0, 5); 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GridLayout::USE_PREF, 0, 0); 1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) column_set->AddPaddingColumn(0, 5); 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->AddPaddingRow(0, 5); 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->StartRow(0 /* no expand */, 0); 1465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->AddView(combobox_); 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (combobox_model_.GetItemCount() > 0) { 1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->StartRow(1, 0); 1505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) example_shown_->SetLayoutManager(new FillLayout()); 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) example_shown_->AddChildView(combobox_model_.GetItemViewAt(0)); 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->AddView(example_shown_); 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->StartRow(0 /* no expand */, 0); 1565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->AddView(status_label_); 1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->AddPaddingRow(0, 5); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual ~ExamplesWindowContents() { 1614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Delete |combobox_| first as it references |combobox_model_|. 1624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) delete combobox_; 1634e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) combobox_ = NULL; 1644e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Prints a message in the status area, at the bottom of the window. 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetStatus(const std::string& status) { 1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) status_label_->SetText(base::UTF8ToUTF16(status)); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static ExamplesWindowContents* instance() { return instance_; } 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // WidgetDelegateView: 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanResize() const OVERRIDE { return true; } 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool CanMaximize() const OVERRIDE { return true; } 1771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool CanMinimize() const OVERRIDE { return true; } 1785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual base::string16 GetWindowTitle() const OVERRIDE { 1795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return base::ASCIIToUTF16("Views Examples"); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual View* GetContentsView() OVERRIDE { return this; } 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void WindowClosing() OVERRIDE { 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) instance_ = NULL; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (operation_ == QUIT_ON_CLOSE) 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::MessageLoopForUI::current()->Quit(); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // ComboboxListener: 1895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void OnPerformAction(Combobox* combobox) OVERRIDE { 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_EQ(combobox, combobox_); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(combobox->selected_index() < combobox_model_.GetItemCount()); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) example_shown_->RemoveAllChildViews(false); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) example_shown_->AddChildView(combobox_model_.GetItemViewAt( 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) combobox->selected_index())); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) example_shown_->RequestFocus(); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetStatus(std::string()); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Layout(); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static ExamplesWindowContents* instance_; 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ComboboxModelExampleList combobox_model_; 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Combobox* combobox_; 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) View* example_shown_; 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Label* status_label_; 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const Operation operation_; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ExamplesWindowContents); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ExamplesWindowContents* ExamplesWindowContents::instance_ = NULL; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void ShowExamplesWindow(Operation operation, 214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch gfx::NativeWindow window_context, 2155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ScopedExamples extra_examples) { 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ExamplesWindowContents::instance()) { 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExamplesWindowContents::instance()->GetWidget()->Activate(); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 2195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ScopedExamples examples(GetExamplesToShow(extra_examples.Pass())); 2205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Widget* widget = new Widget; 2215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) Widget::InitParams params; 2225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) params.delegate = new ExamplesWindowContents(operation, examples.Pass()); 2235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) params.context = window_context; 2245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) params.bounds = gfx::Rect(0, 0, 850, 300); 2255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) widget->Init(params); 2265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) widget->Show(); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void LogStatus(const std::string& string) { 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExamplesWindowContents::instance()->SetStatus(string); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace examples 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace views 236