summaryrefslogtreecommitdiffstats
path: root/views/examples
diff options
context:
space:
mode:
authoroshima@google.com <oshima@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-01 23:58:51 +0000
committeroshima@google.com <oshima@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-01 23:58:51 +0000
commitb9d79b23c4eb4f8bf09e1f67f245f58b1915ff19 (patch)
tree00c419dd57f67dee69794bce50a2bddc602d916b /views/examples
parentc9717965e7a4a38e4b3e0e30a33618ba35c372e3 (diff)
downloadchromium_src-b9d79b23c4eb4f8bf09e1f67f245f58b1915ff19.zip
chromium_src-b9d79b23c4eb4f8bf09e1f67f245f58b1915ff19.tar.gz
chromium_src-b9d79b23c4eb4f8bf09e1f67f245f58b1915ff19.tar.bz2
TextStyles in TextfieldViews
- TextStyle class that specify the styles. - Model owns TextStyle object. No need for client to manage memory. - It updates style list each time new item is added and resolves overlap so that Paint method can simply iterate and paint them. - I changed selection so that it simply changes background of the selected text. This seems to be how webkit does and is much simpler. URL decoration in omnibox Renamed ClearCompositionText -> CancelCompositionText No need to review changes to range. (http://codereview.chromium.org/7039051/) BUG=none TEST=added tests for textfield views. Review URL: http://codereview.chromium.org/7047023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87552 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/examples')
-rw-r--r--views/examples/textfield_example.cc24
-rw-r--r--views/examples/textfield_example.h12
2 files changed, 34 insertions, 2 deletions
diff --git a/views/examples/textfield_example.cc b/views/examples/textfield_example.cc
index 26c732d..f3553fe 100644
--- a/views/examples/textfield_example.cc
+++ b/views/examples/textfield_example.cc
@@ -5,7 +5,9 @@
#include "views/examples/textfield_example.h"
#include "base/utf_string_conversions.h"
+#include "ui/base/range/range.h"
#include "views/controls/label.h"
+#include "views/controls/textfield/text_style.h"
#include "views/controls/textfield/textfield.h"
#include "views/layout/grid_layout.h"
#include "views/view.h"
@@ -13,7 +15,10 @@
namespace examples {
TextfieldExample::TextfieldExample(ExamplesMain* main)
- : ExampleBase(main) {
+ : ExampleBase(main),
+ underline_(NULL),
+ strike_(NULL),
+ color_(NULL) {
}
TextfieldExample::~TextfieldExample() {
@@ -31,6 +36,7 @@ void TextfieldExample::CreateExampleView(views::View* container) {
clear_all_ = new views::TextButton(this, L"Clear All");
append_ = new views::TextButton(this, L"Append");
set_ = new views::TextButton(this, L"Set");
+ set_style_ = new views::TextButton(this, L"Set Styles");
name_->SetController(this);
password_->SetController(this);
@@ -56,6 +62,8 @@ void TextfieldExample::CreateExampleView(views::View* container) {
layout->AddView(append_);
layout->StartRow(0, 0);
layout->AddView(set_);
+ layout->StartRow(0, 0);
+ layout->AddView(set_style_);
}
void TextfieldExample::ContentsChanged(views::Textfield* sender,
@@ -84,6 +92,20 @@ void TextfieldExample::ButtonPressed(views::Button* sender,
name_->AppendText(WideToUTF16(L"[append]"));
} else if (sender == set_) {
name_->SetText(WideToUTF16(L"[set]"));
+ } else if (sender == set_style_) {
+ if (!underline_) {
+ color_ = name_->CreateTextStyle();
+ color_->set_foreground(SK_ColorYELLOW);
+ underline_ = name_->CreateTextStyle();
+ underline_->set_underline(true);
+ underline_->set_foreground(SK_ColorBLUE);
+ strike_ = name_->CreateTextStyle();
+ strike_->set_strike(true);
+ strike_->set_foreground(SK_ColorRED);
+ name_->ApplyTextStyle(color_, ui::Range(0, 11));
+ name_->ApplyTextStyle(underline_, ui::Range(1, 7));
+ name_->ApplyTextStyle(strike_, ui::Range(6, 9));
+ }
}
}
diff --git a/views/examples/textfield_example.h b/views/examples/textfield_example.h
index dc29842..faa9f46 100644
--- a/views/examples/textfield_example.h
+++ b/views/examples/textfield_example.h
@@ -15,6 +15,10 @@
#include "views/controls/textfield/textfield_controller.h"
#include "views/examples/example_base.h"
+namespace views {
+class TextStyle;
+}
+
namespace examples {
// TextfieldExample mimics login screen.
@@ -44,11 +48,17 @@ class TextfieldExample : public ExampleBase,
views::Textfield* name_;
views::Textfield* password_;
- // Buttons to show password text and to clear the textfields.
+ // Various buttons to control textfield.
views::TextButton* show_password_;
views::TextButton* clear_all_;
views::TextButton* append_;
views::TextButton* set_;
+ views::TextButton* set_style_;
+
+ // Text Styles
+ views::TextStyle* underline_;
+ views::TextStyle* strike_;
+ views::TextStyle* color_;
DISALLOW_COPY_AND_ASSIGN(TextfieldExample);
};