fc690e4f9901a94781db3a7f3f8a9cd0bd085f8a
[mono.git] / mcs / class / System.Web / System.Web.UI.HtmlControls / HtmlInputImage.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("ServerClick")]\r
16         public class HtmlInputImage : HtmlInputControl, IPostBackEventHandler, IPostBackDataHandler{\r
17                 \r
18                 private static readonly object EventServerClick = new object ();\r
19                 private int _x, _y;\r
20                 \r
21                 public HtmlInputImage(): base("image"){}\r
22                 \r
23                 protected override void OnPreRender(EventArgs e){\r
24                         if (Page != null && !Disabled){\r
25                                 Page.RegisterRequiresPostBack(this);\r
26                         }\r
27                 }\r
28                 \r
29                 protected override void RenderAttributes(HtmlTextWriter writer)\r
30                 {\r
31                         base.RenderAttributes (writer);\r
32                         // Anything else?\r
33                 }\r
34 \r
35                 protected virtual void OnServerClick(ImageClickEventArgs e){\r
36                         ImageClickEventHandler handler = (ImageClickEventHandler) Events[EventServerClick];\r
37                         if (handler != null) handler (this, e);\r
38                 }\r
39                 \r
40                 bool IPostBackDataHandler.LoadPostData (string postDataKey,\r
41                                                        NameValueCollection postCollection)\r
42                 {\r
43                         string postX = postCollection[String.Concat(RenderedName,".x")];\r
44                         string postY = postCollection[String.Concat(RenderedName,".y")];\r
45                         if (postX != null && postY != null && postX.Length >= 0 && postY.Length >= 0){\r
46                                 _x = Int32.Parse(postX, CultureInfo.InvariantCulture);\r
47                                 _y = Int32.Parse(postY, CultureInfo.InvariantCulture);\r
48                                 Page.RegisterRequiresRaiseEvent(this);\r
49                         }\r
50                         return false;\r
51                 }\r
52                 \r
53                 void IPostBackEventHandler.RaisePostBackEvent (string eventArgument)\r
54                 {\r
55                         if (CausesValidation)\r
56                                 Page.Validate();\r
57                         OnServerClick (new ImageClickEventArgs(_x, _y));\r
58                 }\r
59                 \r
60                 void IPostBackDataHandler.RaisePostDataChangedEvent ()\r
61                 {\r
62                 }\r
63                 \r
64                 [WebCategory("Action")]\r
65                 [WebSysDescription("Fires when the image is clicked.")]\r
66                 public event ImageClickEventHandler ServerClick{\r
67                         add{\r
68                                 Events.AddHandler(EventServerClick, value);\r
69                         }\r
70                         remove{\r
71                                 Events.RemoveHandler(EventServerClick, value);\r
72                         }\r
73                 }\r
74                 \r
75                 [DefaultValue("")]\r
76                 [WebCategory("Appearance")]\r
77                 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r
78                 public string Align{\r
79                         get{\r
80                                 string attr = Attributes["align"];\r
81                                 if (attr != null) return attr;\r
82                                 return String.Empty;\r
83                         }\r
84                         set{\r
85                                 Attributes["align"] = AttributeToString(value);\r
86                         }\r
87                 }\r
88                 \r
89                 [DefaultValue("")]\r
90                 [WebCategory("Appearance")]\r
91                 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r
92                 public string Alt{\r
93                         get{\r
94                                 string attr = Attributes["alt"];\r
95                                 if (attr != null) return attr;\r
96                                 return String.Empty;\r
97                         }\r
98                         set{\r
99                                 Attributes["alt"] = AttributeToString(value);\r
100                         }\r
101                 }\r
102                 \r
103                 [DefaultValue("")]\r
104                 [WebCategory("Appearance")]\r
105                 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r
106                 public int Border{\r
107                         get{\r
108                                 string attr = Attributes["border"];\r
109                                 if (attr != null) return Int32.Parse(attr,CultureInfo.InvariantCulture);\r
110                                 return -1;\r
111                         }\r
112                         set{\r
113                                 Attributes["border"] = AttributeToString(value);\r
114                         }\r
115                 }\r
116                 \r
117                 [DefaultValue(true)]\r
118                 [WebCategory("Behavior")]\r
119                 public bool CausesValidation{\r
120                         get{\r
121                                 object causesVal = ViewState["CausesValidation"];\r
122                                 if (causesVal != null) return (Boolean) causesVal;\r
123                                 return true;\r
124                         }\r
125                         set{\r
126                                 ViewState["CausesValidation"] = (Boolean) value;\r
127                         }\r
128                 }\r
129                 \r
130                 [DefaultValue("")]\r
131                 [WebCategory("Appearance")]\r
132                 [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]\r
133                 public string Src{\r
134                         get{\r
135                                 string attr = Attributes["src"];\r
136                                 if (attr != null) return attr;\r
137                                 return String.Empty;\r
138                         }\r
139                         set{\r
140                                 Attributes["src"] = AttributeToString(value);\r
141                         }\r
142                 }\r
143         } // class HtmlInputImage\r
144 } // namespace System.Web.UI.HtmlControls\r
145 \r