2 // System.Web.UI.WebControls.HyperLink.cs
5 // Gaurav Vaish (gvaish@iitk.ac.in)
6 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
7 // Andreas Nahr (ClassDevelopment@A-SoftTech.com)
9 // (c) 2002 Ximian, Inc. (http://www.ximian.com)
10 // (C) Gaurav Vaish (2002)
11 // (C) 2003 Andreas Nahr
15 // Permission is hereby granted, free of charge, to any person obtaining
16 // a copy of this software and associated documentation files (the
17 // "Software"), to deal in the Software without restriction, including
18 // without limitation the rights to use, copy, modify, merge, publish,
19 // distribute, sublicense, and/or sell copies of the Software, and to
20 // permit persons to whom the Software is furnished to do so, subject to
21 // the following conditions:
23 // The above copyright notice and this permission notice shall be
24 // included in all copies or substantial portions of the Software.
26 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
27 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
29 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
30 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
31 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
32 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37 using System.Web.UI;
\r
38 using System.ComponentModel;
39 using System.ComponentModel.Design;
\r
41 namespace System.Web.UI.WebControls
\r
43 [DefaultProperty("Text")]
\r
44 [ControlBuilder(typeof(HyperLinkControlBuilder))]
\r
45 [Designer("System.Web.UI.Design.WebControls.HyperLinkDesigner, " + Consts.AssemblySystem_Design, typeof (IDesigner))]
\r
46 [DataBindingHandler("System.Web.UI.Design.HyperLinkDataBindingHandler, " + Consts.AssemblySystem_Design)]
\r
47 [ParseChildren(false)]
\r
48 [ToolboxData("<{0}:HyperLink runat=\"server\">HyperLink</{0}:HyperLink>")]
\r
49 public class HyperLink: WebControl
\r
53 public HyperLink(): base(HtmlTextWriterTag.A)
\r
57 [DefaultValue (""), Bindable (true), WebCategory ("Appearance")]
58 [Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
59 [WebSysDescription ("The URL to the image file.")]
\r
60 public virtual string ImageUrl
\r
64 object o = ViewState["ImageUrl"];
\r
67 return String.Empty;
\r
71 ViewState["ImageUrl"] = value;
\r
75 [DefaultValue (""), Bindable (true), WebCategory ("Navigation")]
76 [Editor ("System.Web.UI.Design.UrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
77 [WebSysDescription ("The URL to navigate to.")]
\r
78 public string NavigateUrl
\r
82 object o = ViewState["NavigateUrl"];
\r
85 return String.Empty;
\r
89 ViewState["NavigateUrl"] = value;
\r
93 [DefaultValue (""), Bindable (true), WebCategory ("Navigation")]
94 [TypeConverter (typeof (TargetConverter))]
95 [WebSysDescription ("The target frame in which the navigation target should be opened.")]
\r
96 public string Target
\r
100 object o = ViewState["Target"];
\r
103 return String.Empty;
\r
107 ViewState["Target"] = value;
\r
111 [DefaultValue (""), Bindable (true), WebCategory ("Appearance")]
112 [PersistenceMode (PersistenceMode.InnerDefaultProperty)]
113 [WebSysDescription ("The text that should be shown on this HyperLink.")]
\r
114 public virtual string Text
\r
117 object o = ViewState ["Text"];
\r
121 return String.Empty;
\r
126 ViewState["Text"] = value;
\r
131 string InternalText
\r
133 get { return Text; }
\r
134 set { ViewState["Text"] = value; }
\r
137 protected override void AddAttributesToRender(HtmlTextWriter writer)
\r
139 base.AddAttributesToRender(writer);
\r
140 if(NavigateUrl.Length > 0)
\r
142 string url = ResolveUrl (NavigateUrl);
143 writer.AddAttribute(HtmlTextWriterAttribute.Href, url);
\r
145 if(Target.Length > 0)
\r
147 writer.AddAttribute(HtmlTextWriterAttribute.Target, Target);
\r
151 protected override void AddParsedSubObject(object obj)
\r
155 base.AddParsedSubObject(obj);
\r
158 if(obj is LiteralControl)
\r
160 // This is a hack to workaround the behaviour of the code generator, which
\r
161 // may split a text in several LiteralControls if there's a special character
\r
162 // such as '<' in it.
\r
164 Text = ((LiteralControl)obj).Text;
\r
167 InternalText += ((LiteralControl)obj).Text;
\r
173 if(Text.Length > 0)
\r
175 base.AddParsedSubObject(new LiteralControl (Text));
\r
176 Text = String.Empty;
\r
178 base.AddParsedSubObject (obj);
\r
181 protected override void LoadViewState(object savedState)
\r
183 if(savedState != null)
\r
185 base.LoadViewState(savedState);
\r
186 object o = ViewState["Text"];
\r
192 protected override void RenderContents(HtmlTextWriter writer)
\r
194 if(ImageUrl.Length > 0)
\r
196 Image img = new Image();
\r
197 img.ImageUrl = ResolveUrl(ImageUrl);
\r
198 if(ToolTip.Length > 0)
\r
199 img.ToolTip = ToolTip;
\r
200 if(Text.Length > 0)
\r
201 img.AlternateText = Text;
\r
202 img.RenderControl(writer);
\r
207 base.RenderContents(writer);
\r
210 writer.Write(Text);
\r