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