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
3 // found in the LICENSE file.
5 #include "ui/views/examples/tabbed_pane_example.h"
7 #include "base/strings/utf_string_conversions.h"
8 #include "ui/views/controls/button/label_button.h"
9 #include "ui/views/controls/tabbed_pane/tabbed_pane.h"
10 #include "ui/views/layout/grid_layout.h"
12 using base::ASCIIToUTF16
;
17 TabbedPaneExample::TabbedPaneExample() : ExampleBase("Tabbed Pane") {
20 TabbedPaneExample::~TabbedPaneExample() {
23 void TabbedPaneExample::CreateExampleView(View
* container
) {
24 tabbed_pane_
= new TabbedPane();
25 tabbed_pane_
->set_listener(this);
26 add_
= new LabelButton(this, ASCIIToUTF16("Add"));
27 add_at_
= new LabelButton(this, ASCIIToUTF16("Add At 1"));
28 select_at_
= new LabelButton(this, ASCIIToUTF16("Select At 1"));
30 GridLayout
* layout
= new GridLayout(container
);
31 container
->SetLayoutManager(layout
);
33 const int tabbed_pane_column
= 0;
34 ColumnSet
* column_set
= layout
->AddColumnSet(tabbed_pane_column
);
35 column_set
->AddColumn(GridLayout::FILL
, GridLayout::FILL
,
36 1.0f
, GridLayout::USE_PREF
, 0, 0);
37 layout
->StartRow(1 /* expand */, tabbed_pane_column
);
38 layout
->AddView(tabbed_pane_
);
40 // Create a few tabs with a button first.
44 // Add control buttons horizontally.
45 const int button_column
= 1;
46 column_set
= layout
->AddColumnSet(button_column
);
47 for (int i
= 0; i
< 3; i
++) {
48 column_set
->AddColumn(GridLayout::FILL
, GridLayout::FILL
,
49 1.0f
, GridLayout::USE_PREF
, 0, 0);
52 layout
->StartRow(0 /* no expand */, button_column
);
53 layout
->AddView(add_
);
54 layout
->AddView(add_at_
);
55 layout
->AddView(select_at_
);
58 void TabbedPaneExample::ButtonPressed(Button
* sender
, const ui::Event
& event
) {
61 } else if (sender
== add_at_
) {
62 const base::string16 label
= ASCIIToUTF16("Added at 1");
63 tabbed_pane_
->AddTabAtIndex(1, label
, new LabelButton(NULL
, label
));
64 } else if (sender
== select_at_
) {
65 if (tabbed_pane_
->GetTabCount() > 1)
66 tabbed_pane_
->SelectTabAt(1);
71 void TabbedPaneExample::TabSelectedAt(int index
) {
72 // Just print the status when selection changes.
76 void TabbedPaneExample::PrintStatus() {
77 ExampleBase::PrintStatus("Tab Count:%d, Selected Tab:%d",
78 tabbed_pane_
->GetTabCount(),
79 tabbed_pane_
->selected_tab_index());
82 void TabbedPaneExample::AddButton(const std::string
& label
) {
83 LabelButton
* button
= new LabelButton(NULL
, ASCIIToUTF16(label
));
84 tabbed_pane_
->AddTab(ASCIIToUTF16(label
), button
);
87 } // namespace examples