2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.Web / System.Web.UI.HtmlControls / HtmlAnchor.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.ComponentModel;\r
8 using System.Web;\r
9 using System.Web.UI;\r
10 \r
11 namespace System.Web.UI.HtmlControls{\r
12         \r
13         [DefaultEvent("ServerClick")]\r
14         public class HtmlAnchor : HtmlContainerControl, IPostBackEventHandler{\r
15                 \r
16                 private static readonly object EventServerClick = new object ();\r
17                 \r
18                 public HtmlAnchor(): base("a"){}\r
19                 \r
20                 protected override void OnPreRender (EventArgs e)\r
21                 {\r
22                         base.OnPreRender (e);\r
23                         if (Page != null && Events [EventServerClick] != null)\r
24                                 Page.RequiresPostBackScript ();\r
25                 }\r
26 \r
27                 protected virtual void OnServerClick(EventArgs e){\r
28                         EventHandler handler;\r
29                         handler = (EventHandler) Events[EventServerClick];\r
30                         if (handler != null)\r
31                                 handler (this, e);\r
32                 }\r
33                 \r
34                 protected override void RenderAttributes(HtmlTextWriter writer){\r
35                         if ( Events[EventServerClick] != null){\r
36                                 Attributes.Remove("href");\r
37                                 base.RenderAttributes(writer);\r
38                                 writer.WriteAttribute("href", Page.GetPostBackClientHyperlink(this,String.Empty));\r
39                         }\r
40                         else{\r
41                                 PreProcessRelativeReference(writer,"href");\r
42                                 base.RenderAttributes(writer);\r
43                         }\r
44                 }\r
45                 \r
46                 void System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(string eventArgument){\r
47                         OnServerClick(EventArgs.Empty);\r
48                 }\r
49 \r
50                 [WebCategory("Action")]\r
51                 [WebSysDescription("Fires when the control is clicked.")]\r
52                 public event EventHandler ServerClick{\r
53                         add{\r
54                                 Events.AddHandler(EventServerClick, value);\r
55                         }\r
56                         remove{\r
57                                 Events.RemoveHandler(EventServerClick, value);\r
58                         }\r
59                 }\r
60                 \r
61                 [DefaultValue("")]\r
62                 [WebCategory("Action")]\r
63                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
64                 public string HRef{\r
65                         get{\r
66                                 string attr = Attributes["href"];\r
67                                 if (attr != null) return attr;\r
68                                 return String.Empty;\r
69                         }\r
70                         set{\r
71                                 Attributes["href"] = AttributeToString(value);\r
72                         }\r
73                 }\r
74                 \r
75                 [DefaultValue("")]\r
76                 [WebCategory("Navigation")]\r
77                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
78                 public string Name{\r
79                         get{\r
80                                 string attr = Attributes["name"];\r
81                                 if (attr != null) return attr;\r
82                                 return String.Empty;\r
83                         }\r
84                         set{\r
85                                 Attributes["name"] = AttributeToString(value);\r
86                         }\r
87                 }\r
88                 \r
89                 [DefaultValue("")]\r
90                 [WebCategory("Navigation")]\r
91                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
92                 public string Target{\r
93                         get{\r
94                                 string attr = Attributes["target"];\r
95                                 if (attr != null) return attr;\r
96                                 return String.Empty;\r
97                         }\r
98                         set{\r
99                                 Attributes["target"] = AttributeToString(value);\r
100                         }\r
101                 }\r
102                 \r
103                 [DefaultValue("")]\r
104                 [WebCategory("Appearance")]\r
105                 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]\r
106                 public string Title{\r
107                         get{\r
108                                 string attr = Attributes["title"];\r
109                                 if (attr != null) return attr;\r
110                                 return String.Empty;\r
111                         }\r
112                         set{\r
113                                 Attributes["title"] = AttributeToString(value);\r
114                         }\r
115                 }\r
116                 \r
117         } // class HtmlAnchor\r
118 } // namespace System.Web.UI.HtmlControls\r
119 \r