Index: views/controls/textfield/textfield_view.h |
=================================================================== |
--- views/controls/textfield/textfield_view.h (revision 0) |
+++ views/controls/textfield/textfield_view.h (revision 0) |
@@ -0,0 +1,88 @@ |
+// Copyright (c) 2010 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. |
+ |
+#ifndef VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEW_H_ |
+#define VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEW_H_ |
+#pragma once |
+ |
+#include <algorithm> |
+ |
+#include "gfx/canvas.h" |
+#include "views/controls/label.h" |
+#include "views/controls/textfield/textfield_model.h" |
+#include "views/event.h" |
+#include "views/view.h" |
+ |
+namespace views { |
+ |
+// View for a MVC of a single line textfield. The textfield inherits from Label |
+// to re-use its font and color related code. |
+class TextfieldView : public Label { |
+ public: |
+ TextfieldView(); |
+ explicit TextfieldView(const std::wstring& text); |
+ explicit TextfieldView(TextfieldModel* model); |
+ |
+ virtual void SetController(TextfieldController* controller); |
+ // Returns the rectangle in which the text can be painted. This is essentially |
+ // the bounds of the view minus the border (insets) width. |
+ gfx::Rect GetTextBounds(); |
+ |
+ |
+ // View Overrides. Refer to view.h for documentation. |
+ virtual bool SkipDefaultKeyEventProcessing(const views::KeyEvent& e); |
+ virtual bool OnMousePressed(const views::MouseEvent& e); |
+ virtual bool OnMouseDragged(const views::MouseEvent& e); |
+ virtual void OnMouseReleased(const views::MouseEvent& e, bool canceled); |
+ virtual bool OnKeyPressed(const views::KeyEvent& e); |
+ virtual bool OnKeyReleased(const views::KeyEvent& e); |
+ virtual void Paint(gfx::Canvas* canvas); |
+ virtual void WillGainFocus(); |
+ virtual void DidGainFocus(); |
+ virtual void WillLoseFocus(); |
+ virtual std::wstring GetText(); |
+ |
+ // Getters |
+ int onscreen_cursor_pos() { return onscreen_cursor_pos_; } |
+ std::wstring visible_text() { return visible_text_; } |
+ |
+ static const char kViewClassName[]; |
+ |
+ private: |
+ // Computes the portion of string that can be painted to the left of cursor. |
+ std::wstring GetStringToLeftOfCursor(std::wstring text, int cursor_pos, |
+ int onscreen_cursor_pos, gfx::Rect text_bounds); |
+ |
+ // Computes the portion of string that can be painted to the left of cursor. |
+ std::wstring GetStringToRightOfCursor(std::wstring text, int cursor_pos, |
+ int onscreen_cursor_pos, gfx::Rect text_bounds); |
+ |
+ // Utility function. Gets the character corresponding to a key event. |
+ wchar_t GetWritableChar(const KeyEvent& key_event); |
+ |
+ // Utility function. Gets the character corresponding to a key_code. |
+ wchar_t GetWritableChar(base::KeyboardCode key_code, bool shift); |
+ bool HandleKeyEvent(const KeyEvent& key_event); |
+ void Init(const std::wstring& text); |
+ bool IsDirectionalKey(base::KeyboardCode key_code); |
+ bool IsWritable(base::KeyboardCode key_code); |
+ void PaintTextAndCursor(gfx::Canvas* canvas); |
+ |
+ // Safely increments the onscreen position of the cursor (making sure it does |
+ // not exceeds the view bounds). |
+ void SafeIncCursorPos(int inc); |
+ |
+ // Safely decrements the onscreen position of the cursor (making sure it does |
+ // not go below 0). |
+ void SafeDecCursorPos(int dec); |
+ |
+ scoped_ptr<TextfieldModel> model_; |
+ scoped_ptr<TextfieldController> controller_; |
+ std::wstring visible_text_; |
+ bool selection_on_; |
+ int selection_start_; |
+ int onscreen_cursor_pos_; |
+}; |
+}; |
+#endif // VIEWS_CONTROLS_TEXTFIELD_TEXTFIELD_VIEW_H_ |
Property changes on: views/controls/textfield/textfield_view.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |