2002-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / Button.cs
1 /**\r
2  * Namespace: System.Web.UI.WebControls\r
3  * Class:     Button\r
4  *\r
5  * Author:  Gaurav Vaish\r
6  * Maintainer: gvaish@iitk.ac.in\r
7  * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
8  * Implementation: yes\r
9  * Status:  100%\r
10  *\r
11  * (C) Gaurav Vaish (2001)\r
12  */\r
13 \r
14 using System;\r
15 using System.ComponentModel;\r
16 using System.Web;\r
17 using System.Web.UI;\r
18 \r
19 namespace System.Web.UI.WebControls\r
20 {\r
21         [DefaultEvent("Click")]\r
22         [DefaultProperty("Text")]\r
23         //TODO: [Designer("??")]\r
24         //TODO: [DataBindingHandler("??UI.Design.TextDataBindingHandler??")]\r
25         [ToolboxData("<{0}:Button runat=\"server\" Text=\"Button\"></{0}:Button>")]\r
26         public class Button : WebControl, IPostBackEventHandler\r
27         {\r
28                 private static readonly object ClickEvent   = new object();\r
29                 private static readonly object CommandEvent = new object();\r
30 \r
31                 //private EventHandlerList ehList;\r
32 \r
33                 public Button(): base(HtmlTextWriterTag.Button)\r
34                 {\r
35                 }\r
36 \r
37                 public bool CausesValidation\r
38                 {\r
39                         get\r
40                         {\r
41                                 Object cv = ViewState["CausesValidation"];\r
42                                 if(cv!=null)\r
43                                         return (Boolean)cv;\r
44                                 return true;\r
45                         }\r
46                         set\r
47                         {\r
48                                 ViewState["CausesValidation"] = value;\r
49                         }\r
50                 }\r
51 \r
52                 public string CommandArgument\r
53                 {\r
54                         get\r
55                         {\r
56                                 string ca = (string) ViewState["CommandArgument"];\r
57                                 if(ca!=null)\r
58                                         return ca;\r
59                                 return String.Empty;\r
60                         }\r
61                         set\r
62                         {\r
63                                 ViewState["CommandArgument"] = value;\r
64                         }\r
65                 }\r
66 \r
67                 public string CommandName\r
68                 {\r
69                         get\r
70                         {\r
71                                 string cn = (string)ViewState["CommandName"];\r
72                                 if(cn!=null)\r
73                                         return cn;\r
74                                 return String.Empty;\r
75                         }\r
76                         set\r
77                         {\r
78                                 ViewState["CommandName"] = value;\r
79                         }\r
80                 }\r
81 \r
82                 public string Text\r
83                 {\r
84                         get\r
85                         {\r
86                                 string text = (string)ViewState["Text"];\r
87                                 if(text!=null)\r
88                                         return text;\r
89                                 return String.Empty;\r
90                         }\r
91                         set\r
92                         {\r
93                                 ViewState["Text"] = value;\r
94                         }\r
95                 }\r
96 \r
97                 public event EventHandler Click\r
98                 {\r
99                         add\r
100                         {\r
101                                 Events.AddHandler(ClickEvent, value);\r
102                         }\r
103                         remove\r
104                         {\r
105                                 Events.RemoveHandler(ClickEvent, value);\r
106                         }\r
107                 }\r
108 \r
109                 public event CommandEventHandler Command\r
110                 {\r
111                         add\r
112                         {\r
113                                 Events.AddHandler(CommandEvent, value);\r
114                         }\r
115                         remove\r
116                         {\r
117                                 Events.RemoveHandler(CommandEvent, value);\r
118                         }\r
119                 }\r
120 \r
121                 protected virtual void OnClick(EventArgs e)\r
122                 {\r
123                         if(Events != null)\r
124                         {\r
125                                 EventHandler eh = (EventHandler)(Events[ClickEvent]);\r
126                                 if(eh!= null)\r
127                                         eh(this,e);\r
128                         }\r
129                 }\r
130 \r
131                 protected virtual void OnCommand(CommandEventArgs e)\r
132                 {\r
133                         if(Events != null)\r
134                         {\r
135                                 EventHandler eh = (EventHandler)(Events[CommandEvent]);\r
136                                 if(eh!= null)\r
137                                         eh(this,e);\r
138                         }\r
139                 }\r
140 \r
141                 void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)\r
142                 {\r
143                         if(CausesValidation)\r
144                         {\r
145                                 Page.Validate();\r
146                                 OnClick(new EventArgs());\r
147                                 OnCommand(new CommandEventArgs(CommandName, CommandArgument));\r
148                         }\r
149                 }\r
150 \r
151                 protected override void AddAttributesToRender(HtmlTextWriter writer)\r
152                 {\r
153                         writer.AddAttribute(HtmlTextWriterAttribute.Type,"submit");\r
154                         writer.AddAttribute(HtmlTextWriterAttribute.Name,base.UniqueID);\r
155                         writer.AddAttribute(HtmlTextWriterAttribute.Value,Text);\r
156                         if(Page!=null && CausesValidation && Page.Validators.Count > 0)\r
157                         {\r
158                                 writer.AddAttribute(System.Web.UI.HtmlTextWriterAttribute.Onclick, Utils.GetClientValidatedEvent(Page));\r
159                                 writer.AddAttribute("language", "javascript");\r
160                         }\r
161                         base.AddAttributesToRender(writer);\r
162                 }\r
163 \r
164                 protected override void RenderContents(HtmlTextWriter writer)\r
165                 {\r
166                         // Preventing subclasses to do anything\r
167                 }\r
168         }\r
169 }\r