- add sources.
[platform/framework/web/crosswalk.git] / src / ui / views / examples / tabbed_pane_example.cc
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.
4
5 #include "ui/views/examples/tabbed_pane_example.h"
6
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"
11
12 namespace views {
13 namespace examples {
14
15 TabbedPaneExample::TabbedPaneExample() : ExampleBase("Tabbed Pane") {
16 }
17
18 TabbedPaneExample::~TabbedPaneExample() {
19 }
20
21 void TabbedPaneExample::CreateExampleView(View* container) {
22   tabbed_pane_ = new TabbedPane(false);
23   tabbed_pane_->set_listener(this);
24   add_ = new LabelButton(this, ASCIIToUTF16("Add"));
25   add_at_ = new LabelButton(this, ASCIIToUTF16("Add At 1"));
26   select_at_ = new LabelButton(this, ASCIIToUTF16("Select At 1"));
27
28   GridLayout* layout = new GridLayout(container);
29   container->SetLayoutManager(layout);
30
31   const int tabbed_pane_column = 0;
32   ColumnSet* column_set = layout->AddColumnSet(tabbed_pane_column);
33   column_set->AddColumn(GridLayout::FILL, GridLayout::FILL,
34                         1.0f, GridLayout::USE_PREF, 0, 0);
35   layout->StartRow(1 /* expand */, tabbed_pane_column);
36   layout->AddView(tabbed_pane_);
37
38   // Create a few tabs with a button first.
39   AddButton("Tab 1");
40   AddButton("Tab 2");
41
42   // Add control buttons horizontally.
43   const int button_column = 1;
44   column_set = layout->AddColumnSet(button_column);
45   for (int i = 0; i < 3; i++) {
46     column_set->AddColumn(GridLayout::FILL, GridLayout::FILL,
47                           1.0f, GridLayout::USE_PREF, 0, 0);
48   }
49
50   layout->StartRow(0 /* no expand */, button_column);
51   layout->AddView(add_);
52   layout->AddView(add_at_);
53   layout->AddView(select_at_);
54 }
55
56 void TabbedPaneExample::ButtonPressed(Button* sender, const ui::Event& event) {
57   if (sender == add_) {
58     AddButton("Added");
59   } else if (sender == add_at_) {
60     const string16 label = ASCIIToUTF16("Added at 1");
61     tabbed_pane_->AddTabAtIndex(1, label, new LabelButton(NULL, label));
62   } else if (sender == select_at_) {
63     if (tabbed_pane_->GetTabCount() > 1)
64       tabbed_pane_->SelectTabAt(1);
65   }
66   PrintStatus();
67 }
68
69 void TabbedPaneExample::TabSelectedAt(int index) {
70   // Just print the status when selection changes.
71   PrintStatus();
72 }
73
74 void TabbedPaneExample::PrintStatus() {
75   ExampleBase::PrintStatus("Tab Count:%d, Selected Tab:%d",
76                            tabbed_pane_->GetTabCount(),
77                            tabbed_pane_->selected_tab_index());
78 }
79
80 void TabbedPaneExample::AddButton(const std::string& label) {
81   LabelButton* button = new LabelButton(NULL, ASCIIToUTF16(label));
82   tabbed_pane_->AddTab(ASCIIToUTF16(label), button);
83 }
84
85 }  // namespace examples
86 }  // namespace views