remove svn:executable from .cs files
[mono.git] / mcs / class / System.Web / System.Web.UI.HtmlControls / HtmlInputCheckBox.cs
1 /*      System.Web.UI.HtmlControls\r
2 *       Authors\r
3 *               Leen Toelen (toelen@hotmail.com)\r
4 */\r
5 \r
6 using System;\r
7 using System.Collections.Specialized;\r
8 using System.ComponentModel;\r
9 using System.Globalization;\r
10 using System.Web;\r
11 using System.Web.UI;\r
12 \r
13 namespace System.Web.UI.HtmlControls{\r
14         \r
15         [DefaultEvent("ServerChange")]\r
16         public class HtmlInputCheckBox : HtmlInputControl, IPostBackDataHandler{\r
17                 \r
18                 private static readonly object EventServerChange = new object ();\r
19                 \r
20                 public HtmlInputCheckBox(): base("checkbox"){}\r
21                 \r
22                 bool IPostBackDataHandler.LoadPostData (string postDataKey, \r
23                                                                NameValueCollection postCollection)\r
24                 {\r
25                         string postValue = postCollection [postDataKey];\r
26                         bool postChecked = false;\r
27                         bool retval = false;\r
28 \r
29                         if (postValue != null)\r
30                                 postChecked = postValue.Length > 0;\r
31 \r
32                         if (Checked != postChecked){\r
33                                 retval = true;\r
34                                 Checked = postChecked;\r
35                         }\r
36 \r
37                         return retval;\r
38                 }\r
39                 \r
40                 void IPostBackDataHandler.RaisePostDataChangedEvent ()\r
41                 {\r
42                         OnServerChange (EventArgs.Empty);\r
43                 }\r
44                 \r
45                 protected virtual void OnServerChange(EventArgs e){\r
46                         EventHandler handler = (EventHandler) Events[EventServerChange];\r
47                         if (handler != null)\r
48                                 handler (this, e);\r
49                 }\r
50                 \r
51                 protected override void OnPreRender(EventArgs e){\r
52                         if (Page != null && !Disabled)\r
53                                 Page.RegisterRequiresPostBack(this);\r
54                         if (Events[EventServerChange] != null && !Disabled)\r
55                                 ViewState.SetItemDirty("checkbox",false);\r
56                 }\r
57                 \r
58                 [WebCategory("Action")]\r
59                 [WebSysDescription("Fires when the checked satte of the control is changed.")]\r
60                 public event EventHandler ServerChange{\r
61                         add{\r
62                                 Events.AddHandler(EventServerChange, value);\r
63                         }\r
64                         remove{\r
65                                 Events.RemoveHandler(EventServerChange, value);\r
66                         }\r
67                 }\r
68                 \r
69                 [DefaultValue("")]\r
70                 [WebCategory("Misc")]\r
71                 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r
72                 public bool Checked{\r
73                         get{\r
74                                 string attr = Attributes["checked"];\r
75                                 if (attr != null)\r
76                                         return attr.Equals("checked");\r
77                                 return false;\r
78                         }\r
79                         set{\r
80                                 Attributes["checked"] = (value == true)? "checked": null;\r
81                         }\r
82                 }\r
83                 \r
84         } // class HtmlInputCheckBox\r
85 } // namespace System.Web.UI.HtmlControls\r
86 \r