ChangeLog: Updated
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / LinkButton.cs
index a020a1298d2b9268bb38e459a7509c10bd641e3f..58397ddbe5ed23bec6abedd4b09a5d7829436493 100644 (file)
-/**\r
- * Namespace: System.Web.UI.WebControls\r
- * Class:     LinkButton\r
- *\r
- * Author:  Gaurav Vaish\r
- * Maintainer: gvaish@iitk.ac.in\r
- * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
- * Implementation: yes\r
- * Status:  100%\r
- *\r
- * (C) Gaurav Vaish (2001)\r
- */\r
+//
+// System.Web.UI.WebControls.LinkButton.cs
+//
+// Authors:
+//   Gaurav Vaish (gvaish@iitk.ac.in)
+//   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+//
+// (C) Gaurav Vaish (2002)
+// (C) 2003 Andreas Nahr
+//\r
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
 \r
 using System;\r
 using System.Web;\r
 using System.Web.UI;\r
+using System.ComponentModel;
+using System.ComponentModel.Design;\r
 \r
 namespace System.Web.UI.WebControls\r
 {\r
+       [DefaultEvent("Click")]\r
+       [DefaultProperty("Text")]\r
+       [ControlBuilder(typeof(LinkButtonControlBuilder))]\r
+       [Designer("System.Web.UI.Design.WebControls.LinkButtonDesigner, " + Consts.AssemblySystem_Design, typeof (IDesigner))]\r
+       [DataBindingHandler("System.Web.UI.Design.TextDataBindingHandler, " + Consts.AssemblySystem_Design)]\r
+       [ParseChildren(false)]\r
+       [ToolboxData("<{0}:LinkButton runat=\"server\">LinkButton</{0}:LinkButton>")]\r
        public class LinkButton : WebControl, IPostBackEventHandler\r
        {\r
                private static readonly object ClickEvent   = new object();\r
                private static readonly object CommandEvent = new object();\r
 \r
-               public LinkButton(): base(HtmlTextWriterTag.A)\r
+               public LinkButton () : base (HtmlTextWriterTag.A)\r
                {\r
                }\r
-\r
+
+               [DefaultValue (true), Bindable (false), WebCategory ("Behavior")]
+               [WebSysDescription ("Determines if validation is performed when clicked.")]\r
                public bool CausesValidation\r
                {\r
-                       get\r
-                       {\r
-                               object o = ViewState["CausesValidation"];\r
-                               if(o!=null)\r
-                                       return (bool)o;\r
-                               return true;\r
-                       }\r
-                       set\r
-                       {\r
-                               ViewState["CausesValidation"] = value;\r
+                       get {\r
+                               object o = ViewState ["CausesValidation"];\r
+                               return (o == null) ? true : (bool) o;\r
                        }\r
-               }\r
 \r
+                       set { ViewState ["CausesValidation"] = value; }\r
+               }\r
+
+               [DefaultValue (""), Bindable (true), WebCategory ("Behavior")]
+               [WebSysDescription ("An argument for the Command of this control.")]\r
                public string CommandArgument\r
                {\r
-                       get\r
-                       {\r
-                               object o = ViewState["CommandArgument"];\r
-                               if(o!=null)\r
-                                       return (string)o;\r
-                               return String.Empty;\r
+                       get {\r
+                               object o = ViewState ["CommandArgument"];\r
+                               return (o == null) ? String.Empty : (string) o;\r
                        }\r
-                       set\r
-                       {\r
-                               ViewState["CommandArgument"] = value;\r
-                       }\r
-               }\r
 \r
+                       set { ViewState ["CommandArgument"] = value; }\r
+               }\r
+
+               [DefaultValue (""), WebCategory ("Behavior")]
+               [WebSysDescription ("The name of the Command of this control.")]\r
                public string CommandName\r
                {\r
-                       get\r
-                       {\r
-                               object o = ViewState["CommandName"];\r
-                               if(o!=null)\r
-                                       return (string)o;\r
-                               return String.Empty;\r
+                       get {\r
+                               object o = ViewState ["CommandName"];\r
+                               return (o == null) ? String.Empty : (string) o;\r
                        }\r
-                       set\r
-                       {\r
-                               ViewState["CommandName"] = value;\r
-                       }\r
-               }\r
 \r
+                       set { ViewState ["CommandName"] = value; }\r
+               }\r
+
+               [DefaultValue (""), Bindable (true), WebCategory ("Appearance")]
+               [PersistenceMode (PersistenceMode.InnerDefaultProperty)]
+               [WebSysDescription ("The text that should be shown on this LinkButton.")]\r
                public virtual string Text\r
                {\r
-                       get\r
-                       {\r
-                               object o = ViewState["Text"];\r
-                               if(o != null)\r
-                               {\r
-                                       return (string)o;\r
-                               }\r
-                               return String.Empty;\r
-                       }\r
-                       set\r
-                       {\r
-                               ViewState["Text"] = value;\r
+                       get {\r
+                               object o = ViewState ["Text"];\r
+                               return (o == null) ? String.Empty : (string) o;\r
                        }\r
-               }\r
 \r
+                       set { ViewState ["Text"] = value; }\r
+               }\r
+
+               [WebCategory ("Action")]
+               [WebSysDescription ("Raised when the LinkButton is clicked.")]\r
                public event EventHandler Click\r
                {\r
-                       add\r
-                       {\r
-                               Events.AddHandler(ClickEvent, this);\r
-                       }\r
-                       remove\r
-                       {\r
-                               Events.RemoveHandler(ClickEvent, this);\r
-                       }\r
+                       add { Events.AddHandler(ClickEvent, value); }\r
+                       remove { Events.RemoveHandler(ClickEvent, value); }\r
                }\r
-\r
+
+               [WebCategory ("Action")]
+               [WebSysDescription ("Raised when a LinkButton Command is executed.")]\r
                public event CommandEventHandler Command\r
                {\r
-                       add\r
-                       {\r
-                               Events.AddHandler(CommandEvent, this);\r
-                       }\r
-                       remove\r
-                       {\r
-                               Events.RemoveHandler(CommandEvent, this);\r
-                       }\r
+                       add { Events.AddHandler(CommandEvent, value); }\r
+                       remove { Events.RemoveHandler(CommandEvent, value); }\r
                }\r
 \r
-               protected virtual void OnClick(EventArgs e)\r
+               protected virtual void OnClick (EventArgs e)\r
                {\r
-                       if(Events != null)\r
-                       {\r
-                               EventHandler eh = (EventHandler)(Events[ClickEvent]);\r
-                               if(eh != null)\r
-                                       eh(this, e);\r
+                       if(Events != null){\r
+                               EventHandler eh = (EventHandler) (Events [ClickEvent]);\r
+                               if (eh != null)\r
+                                       eh (this, e);\r
                        }\r
                }\r
 \r
-               protected virtual void OnCommand(CommandEventArgs e)\r
+               protected virtual void OnCommand (CommandEventArgs e)\r
                {\r
-                       if(Events != null)\r
-                       {\r
-                               CommandEventHandler ceh = (CommandEventHandler)(Events[CommandEvent]);\r
-                               if(ceh != null)\r
-                                       ceh(this, e);\r
+                       if(Events != null){\r
+                               CommandEventHandler ceh = (CommandEventHandler) (Events [CommandEvent]);\r
+                               if (ceh != null)\r
+                                       ceh (this, e);\r
                        }\r
+                       RaiseBubbleEvent (this, e);\r
                }\r
 \r
-               void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)\r
+               protected override void OnPreRender (EventArgs e)\r
                {\r
-                       if(CausesValidation)\r
-                       {\r
-                               Page.Validate();\r
-                       }\r
-                       OnClick(new EventArgs());\r
-                       OnCommand( new CommandEventArgs(CommandName, CommandArgument));\r
+                       base.OnPreRender(e);\r
                }\r
 \r
-               protected override void AddAttributesToRender(HtmlTextWriter writer)\r
+               void IPostBackEventHandler.RaisePostBackEvent (string eventArgument)\r
                {\r
-                       base.AddAttributesToRender(writer);\r
-                       if(Enabled && Page != null)\r
-                       {\r
-                               if(CausesValidation && Page.Validators.Count > 0)\r
-                               {\r
-                                       writer.Write(HtmlTextWriterAttribute.Href, "javscript:" + Utils.GetClientValidatedPostBack(this));\r
+                       if (CausesValidation)\r
+                               Page.Validate ();\r
+                       OnClick (EventArgs.Empty);\r
+                       OnCommand (new CommandEventArgs (CommandName, CommandArgument));\r
+               }\r
+\r
+               protected override void AddAttributesToRender (HtmlTextWriter writer)\r
+               {\r
+                       base.AddAttributesToRender (writer);\r
+                       if (Enabled && Page != null){\r
+                               if (CausesValidation && Page.Validators.Count > 0){\r
+                                       writer.AddAttribute (HtmlTextWriterAttribute.Href,\r
+                                                            "javascript:" + \r
+                                                            Utils.GetClientValidatedPostBack (this));\r
                                        return;\r
                                }\r
-                               writer.Write(HtmlTextWriterAttribute.Href, GetPostBackClientHyperlink(this, ""));\r
+                               writer.AddAttribute (HtmlTextWriterAttribute.Href,\r
+                                                    Page.GetPostBackClientHyperlink (this, ""));\r
                        }\r
                }\r
 \r
-               protected override void AddParsedSubObject(object obj)\r
+               protected override void AddParsedSubObject (object obj)\r
                {\r
-                       if(HasControls())\r
-                       {\r
-                               AddParsedSubObject(obj);\r
+                       if (HasControls ()){\r
+                               base.AddParsedSubObject (obj);\r
                                return;\r
                        }\r
-                       if(obj is LiteralControl)\r
-                       {\r
-                               Text = ((LiteralControl)obj).Text;\r
+\r
+                       if (obj is LiteralControl){\r
+                               Text = ((LiteralControl) obj).Text;\r
                                return;\r
                        }\r
-                       if(Text.Length > 0)\r
-                       {\r
-                               AddParsedSubObject(Text);\r
+\r
+                       if (Text.Length > 0){\r
+                               base.AddParsedSubObject (new LiteralControl (Text));\r
                                Text = String.Empty;\r
                        }\r
-                       AddParsedSubObject(obj);\r
+\r
+                       base.AddParsedSubObject (obj);\r
                }\r
 \r
-               protected override void LoadViewState(object savedState)\r
+               protected override void LoadViewState (object savedState)\r
                {\r
-                       if(savedState != null)\r
-                       {\r
-                               base.LoadViewState(savedState);\r
-                               string savedText = (string)ViewState["Text"];\r
-                               if(savedText != null)\r
+                       if (savedState != null){\r
+                               base.LoadViewState (savedState);\r
+                               string savedText = (string) ViewState ["Text"];\r
+                               if (savedText != null)\r
                                        Text = savedText;\r
                        }\r
                }\r
 \r
-               protected override void RenderContents(HtmlTextWriter writer)\r
+               protected override void RenderContents (HtmlTextWriter writer)\r
                {\r
-                       if(HasControls())\r
-                       {\r
-                               RenderContents(writer);\r
+                       if (HasControls ()){\r
+                               base.RenderContents (writer);\r
                                return;\r
                        }\r
-                       writer.Write(Text);\r
+                       writer.Write (Text);\r
                }\r
        }\r
 }\r