| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #ifndef VIEWS_CONTROLS_BUTTON_TEXT_BUTTON_H_ | 5 #ifndef VIEWS_CONTROLS_BUTTON_TEXT_BUTTON_H_ |
| 6 #define VIEWS_CONTROLS_BUTTON_TEXT_BUTTON_H_ | 6 #define VIEWS_CONTROLS_BUTTON_TEXT_BUTTON_H_ |
| 7 | 7 |
| 8 #include "gfx/font.h" | 8 #include "gfx/font.h" |
| 9 #include "third_party/skia/include/core/SkBitmap.h" | 9 #include "third_party/skia/include/core/SkBitmap.h" |
| 10 #include "third_party/skia/include/core/SkColor.h" | 10 #include "third_party/skia/include/core/SkColor.h" |
| 11 #include "views/border.h" | 11 #include "views/border.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 // | 64 // |
| 65 // TextButton | 65 // TextButton |
| 66 // | 66 // |
| 67 // A button which displays text and/or and icon that can be changed in | 67 // A button which displays text and/or and icon that can be changed in |
| 68 // response to actions. TextButton reserves space for the largest string | 68 // response to actions. TextButton reserves space for the largest string |
| 69 // passed to SetText. To reset the cached max size invoke ClearMaxTextSize. | 69 // passed to SetText. To reset the cached max size invoke ClearMaxTextSize. |
| 70 // | 70 // |
| 71 //////////////////////////////////////////////////////////////////////////////// | 71 //////////////////////////////////////////////////////////////////////////////// |
| 72 class TextButton : public CustomButton { | 72 class TextButton : public CustomButton { |
| 73 public: | 73 public: |
| 74 // Enumeration of how the prefix ('&') character is processed. The default |
| 75 // is |PREFIX_NONE|. |
| 76 enum PrefixType { |
| 77 // No special processing is done. |
| 78 PREFIX_NONE, |
| 79 |
| 80 // The character following the prefix character is not rendered specially. |
| 81 PREFIX_HIDE, |
| 82 |
| 83 // The character following the prefix character is underlined. |
| 84 PREFIX_SHOW |
| 85 }; |
| 86 |
| 74 TextButton(ButtonListener* listener, const std::wstring& text); | 87 TextButton(ButtonListener* listener, const std::wstring& text); |
| 75 virtual ~TextButton(); | 88 virtual ~TextButton(); |
| 76 | 89 |
| 77 // Call SetText once per string in your set of possible values at button | 90 // Call SetText once per string in your set of possible values at button |
| 78 // creation time, so that it can contain the largest of them and avoid | 91 // creation time, so that it can contain the largest of them and avoid |
| 79 // resizing the button when the text changes. | 92 // resizing the button when the text changes. |
| 80 virtual void SetText(const std::wstring& text); | 93 virtual void SetText(const std::wstring& text); |
| 81 std::wstring text() const { return text_; } | 94 std::wstring text() const { return text_; } |
| 82 | 95 |
| 83 enum TextAlignment { | 96 enum TextAlignment { |
| 84 ALIGN_LEFT, | 97 ALIGN_LEFT, |
| 85 ALIGN_CENTER, | 98 ALIGN_CENTER, |
| 86 ALIGN_RIGHT | 99 ALIGN_RIGHT |
| 87 }; | 100 }; |
| 88 | 101 |
| 89 void set_alignment(TextAlignment alignment) { alignment_ = alignment; } | 102 void set_alignment(TextAlignment alignment) { alignment_ = alignment; } |
| 90 | 103 |
| 104 void set_prefix_type(PrefixType type) { prefix_type_ = type; } |
| 105 |
| 91 // Sets the icon. | 106 // Sets the icon. |
| 92 void SetIcon(const SkBitmap& icon); | 107 void SetIcon(const SkBitmap& icon); |
| 93 SkBitmap icon() const { return icon_; } | 108 SkBitmap icon() const { return icon_; } |
| 94 void SetHoverIcon(const SkBitmap& icon); | 109 void SetHoverIcon(const SkBitmap& icon); |
| 95 SkBitmap icon_hover() const { return icon_hover_; } | 110 SkBitmap icon_hover() const { return icon_hover_; } |
| 96 | 111 |
| 97 // Meanings are reversed for right-to-left layouts. | 112 // Meanings are reversed for right-to-left layouts. |
| 98 enum IconPlacement { | 113 enum IconPlacement { |
| 99 ICON_ON_LEFT, | 114 ICON_ON_LEFT, |
| 100 ICON_ON_RIGHT | 115 ICON_ON_RIGHT |
| (...skipping 28 matching lines...) Expand all Loading... |
| 129 virtual gfx::Size GetMinimumSize(); | 144 virtual gfx::Size GetMinimumSize(); |
| 130 virtual void SetEnabled(bool enabled); | 145 virtual void SetEnabled(bool enabled); |
| 131 | 146 |
| 132 // Text colors. | 147 // Text colors. |
| 133 static const SkColor kEnabledColor; | 148 static const SkColor kEnabledColor; |
| 134 static const SkColor kHighlightColor; | 149 static const SkColor kHighlightColor; |
| 135 static const SkColor kDisabledColor; | 150 static const SkColor kDisabledColor; |
| 136 static const SkColor kHoverColor; | 151 static const SkColor kHoverColor; |
| 137 | 152 |
| 138 protected: | 153 protected: |
| 139 virtual bool OnMousePressed(const MouseEvent& e); | |
| 140 virtual void Paint(gfx::Canvas* canvas); | 154 virtual void Paint(gfx::Canvas* canvas); |
| 141 | 155 |
| 142 // Called when enabled or disabled state changes, or the colors for those | 156 // Called when enabled or disabled state changes, or the colors for those |
| 143 // states change. | 157 // states change. |
| 144 virtual void UpdateColor(); | 158 virtual void UpdateColor(); |
| 145 | 159 |
| 146 private: | 160 private: |
| 161 // Updates text_size_ and max_text_size_ from the current text/font. This is |
| 162 // invoked when the font or text changes. |
| 163 void UpdateTextSize(); |
| 164 |
| 147 // The text string that is displayed in the button. | 165 // The text string that is displayed in the button. |
| 148 std::wstring text_; | 166 std::wstring text_; |
| 149 | 167 |
| 150 // The size of the text string. | 168 // The size of the text string. |
| 151 gfx::Size text_size_; | 169 gfx::Size text_size_; |
| 152 | 170 |
| 153 // Track the size of the largest text string seen so far, so that | 171 // Track the size of the largest text string seen so far, so that |
| 154 // changing text_ will not resize the button boundary. | 172 // changing text_ will not resize the button boundary. |
| 155 gfx::Size max_text_size_; | 173 gfx::Size max_text_size_; |
| 156 | 174 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 182 // The width of the button will never be larger than this value. A value <= 0 | 200 // The width of the button will never be larger than this value. A value <= 0 |
| 183 // indicates the width is not constrained. | 201 // indicates the width is not constrained. |
| 184 int max_width_; | 202 int max_width_; |
| 185 | 203 |
| 186 // This is true if normal state has a border frame; default is false. | 204 // This is true if normal state has a border frame; default is false. |
| 187 bool normal_has_border_; | 205 bool normal_has_border_; |
| 188 | 206 |
| 189 // Whether or not to show the highlighted (i.e. hot) state. | 207 // Whether or not to show the highlighted (i.e. hot) state. |
| 190 bool show_highlighted_; | 208 bool show_highlighted_; |
| 191 | 209 |
| 210 PrefixType prefix_type_; |
| 211 |
| 192 DISALLOW_COPY_AND_ASSIGN(TextButton); | 212 DISALLOW_COPY_AND_ASSIGN(TextButton); |
| 193 }; | 213 }; |
| 194 | 214 |
| 195 } // namespace views | 215 } // namespace views |
| 196 | 216 |
| 197 #endif // VIEWS_CONTROLS_BUTTON_TEXT_BUTTON_H_ | 217 #endif // VIEWS_CONTROLS_BUTTON_TEXT_BUTTON_H_ |
| OLD | NEW |