Index: views/controls/text_field.h |
=================================================================== |
--- views/controls/text_field.h (revision 17006) |
+++ views/controls/text_field.h (working copy) |
@@ -1,253 +0,0 @@ |
-// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// These classes define a text field widget that can be used in the views UI |
-// toolkit. |
- |
-#ifndef VIEWS_CONTROLS_TEXT_FIELD_H_ |
-#define VIEWS_CONTROLS_TEXT_FIELD_H_ |
- |
-#include <string> |
- |
-#include "app/gfx/font.h" |
-#include "base/basictypes.h" |
-#include "views/view.h" |
-#include "third_party/skia/include/core/SkColor.h" |
- |
-namespace views { |
- |
-class HWNDView; |
- |
-// This class implements a ChromeView that wraps a native text (edit) field. |
-class TextField : public View { |
- public: |
- // Keystroke provides a platform-dependent way to send keystroke events. |
- // Cross-platform code can use IsKeystrokeEnter/Escape to check for these |
- // two common key events. |
- // TODO(brettw) this should be cleaned up to be more cross-platform. |
-#if defined(OS_WIN) |
- struct Keystroke { |
- Keystroke(unsigned int m, |
- wchar_t k, |
- int r, |
- unsigned int f) |
- : message(m), |
- key(k), |
- repeat_count(r), |
- flags(f) { |
- } |
- |
- unsigned int message; |
- wchar_t key; |
- int repeat_count; |
- unsigned int flags; |
- }; |
-#else |
- struct Keystroke { |
- // TODO(brettw) figure out what this should be on GTK. |
- }; |
-#endif |
- |
- // This defines the callback interface for other code to be notified of |
- // changes in the state of a text field. |
- class Controller { |
- public: |
- // This method is called whenever the text in the field changes. |
- virtual void ContentsChanged(TextField* sender, |
- const std::wstring& new_contents) = 0; |
- |
- // This method is called to get notified about keystrokes in the edit. |
- // This method returns true if the message was handled and should not be |
- // processed further. If it returns false the processing continues. |
- virtual bool HandleKeystroke(TextField* sender, |
- const TextField::Keystroke& keystroke) = 0; |
- }; |
- |
- enum StyleFlags { |
- STYLE_DEFAULT = 0, |
- STYLE_PASSWORD = 1<<0, |
- STYLE_MULTILINE = 1<<1, |
- STYLE_LOWERCASE = 1<<2 |
- }; |
- |
- TextField() |
- : |
-#if defined(OS_WIN) |
- native_view_(NULL), |
-#endif |
- edit_(NULL), |
- controller_(NULL), |
- style_(STYLE_DEFAULT), |
- read_only_(false), |
- default_width_in_chars_(0), |
- draw_border_(true), |
- use_default_background_color_(true), |
- num_lines_(1) { |
- SetFocusable(true); |
- } |
- explicit TextField(StyleFlags style) |
- : |
-#if defined(OS_WIN) |
- native_view_(NULL), |
-#endif |
- edit_(NULL), |
- controller_(NULL), |
- style_(style), |
- read_only_(false), |
- default_width_in_chars_(0), |
- draw_border_(true), |
- use_default_background_color_(true), |
- num_lines_(1) { |
- SetFocusable(true); |
- } |
- virtual ~TextField(); |
- |
- void ViewHierarchyChanged(bool is_add, View* parent, View* child); |
- |
- // Overridden for layout purposes |
- virtual void Layout(); |
- virtual gfx::Size GetPreferredSize(); |
- |
- // Controller accessors |
- void SetController(Controller* controller); |
- Controller* GetController() const; |
- |
- void SetReadOnly(bool read_only); |
- bool IsReadOnly() const; |
- |
- bool IsPassword() const; |
- |
- // Whether the text field is multi-line or not, must be set when the text |
- // field is created, using StyleFlags. |
- bool IsMultiLine() const; |
- |
- virtual bool IsFocusable() const; |
- virtual void AboutToRequestFocusFromTabTraversal(bool reverse); |
- |
- // Overridden from Chrome::View. |
- virtual bool SkipDefaultKeyEventProcessing(const KeyEvent& e); |
- |
-#if defined(OS_WIN) |
- virtual HWND GetNativeComponent(); |
-#endif |
- |
- // Returns the text currently displayed in the text field. |
- std::wstring GetText() const; |
- |
- // Sets the text currently displayed in the text field. |
- void SetText(const std::wstring& text); |
- |
- // Appends the given string to the previously-existing text in the field. |
- void AppendText(const std::wstring& text); |
- |
- virtual void Focus(); |
- |
- // Causes the edit field to be fully selected. |
- void SelectAll(); |
- |
- // Clears the selection within the edit field and sets the caret to the end. |
- void ClearSelection() const; |
- |
- StyleFlags GetStyle() const { return style_; } |
- |
- void SetBackgroundColor(SkColor color); |
- void SetDefaultBackgroundColor(); |
- |
- // Set the font. |
- void SetFont(const gfx::Font& font); |
- |
- // Return the font used by this TextField. |
- gfx::Font GetFont() const; |
- |
- // Sets the left and right margin (in pixels) within the text box. On Windows |
- // this is accomplished by packing the left and right margin into a single |
- // 32 bit number, so the left and right margins are effectively 16 bits. |
- bool SetHorizontalMargins(int left, int right); |
- |
- // Should only be called on a multi-line text field. Sets how many lines of |
- // text can be displayed at once by this text field. |
- void SetHeightInLines(int num_lines); |
- |
- // Sets the default width of the text control. See default_width_in_chars_. |
- void set_default_width_in_chars(int default_width) { |
- default_width_in_chars_ = default_width; |
- } |
- |
- // Removes the border from the edit box, giving it a 2D look. |
- void RemoveBorder(); |
- |
- // Disable the edit control. |
- // NOTE: this does NOT change the read only property. |
- void SetEnabled(bool enabled); |
- |
- // Provides a cross-platform way of checking whether a keystroke is one of |
- // these common keys. Most code only checks keystrokes against these two keys, |
- // so the caller can be cross-platform by implementing the platform-specific |
- // parts in here. |
- // TODO(brettw) we should use a more cross-platform representation of |
- // keyboard events so these are not necessary. |
- static bool IsKeystrokeEnter(const Keystroke& key); |
- static bool IsKeystrokeEscape(const Keystroke& key); |
- |
- private: |
- class Edit; |
- |
- // Invoked by the edit control when the value changes. This method set |
- // the text_ member variable to the value contained in edit control. |
- // This is important because the edit control can be replaced if it has |
- // been deleted during a window close. |
- void SyncText(); |
- |
- // Reset the text field native control. |
- void ResetNativeControl(); |
- |
- // Resets the background color of the edit. |
- void UpdateEditBackgroundColor(); |
- |
-#if defined(OS_WIN) |
- // This encapsulates the HWND of the native text field. |
- HWNDView* native_view_; |
-#endif |
- |
- // This inherits from the native text field. |
- Edit* edit_; |
- |
- // This is the current listener for events from this control. |
- Controller* controller_; |
- |
- StyleFlags style_; |
- |
- gfx::Font font_; |
- |
- // NOTE: this is temporary until we rewrite TextField to always work whether |
- // there is an HWND or not. |
- // Used if the HWND hasn't been created yet. |
- std::wstring text_; |
- |
- bool read_only_; |
- |
- // The default number of average characters for the width of this text field. |
- // This will be reported as the "desired size". Defaults to 0. |
- int default_width_in_chars_; |
- |
- // Whether the border is drawn. |
- bool draw_border_; |
- |
- SkColor background_color_; |
- |
- bool use_default_background_color_; |
- |
- // The number of lines of text this textfield displays at once. |
- int num_lines_; |
- |
- protected: |
- // Calculates the insets for the text field. |
- void CalculateInsets(gfx::Insets* insets); |
- |
- DISALLOW_COPY_AND_ASSIGN(TextField); |
-}; |
- |
-} // namespace views |
- |
-#endif // VIEWS_CONTROLS_TEXT_FIELD_H_ |