2002-03-26 Gaurav Vaish <gvaish@iitk.ac.in>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / TableCell.cs
1 /**\r
2  * Namespace: System.Web.UI.WebControls\r
3  * Class:     TableCell\r
4  *\r
5  * Author:  Gaurav Vaish\r
6  * Maintainer: gvaish@iitk.ac.in\r
7  * Contact: <my_scripts2001@yahoo.com>, <gvaish@iitk.ac.in>\r
8  * Implementation: yes\r
9  * Status:  100%\r
10  *\r
11  * (C) Gaurav Vaish (2002)\r
12  */\r
13 \r
14 using System;\r
15 using System.Globalization;\r
16 using System.Web;\r
17 using System.Web.UI;\r
18 using Sytem.ComponentModel;\r
19 \r
20 namespace System.Web.UI.WebControls\r
21 {\r
22         [DefaultProperty("Text")]\r
23         [ToolboxItem(false)]\r
24         [ControlBuilder(typeof(TableCellControlBuilder))]\r
25         [ParseChildren(false)]\r
26         [PersistChildren(true)]\r
27         public class TableCell: WebControl\r
28         {\r
29                 [MonoTODO]\r
30                 public TableCell(): base(HtmlTextWriterTag.Td)\r
31                 {\r
32                         //TODO: What's the function to prevent Control to give _auto_generated_id\r
33                 }\r
34 \r
35                 [MonoTODO]\r
36                 internal TableCell(HtmlTextWriterTag tag): base(tag)\r
37                 {\r
38                         //TODO: What's the function to prevent Control to give _auto_generated_id\r
39                 }\r
40 \r
41                 public virtual int ColumnSpan\r
42                 {\r
43                         get\r
44                         {\r
45                                 object o = ViewState["ColumnSpan"];\r
46                                 if(o != null)\r
47                                         return (int)o;\r
48                                 return 0;\r
49                         }\r
50                         set\r
51                         {\r
52                                 ViewState["ColumnSpan"] = value;\r
53                         }\r
54                 }\r
55 \r
56                 public virtual int RowSpan\r
57                 {\r
58                         get\r
59                         {\r
60                                 object o = ViewState["RowSpan"];\r
61                                 if(o != null)\r
62                                         return (int)o;\r
63                                 return 0;\r
64                         }\r
65                         set\r
66                         {\r
67                                 ViewState["RowSpan"] = value;\r
68                         }\r
69                 }\r
70 \r
71                 public virtual string Text\r
72                 {\r
73                         get\r
74                         {\r
75                                 object o = ViewState["Text"];\r
76                                 if(o != null)\r
77                                         return (string)o;\r
78                                 return String.Empty;\r
79                         }\r
80                         set\r
81                         {\r
82                                 ViewState["Text"] = value;\r
83                         }\r
84                 }\r
85 \r
86                 public virtual HorizontalAlign HorizontalAlign\r
87                 {\r
88                         get\r
89                         {\r
90                                 if(ControlStyleCreated)\r
91                                         return ((TableItemStyle)ControlStyle).HorizontalAlign;\r
92                                 return HorizontalAlign.NotSet;\r
93                         }\r
94                         set\r
95                         {\r
96                                 ((TableItemStyle)ControlStyle).HorizontalAlign = value;\r
97                         }\r
98                 }\r
99 \r
100                 public virtual VerticalAlign VerticalAlign\r
101                 {\r
102                         get\r
103                         {\r
104                                 if(ControlStyleCreated)\r
105                                         return ((TableItemStyle)ControlStyle).VerticalAlign;\r
106                                 return VerticalAlign.NotSet;\r
107                         }\r
108                         set\r
109                         {\r
110                                 ((TableItemStyle)ControlStyle).VerticalAlign = value;\r
111                         }\r
112                 }\r
113 \r
114                 public virtual bool Wrap\r
115                 {\r
116                         get\r
117                         {\r
118                                 if(ControlStyleCreated)\r
119                                         return ((TableItemStyle)ControlStyle).Wrap;\r
120                                 return true;\r
121                         }\r
122                         set\r
123                         {\r
124                                 ((TableItemStyle)ControlStyle).Wrap = value;\r
125                         }\r
126                 }\r
127 \r
128                 protected override void AddAttributesToRender(HtmlTextWriter writer)\r
129                 {\r
130                         AddAttributesToRender(writer);\r
131                         if(ColumnSpan > 0)\r
132                                 writer.AddAttribute(HtmlTextWriterAttribute.Colspan, ColumnSpan.ToString(NumberFormatInfo.InvariantInfo));\r
133                         if(RowSpan > 0)\r
134                                 writer.AddAttribute(HtmlTextWriterAttribute.Rowspan, RowSpan.ToString(NumberFormatInfo.InvariantInfo));\r
135                 }\r
136 \r
137                 protected override void AddParsedSubObject(object obj)\r
138                 {\r
139                         if(HasControls())\r
140                         {\r
141                                 AddParsedSubObject(obj);\r
142                                 return;\r
143                         }\r
144                         if(obj is LiteralControl)\r
145                         {\r
146                                 Text = ((LiteralControl)obj).Text;\r
147                                 return;\r
148                         }\r
149                         string text = Text;\r
150                         if(text.Length > 0)\r
151                         {\r
152                                 Text = String.Empty;\r
153                                 AddParsedSubObject(new LiteralControl(text));\r
154                         }\r
155                         AddParsedSubObject(obj);\r
156                 }\r
157 \r
158                 protected override Style CreateControlStyle()\r
159                 {\r
160                         return new TableItemStyle(ViewState);\r
161                 }\r
162 \r
163                 protected override void RenderContents(HtmlTextWriter writer)\r
164                 {\r
165                         if(HasControls())\r
166                         {\r
167                                 RenderContents(writer);\r
168                                 return;\r
169                         }\r
170                         writer.Write(Text);\r
171                 }\r
172         }\r
173 }\r