2005-09-08 Peter Dennis Bartok <pbartok@novell.com>
[mono.git] / mcs / class / Managed.Windows.Forms / System.Windows.Forms / TextBox.cs
index 2434131f1de5ff39911045ed2b286abfff304729..3be7be3a8024bd1c9eb768a96f594b627d81a67d 100644 (file)
@@ -17,7 +17,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-// Copyright (c) 2004 Novell, Inc. (http://www.novell.com)
+// Copyright (c) 2004-2005 Novell, Inc. (http://www.novell.com)
 //
 // Authors:
 //     Peter Bartok    pbartok@novell.com
 // NOT COMPLETE
 
 using System;
+using System.ComponentModel;
+using System.ComponentModel.Design;
 using System.Drawing;
 
 namespace System.Windows.Forms {
        public class TextBox : TextBoxBase {
                #region Local Variables
-               internal bool                   accepts_return;
-               internal CharacterCasing        character_casing;
                internal char                   password_char;
-               internal ScrollBars             scrollbars;
-               internal HorizontalAlignment    alignment;
                #endregion      // Local Variables
 
                #region Public Constructors
                public TextBox() {
                        accepts_return = false;
-                       character_casing = CharacterCasing.Normal;
                        password_char = '\u25cf';
-                       scrollbars = ScrollBars.None;
+                       scrollbars = RichTextBoxScrollBars.None;
                        alignment = HorizontalAlignment.Left;
+                       this.LostFocus +=new EventHandler(TextBox_LostFocus);
+                       this.BackColor = ThemeEngine.Current.ColorWindow;
+                       this.ForeColor = ThemeEngine.Current.ColorWindowText;
                }
                #endregion      // Public Constructors
 
+\r
+               #region Private & Internal Methods
+               private void TextBox_LostFocus(object sender, EventArgs e) {\r
+                       has_focus = false;\r
+                       Invalidate();\r
+               }\r
+               #endregion      // Private & Internal Methods
+
                #region Public Instance Properties
+               [DefaultValue(false)]
                public bool AcceptsReturn {
                        get {
                                return accepts_return;
@@ -62,6 +71,7 @@ namespace System.Windows.Forms {
                        }
                }
 
+               [DefaultValue(CharacterCasing.Normal)]
                public CharacterCasing CharacterCasing {
                        get {
                                return character_casing;
@@ -74,6 +84,8 @@ namespace System.Windows.Forms {
                        }
                }
 
+               [Localizable(true)]
+               [DefaultValue("")]
                public char PasswordChar {
                        get {
                                return password_char;
@@ -86,18 +98,33 @@ namespace System.Windows.Forms {
                        }
                }
 
+               [DefaultValue(ScrollBars.None)]
+               [Localizable(true)]
                public ScrollBars ScrollBars {
                        get {
-                               return scrollbars;
+                               return (ScrollBars)scrollbars;
                        }
 
                        set {
-                               if (value != scrollbars) {
-                                       scrollbars = value;
+                               if (value != (ScrollBars)scrollbars) {
+                                       scrollbars = (RichTextBoxScrollBars)value;
+                                       base.CalculateScrollBars();
                                }
                        }
                }
 
+               [Browsable(false)]
+               [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
+               public override int SelectionLength {\r
+                       get {\r
+                               return base.SelectionLength;\r
+                       }\r
+                       set {\r
+                               base.SelectionLength = value;\r
+                       }\r
+               }\r
+
+
                public override string Text {
                        get {
                                return base.Text;
@@ -108,6 +135,8 @@ namespace System.Windows.Forms {
                        }
                }
 
+               [DefaultValue(HorizontalAlignment.Left)]
+               [Localizable(true)]
                public HorizontalAlignment TextAlign {
                        get {
                                return alignment;
@@ -116,6 +145,20 @@ namespace System.Windows.Forms {
                        set {
                                if (value != alignment) {
                                        alignment = value;
+
+                                       // MS word-wraps if alignment isn't left
+                                       if (multiline) {
+                                               if (alignment != HorizontalAlignment.Left) {
+                                                       document.Wrap = true;
+                                               } else {
+                                                       document.Wrap = word_wrap;
+                                               }
+                                       }
+
+                                       for (int i = 1; i <= document.Lines; i++) {
+                                               document.GetLine(i).Alignment = value;
+                                       }
+                                       document.RecalculateDocument(CreateGraphics());
                                        OnTextAlignChanged(EventArgs.Empty);
                                }
                        }
@@ -142,6 +185,8 @@ namespace System.Windows.Forms {
                }
 
                protected override void OnGotFocus(EventArgs e) {
+                       has_focus=true;
+                       Invalidate();
                        base.OnGotFocus (e);
                }
 
@@ -159,13 +204,13 @@ namespace System.Windows.Forms {
                        }
                }
 
-               protected virtual void WndProc(ref Message m) {
+               protected override void WndProc(ref Message m) {
                        base.WndProc(ref m);
                }
                #endregion      // Protected Instance Methods
 
                #region Events
                public event EventHandler TextAlignChanged;
-               #endregion      // Events
+               #endregion      // Events\r
        }
 }