text: // 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.
  
  #ifndef VIEWS_CONTROLS_TEXTFIELD_NATIVE_TEXTFIELD_WRAPPER_H_
  #define VIEWS_CONTROLS_TEXTFIELD_NATIVE_TEXTFIELD_WRAPPER_H_
  
  #include "base/gfx/native_widget_types.h"
  
  namespace views {
  
  class Textfield;
  class View;
  
  // An interface implemented by an object that provides a platform-native
  // text field.
  class NativeTextfieldWrapper {
   public:
    // The Textfield calls this when it is destroyed to clean up the wrapper
    // object.
    virtual ~NativeTextfieldWrapper() {}
  
    // Gets the text displayed in the wrapped native text field.
    virtual std::wstring GetText() const = 0;
    
    // Updates the text displayed with the text held by the Textfield.
    virtual void UpdateText() = 0;
  
    // Adds the specified text to the text already displayed by the wrapped native
    // text field.
    virtual void AppendText(const std::wstring& text) = 0;
  
    // Gets the text that is selected in the wrapped native text field.
    virtual std::wstring GetSelectedText() const = 0;
  
    // Selects all the text in the edit.  Use this in place of SetSelAll() to
    // avoid selecting the "phantom newline" at the end of the edit.
    virtual void SelectAll() = 0;
  
    // Clears the selection within the edit field and sets the caret to the end.
    virtual void ClearSelection() = 0;
  
    // Updates the border display for the native text field with the state desired
    // by the Textfield.
    virtual void UpdateBorder() = 0;
  
    // Updates the background color used when painting the native text field.
    virtual void UpdateBackgroundColor() = 0;
  
    // Updates the read-only state of the native text field.
    virtual void UpdateReadOnly() = 0;
  
    // Updates the font used to render text in the native text field.
    virtual void UpdateFont() = 0;
  
    // Updates the enabled state of the native text field.
    virtual void UpdateEnabled() = 0;
  
    // Sets the horizontal margins for the native text field.
    virtual void SetHorizontalMargins(int left, int right) = 0;
  
    // Sets the focus to the text field.
    virtual void SetFocus() = 0;
  
    // Retrieves the views::View that hosts the native control.
    virtual View* GetView() = 0;
  
    // Returns a handle to the underlying native view for testing.
    virtual gfx::NativeView GetTestingHandle() const = 0;
  
    // Creates an appropriate NativeTextfieldWrapper for the platform.
    static NativeTextfieldWrapper* CreateWrapper(Textfield* field);
  };
  
  }  // namespace views
  
  #endif  // #ifndef VIEWS_CONTROLS_TEXTFIELD_NATIVE_TEXTFIELD_WRAPPER_H_
  