OLD | NEW |
| (Empty) |
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 "views/examples/table_example.h" | |
6 | |
7 #include <vector> | |
8 | |
9 #include "base/utf_string_conversions.h" | |
10 #include "third_party/skia/include/core/SkCanvas.h" | |
11 #include "views/controls/button/checkbox.h" | |
12 #include "views/layout/grid_layout.h" | |
13 | |
14 namespace examples { | |
15 | |
16 TableExample::TableExample(ExamplesMain* main) | |
17 : ExampleBase(main, "Table") { | |
18 } | |
19 | |
20 TableExample::~TableExample() { | |
21 } | |
22 | |
23 void TableExample::CreateExampleView(views::View* container) { | |
24 column1_visible_checkbox_ = new views::Checkbox( | |
25 ASCIIToUTF16("Fruit column visible")); | |
26 column1_visible_checkbox_->SetChecked(true); | |
27 column1_visible_checkbox_->set_listener(this); | |
28 column2_visible_checkbox_ = new views::Checkbox( | |
29 ASCIIToUTF16("Color column visible")); | |
30 column2_visible_checkbox_->SetChecked(true); | |
31 column2_visible_checkbox_->set_listener(this); | |
32 column3_visible_checkbox_ = new views::Checkbox( | |
33 ASCIIToUTF16("Origin column visible")); | |
34 column3_visible_checkbox_->SetChecked(true); | |
35 column3_visible_checkbox_->set_listener(this); | |
36 column4_visible_checkbox_ = new views::Checkbox( | |
37 ASCIIToUTF16("Price column visible")); | |
38 column4_visible_checkbox_->SetChecked(true); | |
39 column4_visible_checkbox_->set_listener(this); | |
40 | |
41 views::GridLayout* layout = new views::GridLayout(container); | |
42 container->SetLayoutManager(layout); | |
43 | |
44 std::vector<ui::TableColumn> columns; | |
45 columns.push_back(ui::TableColumn(0, L"Fruit", ui::TableColumn::LEFT, 100)); | |
46 columns.push_back(ui::TableColumn(1, L"Color", ui::TableColumn::LEFT, 100)); | |
47 columns.push_back(ui::TableColumn(2, L"Origin", ui::TableColumn::LEFT, 100)); | |
48 columns.push_back(ui::TableColumn(3, L"Price", ui::TableColumn::LEFT, 100)); | |
49 table_ = new views::TableView(this, columns, views::ICON_AND_TEXT, | |
50 true, true, true); | |
51 table_->SetObserver(this); | |
52 icon1_.setConfig(SkBitmap::kARGB_8888_Config, 16, 16); | |
53 icon1_.allocPixels(); | |
54 SkCanvas canvas1(icon1_); | |
55 canvas1.drawColor(SK_ColorRED); | |
56 | |
57 icon2_.setConfig(SkBitmap::kARGB_8888_Config, 16, 16); | |
58 icon2_.allocPixels(); | |
59 SkCanvas canvas2(icon2_); | |
60 canvas2.drawColor(SK_ColorBLUE); | |
61 | |
62 views::ColumnSet* column_set = layout->AddColumnSet(0); | |
63 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, | |
64 views::GridLayout::USE_PREF, 0, 0); | |
65 layout->StartRow(1 /* expand */, 0); | |
66 layout->AddView(table_); | |
67 | |
68 column_set = layout->AddColumnSet(1); | |
69 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, | |
70 0.5f, views::GridLayout::USE_PREF, 0, 0); | |
71 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, | |
72 0.5f, views::GridLayout::USE_PREF, 0, 0); | |
73 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, | |
74 0.5f, views::GridLayout::USE_PREF, 0, 0); | |
75 column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, | |
76 0.5f, views::GridLayout::USE_PREF, 0, 0); | |
77 | |
78 layout->StartRow(0 /* no expand */, 1); | |
79 | |
80 layout->AddView(column1_visible_checkbox_); | |
81 layout->AddView(column2_visible_checkbox_); | |
82 layout->AddView(column3_visible_checkbox_); | |
83 layout->AddView(column4_visible_checkbox_); | |
84 } | |
85 | |
86 int TableExample::RowCount() { | |
87 return 10; | |
88 } | |
89 | |
90 string16 TableExample::GetText(int row, int column_id) { | |
91 const char* const cells[5][4] = { | |
92 { "Orange", "Orange", "South america", "$5" }, | |
93 { "Apple", "Green", "Canada", "$3" }, | |
94 { "Blue berries", "Blue", "Mexico", "$10.3" }, | |
95 { "Strawberries", "Red", "California", "$7" }, | |
96 { "Cantaloupe", "Orange", "South america", "$5" }, | |
97 }; | |
98 return ASCIIToUTF16(cells[row % 5][column_id]); | |
99 } | |
100 | |
101 SkBitmap TableExample::GetIcon(int row) { | |
102 return row % 2 ? icon1_ : icon2_; | |
103 } | |
104 | |
105 void TableExample::SetObserver(ui::TableModelObserver* observer) {} | |
106 | |
107 void TableExample::OnSelectionChanged() { | |
108 PrintStatus("Selection changed"); | |
109 } | |
110 | |
111 void TableExample::OnDoubleClick() {} | |
112 | |
113 void TableExample::OnMiddleClick() {} | |
114 | |
115 void TableExample::OnKeyDown(ui::KeyboardCode virtual_keycode) {} | |
116 | |
117 void TableExample::OnTableViewDelete(views::TableView* table_view) {} | |
118 | |
119 void TableExample::OnTableView2Delete(views::TableView2* table_view) {} | |
120 | |
121 void TableExample::ButtonPressed(views::Button* sender, | |
122 const views::Event& event) { | |
123 int index = 0; | |
124 bool show = true; | |
125 if (sender == column1_visible_checkbox_) { | |
126 index = 0; | |
127 show = column1_visible_checkbox_->checked(); | |
128 } else if (sender == column2_visible_checkbox_) { | |
129 index = 1; | |
130 show = column2_visible_checkbox_->checked(); | |
131 } else if (sender == column3_visible_checkbox_) { | |
132 index = 2; | |
133 show = column3_visible_checkbox_->checked(); | |
134 } else if (sender == column4_visible_checkbox_) { | |
135 index = 3; | |
136 show = column4_visible_checkbox_->checked(); | |
137 } | |
138 table_->SetColumnVisibility(index, show); | |
139 } | |
140 | |
141 } // namespace examples | |
OLD | NEW |