Copied remotely
[mono.git] / mcs / class / System.Web / System.Web.UI.HtmlControls / HtmlInputText.cs
1 /*      System.Web.UI.HtmlControls\r
2 *       Authors\r
3 *               Leen Toelen (toelen@hotmail.com)\r
4 */\r
5 \r
6 using System;\r
7 using System.Collections.Specialized;\r
8 using System.ComponentModel;\r
9 using System.Globalization;\r
10 using System.Web;\r
11 using System.Web.UI;\r
12 \r
13 namespace System.Web.UI.HtmlControls{\r
14         \r
15         [DefaultEvent("ServerChange")]\r
16         [ValidationProperty("Value")]\r
17         public class HtmlInputText : HtmlInputControl, IPostBackDataHandler{\r
18                 \r
19                 private static readonly object EventServerChange = new object ();\r
20                 \r
21                 public HtmlInputText(string type):base(type){}\r
22                 public HtmlInputText():base("text"){}\r
23                 \r
24                 protected override void OnPreRender (EventArgs e)\r
25                 {\r
26                         if (Events [EventServerChange] == null && !Disabled)\r
27                                 ViewState.SetItemDirty("value",false);\r
28                 }\r
29                 \r
30                 protected virtual void OnServerChange (EventArgs e)\r
31                 {\r
32                         EventHandler handler = (EventHandler) Events [EventServerChange];\r
33                         if (handler != null) handler (this, e);\r
34                 }\r
35                 \r
36                 protected override void RenderAttributes(HtmlTextWriter writer){\r
37                         //hide value when password box\r
38                         if (String.Compare (Type, "password",true) == 0)\r
39                                 ViewState.Remove ("value");\r
40 \r
41                         base.RenderAttributes(writer);\r
42                 }\r
43                 \r
44                 bool IPostBackDataHandler.LoadPostData (string postDataKey,\r
45                                                         NameValueCollection postCollection)\r
46                 {\r
47                         string currentValue = Value;\r
48                         string[] postedValue = postCollection.GetValues (postDataKey);\r
49                         if (!currentValue.Equals (postedValue)){\r
50                                 Value = postedValue [0];\r
51                                 return true;\r
52                         }\r
53                         return false;\r
54                 }\r
55                 \r
56                 void IPostBackDataHandler.RaisePostDataChangedEvent ()\r
57                 {\r
58                         OnServerChange (EventArgs.Empty);\r
59                 }\r
60                 \r
61                 [WebCategory("Action")]\r
62                 [WebSysDescription("Fires when the the text within the control changes.")]\r
63                 public event EventHandler ServerChange{\r
64                         add{\r
65                                 Events.AddHandler(EventServerChange, value);\r
66                         }\r
67                         remove{\r
68                                 Events.RemoveHandler(EventServerChange, value);\r
69                         }\r
70                 }\r
71                 \r
72                 [DefaultValue("")]\r
73                 [WebCategory("Behavior")]\r
74                 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r
75                 public int MaxLength{\r
76                         get{\r
77                                 string attr = (String) ViewState["maxlength"];\r
78                                 if (attr != null) return Int32.Parse(attr, CultureInfo.InvariantCulture);\r
79                                 return -1;\r
80                         }\r
81                         set{\r
82                                 Attributes["maxlength"] = AttributeToString(value);\r
83                         }\r
84                 }\r
85                 \r
86                 [DefaultValue("")]\r
87                 [WebCategory("Appearance")]\r
88                 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r
89                 public int Size{\r
90                         get{\r
91                                 string attr = (String) ViewState["size"];\r
92                                 if (attr != null) return Int32.Parse(attr, CultureInfo.InvariantCulture);\r
93                                 return -1;\r
94                         }\r
95                         set{\r
96                                 Attributes["size"] = AttributeToString(value);\r
97                         }\r
98                 }\r
99                 \r
100                 public override string Value{\r
101                         get{\r
102                                 string attr = Attributes["value"];\r
103                                 if (attr != null) return attr;\r
104                                 return String.Empty;\r
105                         }\r
106                         set{\r
107                                 Attributes["value"] = AttributeToString(value);\r
108                         }\r
109                 }\r
110                 \r
111         } // class HtmlInputText\r
112 } // namespace System.Web.UI.HtmlControls\r
113 \r