2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / Label.cs
1 //
2 // System.Web.UI.WebControls.Label.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 //
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.ComponentModel;
35 using System.ComponentModel.Design;\r
36 using System.Web;\r
37 using System.Web.UI;\r
38 \r
39 namespace System.Web.UI.WebControls\r
40 {\r
41         [DefaultProperty("Text")]\r
42         [Designer("System.Web.UI.Design.WebControls.LabelDesigner, " + Consts.AssemblySystem_Design, typeof (IDesigner))]\r
43         [DataBindingHandler("System.Web.UI.Design.TextDataBindingHandler, " + Consts.AssemblySystem_Design)]\r
44         [ControlBuilder(typeof(LabelControlBuilder))] \r
45         [ParseChildren(false)]\r
46         [ToolboxData("<{0}:Label runat=\"server\">Label</{0}:Label>")]\r
47         public class Label : WebControl\r
48         {\r
49                 public Label (): base ()\r
50                 {\r
51                 }\r
52 \r
53                 internal Label (HtmlTextWriterTag tagKey) : base (tagKey)\r
54                 {\r
55                 }\r
56
57                 [DefaultValue (""), Bindable (true), WebCategory ("Appearance")]
58                 [PersistenceMode (PersistenceMode.InnerDefaultProperty)]
59                 [WebSysDescription ("The text that should be shown on this Label.")]\r
60                 public virtual string Text\r
61                 {\r
62                         get {\r
63                                 object o = ViewState ["Text"];\r
64                                 return (o == null) ? String.Empty : (string) o;\r
65                         }\r
66 \r
67                         set { ViewState ["Text"] = value; }\r
68                 }\r
69 \r
70                 protected override void AddParsedSubObject (object obj)\r
71                 {\r
72                         if(HasControls ()){\r
73                                 base.AddParsedSubObject (obj);\r
74                                 return;\r
75                         }\r
76 \r
77                         if(obj is LiteralControl){\r
78                                 Text = ((LiteralControl) obj).Text;\r
79                                 return;\r
80                         }\r
81 \r
82                         if(Text.Length > 0){\r
83                                 base.AddParsedSubObject (new LiteralControl (Text));\r
84                                 Text = String.Empty;\r
85                         }\r
86 \r
87                         base.AddParsedSubObject (obj);\r
88                 }\r
89 \r
90                 protected override void LoadViewState (object savedState)\r
91                 {\r
92                         if(savedState != null) {\r
93                                 base.LoadViewState (savedState);\r
94                                 string savedText = ViewState ["Text"] as string;\r
95                                 if(savedText != null)\r
96                                         Text = savedText;\r
97                         }\r
98                 }\r
99 \r
100                 protected override void RenderContents (HtmlTextWriter writer)\r
101                 {\r
102                         if(HasControls ())\r
103                                 base.RenderContents (writer);\r
104                         else\r
105                                 writer.Write (Text);\r
106                 }\r
107         }\r
108 }\r