**** Merged from MCS ****
[mono-project.git] / mcs / class / System.Web / System.Web.UI.HtmlControls / HtmlTextArea.cs
blob7a533670214fb0f10b48dc88ea9331f7cc8d3b95
1 /* System.Web.UI.HtmlControls
2 * Authors
3 * Leen Toelen (toelen@hotmail.com)
4 */
6 using System;
7 using System.Web;
8 using System.Web.UI;
9 using System.ComponentModel;
10 using System.Globalization;
11 using System.Collections.Specialized;
13 namespace System.Web.UI.HtmlControls{
15 [DefaultEvent("ServerChange")]
16 [ValidationProperty("Value")]
17 public class HtmlTextArea : HtmlContainerControl, IPostBackDataHandler{
19 private static readonly object EventServerChange = new object ();
21 public HtmlTextArea(): base("textarea"){}
23 [DefaultValue("")]
24 [WebCategory("Appearance")]
25 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
26 public int Cols{
27 get{
28 string attr = Attributes["cols"];
29 if (attr != null){
30 return Int32.Parse(attr, CultureInfo.InvariantCulture);
32 return -1;
34 set{
35 Attributes["cols"] = AttributeToString(value);
39 [DefaultValue("")]
40 [WebCategory("Appearance")]
41 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
42 public int Rows{
43 get{
44 string attr = Attributes["rows"];
45 if (attr != null){
46 return Int32.Parse(attr, CultureInfo.InvariantCulture);
48 return -1;
50 set{
51 Attributes["rows"] = AttributeToString(value);
55 [DefaultValue("")]
56 [WebCategory("Appearance")]
57 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
58 public string Value{
59 get{
60 return InnerHtml;
62 set{
63 InnerHtml = value;
67 [DefaultValue("")]
68 [WebCategory("Behavior")]
69 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
70 public virtual string Name{
71 get{
72 if (UniqueID != null){
73 return UniqueID;
75 return String.Empty;
77 set{}
80 [WebCategory("Action")]
81 [WebSysDescription("Fires when the text within the control changes.")]
82 public event EventHandler ServerChange{
83 add{
84 Events.AddHandler(EventServerChange, value);
86 remove{
87 Events.RemoveHandler(EventServerChange, value);
91 protected virtual void OnServerChange(EventArgs e){
92 EventHandler handler;
93 handler = (EventHandler) Events[EventServerChange];
94 if(handler != null){
95 handler (this, e);
99 bool IPostBackDataHandler.LoadPostData (string postDataKey,
100 NameValueCollection postCollection)
102 string currentValue = Value;
103 string postedValue = postCollection[postDataKey];
104 if (!currentValue.Equals(postedValue) && currentValue != null){
105 Value = HttpUtility.HtmlEncode(postedValue);
106 return true;
108 return false;
111 protected override void RenderAttributes(HtmlTextWriter writer){
112 writer.WriteAttribute("name", Name);
113 Attributes.Remove("name");
114 base.RenderAttributes(writer);
117 void IPostBackDataHandler.RaisePostDataChangedEvent ()
119 OnServerChange (EventArgs.Empty);
122 protected override void OnPreRender(EventArgs e){
123 if(Events[EventServerChange]==null || Disabled){
124 ViewState.SetItemDirty("value",false);
128 protected override void AddParsedSubObject(object obj){
129 if (obj is LiteralControl || obj is DataBoundLiteralControl)
130 base.AddParsedSubObject(obj);
131 else
132 throw new NotSupportedException("HtmlTextArea cannot have children of Type " + obj.GetType().Name);
135 } // class HtmlTextArea
136 } // namespace System.Web.UI.HtmlControls