Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Side by Side Diff: ui/views/examples/button_example.cc

Issue 11068012: Add new views::LabelButton and LabelButtonBorder. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove stray semicolon. Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/views/examples/button_example.h ('k') | ui/views/views.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/examples/button_example.h" 5 #include "ui/views/examples/button_example.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "grit/ui_resources.h" 8 #include "grit/ui_resources.h"
9 #include "ui/base/resource/resource_bundle.h" 9 #include "ui/base/resource/resource_bundle.h"
10 #include "ui/gfx/image/image.h" 10 #include "ui/gfx/image/image.h"
11 #include "ui/views/controls/button/image_button.h" 11 #include "ui/views/controls/button/image_button.h"
12 #include "ui/views/controls/button/text_button.h" 12 #include "ui/views/controls/button/text_button.h"
13 #include "ui/views/layout/box_layout.h" 13 #include "ui/views/layout/box_layout.h"
14 #include "ui/views/view.h" 14 #include "ui/views/view.h"
15 15
16 namespace { 16 namespace {
17 const int kLayoutSpacing = 10; // pixels 17 const int kLayoutSpacing = 10; // pixels
18 } // namespace 18 } // namespace
19 19
20 namespace views { 20 namespace views {
21 namespace examples { 21 namespace examples {
22 22
23 ButtonExample::ButtonExample() 23 ButtonExample::ButtonExample()
24 : ExampleBase("Button"), 24 : ExampleBase("Button"),
25 text_button_(NULL), 25 text_button_(NULL),
26 label_button_(NULL),
26 image_button_(NULL), 27 image_button_(NULL),
27 alignment_(TextButton::ALIGN_LEFT), 28 alignment_(TextButton::ALIGN_LEFT),
28 use_native_theme_border_(false), 29 use_native_theme_border_(false),
29 icon_(NULL), 30 icon_(NULL),
30 count_(0) { 31 count_(0) {
31 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 32 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
32 icon_ = rb.GetImageNamed(IDR_CLOSE_SA_H).ToImageSkia(); 33 icon_ = rb.GetImageNamed(IDR_CLOSE_SA_H).ToImageSkia();
33 } 34 }
34 35
35 ButtonExample::~ButtonExample() { 36 ButtonExample::~ButtonExample() {
36 } 37 }
37 38
38 void ButtonExample::CreateExampleView(View* container) { 39 void ButtonExample::CreateExampleView(View* container) {
39 container->SetLayoutManager( 40 container->SetLayoutManager(
40 new BoxLayout(BoxLayout::kVertical, 0, 0, kLayoutSpacing)); 41 new BoxLayout(BoxLayout::kVertical, 0, 0, kLayoutSpacing));
41 42
42 text_button_ = new TextButton(this, ASCIIToUTF16("Text Button")); 43 text_button_ = new TextButton(this, ASCIIToUTF16("Text Button"));
44 text_button_->set_focusable(true);
45 text_button_->SetHoverColor(SK_ColorRED);
43 container->AddChildView(text_button_); 46 container->AddChildView(text_button_);
44 47
48 label_button_ = new LabelButton(this, ASCIIToUTF16("Label Button"));
49 label_button_->set_focusable(true);
50 label_button_->SetTextColor(CustomButton::BS_HOT, SK_ColorRED);
51 container->AddChildView(label_button_);
52
45 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 53 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
46 image_button_ = new ImageButton(this); 54 image_button_ = new ImageButton(this);
55 image_button_->set_focusable(true);
47 image_button_->SetImage(ImageButton::BS_NORMAL, 56 image_button_->SetImage(ImageButton::BS_NORMAL,
48 rb.GetImageNamed(IDR_CLOSE).ToImageSkia()); 57 rb.GetImageNamed(IDR_CLOSE).ToImageSkia());
49 image_button_->SetImage(ImageButton::BS_HOT, 58 image_button_->SetImage(ImageButton::BS_HOT,
50 rb.GetImageNamed(IDR_CLOSE_H).ToImageSkia()); 59 rb.GetImageNamed(IDR_CLOSE_H).ToImageSkia());
51 image_button_->SetImage(ImageButton::BS_PUSHED, 60 image_button_->SetImage(ImageButton::BS_PUSHED,
52 rb.GetImageNamed(IDR_CLOSE_P).ToImageSkia()); 61 rb.GetImageNamed(IDR_CLOSE_P).ToImageSkia());
53 image_button_->SetOverlayImage(rb.GetImageNamed( 62 image_button_->SetOverlayImage(rb.GetImageNamed(
54 IDR_MENU_CHECK).ToImageSkia()); 63 IDR_MENU_CHECK).ToImageSkia());
55 container->AddChildView(image_button_); 64 container->AddChildView(image_button_);
56 } 65 }
57 66
58 void ButtonExample::ButtonPressed(Button* sender, const ui::Event& event) { 67 void ButtonExample::TextButtonPressed(const ui::Event& event) {
59 PrintStatus("Pressed! count: %d", ++count_); 68 PrintStatus("Text Button Pressed! count: %d", ++count_);
60
61 if (event.IsControlDown()) { 69 if (event.IsControlDown()) {
62 if (event.IsShiftDown()) { 70 if (event.IsShiftDown()) {
63 if (event.IsAltDown()) { 71 if (event.IsAltDown()) {
64 text_button_->SetMultiLine(!text_button_->multi_line()); 72 text_button_->SetMultiLine(!text_button_->multi_line());
65 if (text_button_->multi_line()) { 73 if (text_button_->multi_line()) {
66 text_button_->SetText(ASCIIToUTF16("Multi-line text\n") + 74 text_button_->SetText(ASCIIToUTF16("Multi-line text\n") +
67 ASCIIToUTF16("is here to stay all the way!\n") + 75 ASCIIToUTF16("is here to stay all the way!\n") +
68 ASCIIToUTF16("123")); 76 ASCIIToUTF16("123"));
69 } else { 77 } else {
70 text_button_->SetText(ASCIIToUTF16("Button")); 78 text_button_->SetText(ASCIIToUTF16("Text Button"));
71 } 79 }
72 } else { 80 } else {
73 switch (text_button_->icon_placement()) { 81 switch (text_button_->icon_placement()) {
74 case TextButton::ICON_ON_LEFT: 82 case TextButton::ICON_ON_LEFT:
75 text_button_->set_icon_placement(TextButton::ICON_ON_RIGHT); 83 text_button_->set_icon_placement(TextButton::ICON_ON_RIGHT);
76 break; 84 break;
77 case TextButton::ICON_ON_RIGHT: 85 case TextButton::ICON_ON_RIGHT:
78 text_button_->set_icon_placement(TextButton::ICON_ON_LEFT); 86 text_button_->set_icon_placement(TextButton::ICON_ON_LEFT);
79 break; 87 break;
80 case TextButton::ICON_CENTERED: 88 case TextButton::ICON_CENTERED:
(...skipping 15 matching lines...) Expand all
96 alignment_ = TextButton::ALIGN_RIGHT; 104 alignment_ = TextButton::ALIGN_RIGHT;
97 break; 105 break;
98 case TextButton::ALIGN_RIGHT: 106 case TextButton::ALIGN_RIGHT:
99 alignment_ = TextButton::ALIGN_LEFT; 107 alignment_ = TextButton::ALIGN_LEFT;
100 break; 108 break;
101 } 109 }
102 text_button_->set_alignment(alignment_); 110 text_button_->set_alignment(alignment_);
103 } 111 }
104 } else if (event.IsShiftDown()) { 112 } else if (event.IsShiftDown()) {
105 if (event.IsAltDown()) { 113 if (event.IsAltDown()) {
106 if (text_button_->text().length() < 10) { 114 if (text_button_->text().length() < 20) {
107 text_button_->SetText( 115 text_button_->SetText(
108 ASCIIToUTF16("Startof") + 116 ASCIIToUTF16("Startof") +
109 ASCIIToUTF16("ReallyReallyReallyReallyReallyReallyReally") + 117 ASCIIToUTF16("ReallyReallyReallyReallyReallyReallyReally") +
110 ASCIIToUTF16("ReallyReallyReallyReallyReallyReallyReally") + 118 ASCIIToUTF16("ReallyReallyReallyReallyReallyReallyReally") +
111 ASCIIToUTF16("ReallyReallyReallyReallyReallyReallyReally") + 119 ASCIIToUTF16("ReallyReallyReallyReallyReallyReallyReally") +
112 ASCIIToUTF16("LongButtonText")); 120 ASCIIToUTF16("LongButtonText"));
113 } else { 121 } else {
114 text_button_->SetText(ASCIIToUTF16("Button")); 122 text_button_->SetText(ASCIIToUTF16("Text Button"));
115 } 123 }
116 } else { 124 } else {
117 use_native_theme_border_ = !use_native_theme_border_; 125 use_native_theme_border_ = !use_native_theme_border_;
118 if (use_native_theme_border_) 126 if (use_native_theme_border_)
119 text_button_->set_border(new TextButtonNativeThemeBorder(text_button_)); 127 text_button_->set_border(new TextButtonNativeThemeBorder(text_button_));
120 else 128 else
121 text_button_->set_border(new TextButtonBorder()); 129 text_button_->set_border(new TextButtonBorder());
122 } 130 }
123 } else if (event.IsAltDown()) { 131 } else if (event.IsAltDown()) {
124 text_button_->SetIsDefault(!text_button_->is_default()); 132 text_button_->SetIsDefault(!text_button_->is_default());
133 } else {
134 text_button_->ClearMaxTextSize();
125 } 135 }
126 example_view()->GetLayoutManager()->Layout(example_view()); 136 example_view()->GetLayoutManager()->Layout(example_view());
127 } 137 }
128 138
139 void ButtonExample::LabelButtonPressed(const ui::Event& event) {
140 PrintStatus("Label Button Pressed! count: %d", ++count_);
141 if (event.IsControlDown()) {
142 if (event.IsShiftDown()) {
143 if (event.IsAltDown()) {
144 label_button_->SetTextMultiLine(!label_button_->GetTextMultiLine());
145 label_button_->SetText(ASCIIToUTF16(label_button_->GetTextMultiLine() ?
146 "Multi-line text\nis here to stay all the way!\n123" :
147 "Label Button"));
148 } else {
149 label_button_->SetText(!label_button_->GetText().empty() ?
150 string16() : ASCIIToUTF16("Label Button"));
151 }
152 } else if (event.IsAltDown()) {
153 label_button_->SetImage(CustomButton::BS_NORMAL,
154 label_button_->GetImage(CustomButton::BS_NORMAL).isNull() ?
155 *icon_ : gfx::ImageSkia());
156 } else {
157 label_button_->SetHorizontalAlignment(static_cast<Label::Alignment>(
158 (label_button_->GetHorizontalAlignment() + 1) % 3));
159 }
160 } else if (event.IsShiftDown()) {
161 if (event.IsAltDown()) {
162 label_button_->SetText(ASCIIToUTF16(
163 label_button_->GetText().length() > 20 ? "Label Button" :
164 "StartofReallyReallyReallyReallyReallyReallyReally"
165 "ReallyReallyReallyReallyReallyReallyReally"
166 "ReallyReallyReallyReallyReallyReallyReallyLongButtonText"));
167 } else {
168 label_button_->SetNativeTheme(!label_button_->native_theme());
169 }
170 } else if (event.IsAltDown()) {
171 label_button_->SetDefaultButton(!label_button_->default_button());
172 } else {
173 label_button_->set_min_size(gfx::Size());
174 }
175 example_view()->GetLayoutManager()->Layout(example_view());
176 }
177
178 void ButtonExample::ButtonPressed(Button* sender, const ui::Event& event) {
179 if (sender == text_button_)
180 TextButtonPressed(event);
181 else if (sender == label_button_)
182 LabelButtonPressed(event);
183 else
184 PrintStatus("Image Button Pressed! count: %d", ++count_);
185 }
186
129 } // namespace examples 187 } // namespace examples
130 } // namespace views 188 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/examples/button_example.h ('k') | ui/views/views.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698