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 3 // found in the LICENSE file. 4 5 #include "ui/views/examples/combobox_example.h" 6 7 #include <memory> 8 9 #include "base/strings/stringprintf.h" 10 #include "base/strings/utf_string_conversions.h" 11 #include "ui/gfx/geometry/insets.h" 12 #include "ui/views/controls/combobox/combobox.h" 13 #include "ui/views/examples/examples_window.h" 14 #include "ui/views/layout/box_layout.h" 15 16 namespace views { 17 namespace examples { 18 19 namespace { 20 21 // A combobox model implementation that generates a list of "Item <index>". 22 class ComboboxModelExample : public ui::ComboboxModel { 23 public: 24 ComboboxModelExample() = default; 25 ~ComboboxModelExample() override = default; 26 27 private: 28 // ui::ComboboxModel: GetItemCount() const29 int GetItemCount() const override { return 10; } GetItemAt(int index)30 base::string16 GetItemAt(int index) override { 31 return base::UTF8ToUTF16(base::StringPrintf("%c item", 'A' + index)); 32 } 33 34 DISALLOW_COPY_AND_ASSIGN(ComboboxModelExample); 35 }; 36 37 } // namespace 38 ComboboxExample()39ComboboxExample::ComboboxExample() : ExampleBase("Combo Box") {} 40 41 ComboboxExample::~ComboboxExample() = default; 42 CreateExampleView(View * container)43void ComboboxExample::CreateExampleView(View* container) { 44 combobox_ = new Combobox(std::make_unique<ComboboxModelExample>()); 45 combobox_->set_listener(this); 46 combobox_->SetSelectedIndex(3); 47 48 auto* disabled_combobox = 49 new Combobox(std::make_unique<ComboboxModelExample>()); 50 disabled_combobox->set_listener(this); 51 disabled_combobox->SetSelectedIndex(4); 52 disabled_combobox->SetEnabled(false); 53 54 container->SetLayoutManager(std::make_unique<BoxLayout>( 55 BoxLayout::Orientation::kVertical, gfx::Insets(10, 0), 5)); 56 container->AddChildView(combobox_); 57 container->AddChildView(disabled_combobox); 58 } 59 OnPerformAction(Combobox * combobox)60void ComboboxExample::OnPerformAction(Combobox* combobox) { 61 DCHECK_EQ(combobox, combobox_); 62 PrintStatus("Selected: %s", 63 base::UTF16ToUTF8( 64 combobox->model()->GetItemAt(combobox->GetSelectedIndex())) 65 .c_str()); 66 } 67 68 } // namespace examples 69 } // namespace views 70