More Updates from Guarav
[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  * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
7  * Status:  20%\r
8  * \r
9  * (C) Gaurav Vaish (2001)\r
10  */\r
11 \r
12 using System;\r
13 using System.ComponentModel;\r
14 using System.Web;\r
15 using System.Web.UI;\r
16 \r
17 namespace System.Web.UI.WebControls\r
18 {\r
19         public class Button : WebControl, IPostBackEventHandler\r
20         {\r
21                 private static readonly object ClickEvent   = new object();\r
22                 private static readonly object CommandEvent = new object();\r
23 \r
24                 //private EventHandlerList ehList;\r
25 \r
26                 public Button()\r
27                 {\r
28                         // TODO: Initialization\r
29                 }\r
30 \r
31                 [Bindable(true)]\r
32                 public bool CausesValidation\r
33                 {\r
34                         get\r
35                         {\r
36                                 Object cv = ViewState["CausesValidation"];\r
37                                 if(cv!=null)\r
38                                         return (Boolean)cv;\r
39                                 return true;\r
40                         }\r
41                         set\r
42                         {\r
43                                 //causesValidation = value;\r
44                                 ViewState["CausesValidation"] = value;\r
45                         }\r
46                 }\r
47 \r
48                 [Bindable(true)]\r
49                 public string CommandArgument\r
50                 {\r
51                         get\r
52                         {\r
53                                 //return commandArgument;\r
54                                 string ca = (string) ViewState["CommandArgument"];\r
55                                 if(ca!=null)\r
56                                         return ca;\r
57                                 return String.Empty;\r
58                         }\r
59                         set\r
60                         {\r
61                                 //commandArgument = value;\r
62                                 ViewState["CommandArgument"] = value;\r
63                         }\r
64                 }\r
65 \r
66                 public string CommandName\r
67                 {\r
68                         get\r
69                         {\r
70                                 string cn = (string)ViewState["CommandName"];\r
71                                 if(cn!=null)\r
72                                         return cn;\r
73                                 return String.Empty;\r
74                         }\r
75                         set\r
76                         {\r
77                                 ViewState["CommandArgument"] = value;\r
78                         }\r
79                 }\r
80 \r
81                 [\r
82                         Bindable(true),\r
83                         DefaultValueAttribute("")\r
84                 ]\r
85                 //[WebSysDescriptionAttribute("Button_Text")]\r
86                 //[WebCategoryAttribute("Appearance")]\r
87                 public string Text\r
88                 {\r
89                         get\r
90                         {\r
91                                 string text = (string)ViewState["Text"];\r
92                                 if(text!=null)\r
93                                         return text;\r
94                                 return String.Empty;\r
95                         }\r
96                         set\r
97                         {\r
98                                 ViewState["Text"] = value;\r
99                         }\r
100                 }\r
101 \r
102                 public event EventHandler Click\r
103                 {\r
104                         add\r
105                         {\r
106                                 Events.AddHandler(ClickEvent, value);\r
107                         }\r
108                         remove\r
109                         {\r
110                                 Events.RemoveHandler(ClickEvent, value);\r
111                         }\r
112                 }\r
113 \r
114                 public event CommandEventHandler Command\r
115                 {\r
116                         add\r
117                         {\r
118                                 Events.AddHandler(CommandEvent, value);\r
119                         }\r
120                         remove\r
121                         {\r
122                                 Events.RemoveHandler(CommandEvent, value);\r
123                         }\r
124                 }\r
125                 \r
126                 protected virtual void OnClick(EventArgs e)\r
127                 {\r
128                         if(Events != null)\r
129                         {\r
130                                 EventHandler eh = (EventHandler)(Events[ClickEvent]);\r
131                                 if(eh!= null)\r
132                                         eh(this,e);\r
133                         }\r
134                 }\r
135 \r
136                 protected virtual void OnCommand(CommandEventArgs e)\r
137                 {\r
138                         if(Events != null)\r
139                         {\r
140                                 EventHandler eh = (EventHandler)(Events[CommandEvent]);\r
141                                 if(eh!= null)\r
142                                         eh(this,e);\r
143                         }\r
144                 }\r
145                 \r
146                 public void RaisePostBackEvent(string eventArgument)\r
147                 {\r
148                         /* Will have to see what work needs to be done before I actually call OnClick\r
149                          * Basically I have to see what is to be done with the string argument\r
150                         */\r
151                         if(CausesValidation)\r
152                         {\r
153                                 Page.Validate();\r
154                                 OnClick(new EventArgs());\r
155                                 OnCommand(new CommandEventArgs(CommandName, CommandArgument));\r
156                         }\r
157                 }\r
158                 \r
159                 protected override void AddAttributesToRender(HtmlTextWriter writer)\r
160                 {\r
161                         //??\r
162                         writer.AddAttribute(HtmlTextWriterAttribute.Type,"submit");\r
163                         writer.AddAttribute(HtmlTextWriterAttribute.Name,base.UniqueID);\r
164                         writer.AddAttribute(HtmlTextWriterAttribute.Value,Text);\r
165                         if(Page!=null)\r
166                         {\r
167                                 if(CausesValidation)\r
168                                 {\r
169                                         //Page.Validators.Count\r
170                                         //writer.AddAttribute(HtmlTextWriterAttribute.OnClick, <<The validationcode>>);\r
171                                         writer.AddAttribute("language","javascript");\r
172                                 }\r
173                         }\r
174                 }\r
175                 \r
176                 protected override void RenderContents(HtmlTextWriter writer)\r
177                 {\r
178                         // Preventing\r
179                 }\r
180         }\r
181 }\r