HtmlAnchor.cs, HtmlTextArea.cs: Initial implementation. - Leen Toelen
authorBob Smith <bobsmith@mono-cvs.ximian.com>
Mon, 3 Sep 2001 03:13:23 +0000 (03:13 -0000)
committerBob Smith <bobsmith@mono-cvs.ximian.com>
Mon, 3 Sep 2001 03:13:23 +0000 (03:13 -0000)
svn path=/trunk/mcs/; revision=709

mcs/class/System.Web/System.Web.UI.HtmlControls/ChangeLog
mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlAnchor.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlTextArea.cs [new file with mode: 0644]

index a903b635067a6d18771f1e5e270a89c97944c77a..dd2611fb84f1e2c53ada2a79a2affd82fb436420 100644 (file)
@@ -1,3 +1,8 @@
+2001-09-03  Leen Toelen  <toelen@hotmail.com>
+
+        * HtmlAnchor.cs: Initial implementation.
+        * HtmlTextArea.cs: Initial implementation.
+
 2001-08-22  Bob Smith  <bob@thestuff.net>
 
          * HtmlContainerControl.cs: Initial implementation.
diff --git a/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlAnchor.cs b/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlAnchor.cs
new file mode 100644 (file)
index 0000000..0964db8
--- /dev/null
@@ -0,0 +1,107 @@
+/* System.Web.Configuration\r
+ * Authors:\r
+ *   Leen Toelen (toelen@hotmail.com)\r
+ *  Copyright (C) 2001 Leen Toelen\r
+*/\r
+using System;\r
+using System.Web;\r
+using System.Web.UI;\r
+\r
+namespace System.Web.UI.HtmlControls{\r
+       \r
+               public class HtmlAnchor : HtmlContainerControl, IPostBackDataHandler{\r
+               \r
+               private static object EventServerClick = new Object();\r
+\r
+               public HtmlAnchor(): base("a"){}\r
+               \r
+               protected virtual void OnServerClick(EventArgs e){\r
+                       EventHandler handler;\r
+                       handler = (EventHandler) Events[EventServerClick];\r
+                       if(handler != null){\r
+                               handler.Invoke(this, e);\r
+                       }\r
+               }\r
+\r
+               protected override void RenderAttributes(HtmlTextWriter writer){\r
+                       if ((EventHandler) Events[EventServerClick] != null){\r
+                               Attributes.Remove("href");\r
+                               RenderAttributes(writer);\r
+                               writer.WriteAttribute(Page.GetPostBackClientHyperlink(this,""),"href");\r
+                       }\r
+                       else{\r
+                               PreProcessRelativeReferenceAttribute(writer,"href");\r
+                               RenderAttributes(writer);\r
+                       }\r
+               }\r
+\r
+               //FIXME: not sure about the accessor\r
+               public void RaisePostBackEvent(string eventArgument){\r
+                       OnServerClick(EventArgs.Empty);\r
+               }\r
+\r
+               public event EventHandler ServerClick{\r
+                       add{\r
+                               Events.AddHandler(EventServerClick, value);\r
+                       }\r
+                       remove{\r
+                               Events.RemoveHandler(EventServerClick, value);\r
+                       }\r
+               }\r
+\r
+               public int HRef{\r
+                       get{\r
+                               string attr = Attributes["href"];\r
+                               if (attr != null){\r
+                                       return attr;\r
+                               }\r
+                               return "";\r
+                       }\r
+                       set{\r
+                               //MapIntegerAttributeToString(value) accessible constraint is "assembly"\r
+                               Attributes["href"] = MapIntegerAttributeToString(value);\r
+                       }\r
+               }\r
+\r
+               public string Name{\r
+                       get{\r
+                               string attr = Attributes["name"];\r
+                               if (attr != null){\r
+                                       return attr;\r
+                               }\r
+                               return "";\r
+                       }\r
+                       set{\r
+                               Attributes["name"] = MapStringAttributeToString(value);\r
+                       }\r
+               }\r
+\r
+               public string Target{\r
+                       get{\r
+                               string attr = Attributes["target"];\r
+                               if (attr != null){\r
+                                       return attr;\r
+                               }\r
+                               return "";\r
+                       }\r
+                       set{\r
+                               Attributes["target"] = MapStringAttributeToString(value);\r
+                       }\r
+               }\r
+\r
+               public string Title{\r
+                       get{\r
+                               string attr = Attributes["title"];\r
+                               if (attr != null){\r
+                                       return attr;\r
+                               }\r
+                               return "";\r
+                       }\r
+                       set{\r
+                               Attributes["title"] = MapStringAttributeToString(value);\r
+                       }\r
+               }\r
+       \r
+       } // class HtmlAnchor\r
+} // namespace System.Web.UI.HtmlControls\r
+\r
diff --git a/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlTextArea.cs b/mcs/class/System.Web/System.Web.UI.HtmlControls/HtmlTextArea.cs
new file mode 100644 (file)
index 0000000..2cbb286
--- /dev/null
@@ -0,0 +1,132 @@
+/* System.Web.Configuration\r
+ * Authors:\r
+ *   Leen Toelen (toelen@hotmail.com)\r
+ *  Copyright (C) 2001 Leen Toelen\r
+*/\r
+using System;\r
+using System.Web;\r
+using System.Web.UI;\r
+using System.ComponentModel;\r
+using System.Globalization;\r
+using System.Collections.Specialized;\r
+\r
+namespace System.Web.UI.HtmlControls{\r
+       \r
+               public class HtmlTextArea : HtmlContainerControl, IPostBackDataHandler{\r
+               \r
+               private static object EventServerChange = new Object();\r
+\r
+               public HtmlTextArea(): base("textarea"){}\r
+               \r
+               public int Cols{\r
+                       get{\r
+                               string attr = Attributes["cols"];\r
+                               if (attr != null){\r
+                                       return Int32.Parse(attr, CultureInfo.InvariantCulture);\r
+                               }\r
+                               return -1;\r
+                       }\r
+                       set{\r
+                               //MapIntegerAttributeToString(value) accessible constraint is "assembly"\r
+                               Attributes["cols"] = MapIntegerAttributeToString(value);\r
+                       }\r
+               }\r
+               \r
+               public int Rows{\r
+                       get{\r
+                               string attr = Attributes["rows"];\r
+                               if (attr != null){\r
+                                       return Int32.Parse(attr, CultureInfo.InvariantCulture);;\r
+                               }\r
+                               return -1;\r
+                       }\r
+                       set{\r
+                               //MapIntegerAttributeToString(value) accessible constraint is "assembly"\r
+                               Attributes["rows"] = MapIntegerAttributeToString(value);\r
+                       }\r
+               }\r
+               \r
+               public string Value{\r
+                       get{\r
+                               return InnerHtml;\r
+                       }\r
+                       set{\r
+                               InnerHtml = value;\r
+                       }\r
+               }\r
+\r
+               protected string RenderedNameAttribute{\r
+                       get{\r
+                               return Name;\r
+                       }\r
+               }\r
+               \r
+               public virtual string Name{\r
+                       get{\r
+                               if (UniqueID != null){\r
+                                       return UniqueID;\r
+                               }\r
+                               return String.Empty;\r
+                       }\r
+                       set{}\r
+               }\r
+               \r
+               public event EventHandler ServerChange{\r
+                       add{\r
+                               Events.AddHandler(EventServerChange, value);\r
+                       }\r
+                       remove{\r
+                               Events.RemoveHandler(EventServerChange, value);\r
+                       }\r
+               }\r
+               \r
+               protected virtual void OnServerChange(EventArgs e){\r
+                       EventHandler handler;\r
+                       handler = (EventHandler) Events[EventServerChange];\r
+                       if(handler != null){\r
+                               handler.Invoke(this, e);\r
+                       }\r
+               }\r
+               \r
+               //FIXME: not sure about the accessor\r
+               public bool LoadPostData(string postDataKey, NameValueCollection postCollection){\r
+                       string currentValue = Value;\r
+                       string postedValue = postCollection[postDataKey];\r
+                       if (!currentValue.Equals(postedValue) && currentValue != null){\r
+                               Value = HttpUtility.HtmlEncode(postedValue);\r
+                               return true;\r
+                       }\r
+                       return false;\r
+\r
+               }\r
+               \r
+               protected override void RenderAttributes(HtmlTextWriter writer){\r
+                       writer.WriteAttribute("name", RenderedNameAttribute);\r
+                       base.Attributes.Remove("name");\r
+                       base.RenderAttributes(writer);\r
+               }\r
+               \r
+               //FIXME: not sure about the accessor\r
+               public void RaisePostDataChangedEvent(){\r
+                       OnServerChange(EventArgs.Empty);\r
+               }\r
+\r
+               protected override void OnPreRender(EventArgs e){\r
+                       if(Events[EventServerChange]==null || Disabled==true){\r
+                               ViewState.SetItemDirty("value",false);\r
+                       }\r
+               }\r
+\r
+               protected override void AddParsedSubObject(object obj){\r
+                       //TODO: implement "Is Instance Of"\r
+//                     if (obj of type LiteralControl || obj of type DataBoundLiteralControl){\r
+                               AddParsedSubObject(obj);\r
+//                             return;                 \r
+//                     }\r
+                       //FormatResourceString accessible constraint is "assembly"\r
+                       throw new HttpException(HttpRuntime.FormatResourceString("Cannot_Have_Children_Of_Type","HtmlTextArea",obj.GetType().Name.ToString()));\r
+               }\r
+       \r
+       } // class HtmlTextArea\r
+} // namespace System.Web.UI.HtmlControls\r
+\r