Implement accessibility features for NET_1_1 configuration.
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / Image.cs
1 //
2 // System.Web.UI.WebControls.Image.cs
3 //
4 // Authors:
5 //   Gaurav Vaish (gvaish@iitk.ac.in)
6 //   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
7 //
8 // (C) Gaurav Vaish (2002)
9 // (C) 2003 Andreas Nahr
10 //\r
11
12 //
13 // Permission is hereby granted, free of charge, to any person obtaining
14 // a copy of this software and associated documentation files (the
15 // "Software"), to deal in the Software without restriction, including
16 // without limitation the rights to use, copy, modify, merge, publish,
17 // distribute, sublicense, and/or sell copies of the Software, and to
18 // permit persons to whom the Software is furnished to do so, subject to
19 // the following conditions:
20 // 
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
23 // 
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 //
32 \r
33 using System;\r
34 using System.Web;\r
35 using System.Web.UI;\r
36 using System.ComponentModel;\r
37 \r
38 namespace System.Web.UI.WebControls\r
39 {\r
40         [DefaultProperty("ImageUrl")]\r
41         public class Image : WebControl\r
42         {\r
43                 public Image(): base(HtmlTextWriterTag.Img)\r
44                 {\r
45                 }\r
46 \r
47 #if NET_2_0\r
48                 [Localizable (true)]\r
49 #endif
50                 [DefaultValue (""), Bindable (true), WebCategory ("Appearance")]
51                 [WebSysDescription ("An alternative text that is shown if the image cannot be displayed.")]\r
52                 public virtual string AlternateText\r
53                 {\r
54                         get\r
55                         {\r
56                                 object o = ViewState["AlternateText"];\r
57                                 if(o!=null)\r
58                                         return (string)o;\r
59                                 return String.Empty;\r
60                         }\r
61                         set\r
62                         {\r
63                                 ViewState["AlternateText"] = value;\r
64                         }\r
65                 }\r
66
67                 [Browsable (false), EditorBrowsable (EditorBrowsableState.Never)]\r
68                 public override bool Enabled\r
69                 {\r
70                         get\r
71                         {\r
72                                 return base.Enabled;\r
73                         }\r
74                         set\r
75                         {\r
76                                 base.Enabled = value;\r
77                         }\r
78                 }\r
79
80                 [Browsable (false), EditorBrowsable (EditorBrowsableState.Never)]
81                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
82                 public override FontInfo Font\r
83                 {\r
84                         get\r
85                         {\r
86                                 return base.Font;\r
87                         }\r
88                 }\r
89
90 #if !NET_2_0\r
91                 [Bindable (true)]\r
92 #endif\r
93                 [DefaultValue (typeof (ImageAlign), "NotSet"), WebCategory ("Layout")]
94                 [WebSysDescription ("The alignment of the image.")]\r
95                 public virtual ImageAlign ImageAlign\r
96                 {\r
97                         get\r
98                         {\r
99                                 object o = ViewState["ImageAlign"];\r
100                                 if(o!=null)\r
101                                         return (ImageAlign)o;\r
102                                 return ImageAlign.NotSet;\r
103                         }\r
104                         set\r
105                         {\r
106                                 ViewState["ImageAlign"] = value;\r
107                         }\r
108                 }\r
109
110 #if NET_2_0\r
111                 [Localizable (true)]\r
112                 [UrlProperty]\r
113 #endif\r
114                 [DefaultValue (""), Bindable (true), WebCategory ("Appearance")]
115                 [Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
116                 [WebSysDescription ("The URL to the image file.")]\r
117                 public virtual string ImageUrl\r
118                 {\r
119                         get\r
120                         {\r
121                                 object o = ViewState["ImageUrl"];\r
122                                 if(o!=null)\r
123                                         return (string)o;\r
124                                 return String.Empty;\r
125                         }\r
126                         set\r
127                         {\r
128                                 ViewState["ImageUrl"] = value;\r
129                         }\r
130                 }\r
131                 \r
132 #if NET_1_1\r
133                 [WebCategory ("Accessibility")]\r
134                 [DefaultValueAttribute ("")]\r
135 #if NET_2_0
136                 [UrlPropertyAttribute]\r
137                 [EditorAttribute ("System.Web.UI.Design.UrlEditor, System.Design, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")]\r
138 #endif
139                 public string DescriptionUrl {\r
140                         get {\r
141                                 object o = ViewState["DescriptionUrl"];\r
142                                 if(o!=null)\r
143                                         return (string)o;\r
144                                 return String.Empty;\r
145                         }\r
146                         set {\r
147                                 ViewState["DescriptionUrl"] = value;\r
148                         }\r
149                 }\r
150                 \r
151                 [DefaultValueAttribute (false)]\r
152                 [WebCategory ("Accessibility")]\r
153                 public bool GenerateEmptyAlternateText {\r
154                         get {\r
155                                 object o = ViewState["GenerateEmptyAlternateText"];\r
156                                 if(o!=null)\r
157                                         return (bool)o;\r
158                                 return false;\r
159                         }\r
160                         set {\r
161                                 ViewState["GenerateEmptyAlternateText"] = value;\r
162                         }\r
163                 }\r
164                 \r
165 #endif          \r
166 \r
167                 protected override void AddAttributesToRender(HtmlTextWriter writer)\r
168                 {\r
169                         base.AddAttributesToRender(writer);\r
170                         if(ImageUrl.Length > 0)\r
171                         {\r
172                                 writer.AddAttribute(HtmlTextWriterAttribute.Src, ResolveUrl(ImageUrl));\r
173                         }\r
174 \r
175 #if NET_1_1\r
176                         if (DescriptionUrl.Length > 0)\r
177                                 writer.AddAttribute ("longdesc", DescriptionUrl);\r
178                                 \r
179                         if (AlternateText.Length > 0 || GenerateEmptyAlternateText)\r
180                                 writer.AddAttribute(HtmlTextWriterAttribute.Alt, AlternateText);\r
181 #else\r
182                         if (AlternateText.Length > 0)\r
183                                 writer.AddAttribute(HtmlTextWriterAttribute.Alt, AlternateText);\r
184 #endif\r
185                         \r
186                         if(BorderWidth.IsEmpty)\r
187                         {\r
188                                 writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");\r
189                         }\r
190                         if(ImageAlign != ImageAlign.NotSet)\r
191                         {\r
192                                 writer.AddAttribute(HtmlTextWriterAttribute.Align, Enum.Format(typeof(ImageAlign), ImageAlign, "G"));\r
193                         }\r
194                 }\r
195 \r
196                 protected override void RenderContents(HtmlTextWriter writer)\r
197                 {\r
198                 }\r
199         }\r
200 }\r