2002-03-16 Gaurav Vaish <gvaish@iitk.ac.in>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / TableItemStyle.cs
1 /**\r
2  * Namespace: System.Web.UI.WebControls\r
3  * Class:     TableItemStyle\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.Web;\r
16 using System.Web.UI;\r
17 \r
18 namespace System.Web.UI.WebControls\r
19 {\r
20         public class TableItemStyle: Style\r
21         {\r
22                 private static int H_ALIGN = (0x01 << 16);\r
23                 private static int V_ALIGN = (0x01 << 17);\r
24                 private static int WRAP    = (0x01 << 18);\r
25 \r
26                 public TableItemStyle(): base()\r
27                 {\r
28                 }\r
29 \r
30                 public TableItemStyle(StateBag bag): base(bag)\r
31                 {\r
32                 }\r
33 \r
34                 public virtual HorizontalAlign HorizontalAlign\r
35                 {\r
36                         get\r
37                         {\r
38                                 if(IsSet(H_ALIGN))\r
39                                         return (HorizontalAlign)ViewState["HorizontalAlign"];\r
40                                 return HorizontalAlign.NotSet;\r
41                         }\r
42                         set\r
43                         {\r
44                                 if(!Enum.IsDefined(typeof(HorizontalAlign), value))\r
45                                 {\r
46                                         throw new ArgumentException();\r
47                                 }\r
48                                 ViewState["HorizontalAlign"] = value;\r
49                                 Set(H_ALIGN);\r
50                         }\r
51                 }\r
52 \r
53                 public virtual VerticalAlign VerticalAlign\r
54                 {\r
55                         get\r
56                         {\r
57                                 if(IsSet(V_ALIGN))\r
58                                         return (VerticalAlign)iewState["VerticalAlign"];\r
59                                 return VerticalAlign.NotSet;\r
60                         }\r
61                         set\r
62                         {\r
63                                 if(!Enum.IsDefined(typeof(VerticalAlign), value))\r
64                                 {\r
65                                         throw new ArgumentException();\r
66                                 }\r
67                                 ViewState["VerticalAlign"] = value;\r
68                                 Set(V_ALIGN);\r
69                         }\r
70                 }\r
71 \r
72                 public virtual bool Wrap\r
73                 {\r
74                         get\r
75                         {\r
76                                 if(IsSet(WRAP))\r
77                                         return (bool)ViewState["Wrap"];\r
78                                 return true;\r
79                         }\r
80                         set\r
81                         {\r
82                                 ViewState["Wrap"] = value;\r
83                         }\r
84                 }\r
85 \r
86                 public override void CopyFrom(Style s)\r
87                 {\r
88                         if(s!=null && s is TableItemStyle && !s.IsEmpty)\r
89                         {\r
90                                 base.CopyFrom(s);\r
91                                 TableItemStyle from = (TableItemStyle)s;\r
92                                 if(from.IsSet(H_ALIGN))\r
93                                 {\r
94                                         HorizontalAlign = from.HorizontalAlign;\r
95                                 }\r
96                                 if(from.IsSet(V_ALIGN))\r
97                                 {\r
98                                         VerticalAlign = from.VerticalAlign;\r
99                                 }\r
100                                 if(from.IsSet(WRAP))\r
101                                 {\r
102                                         Wrap = from.Wrap;\r
103                                 }\r
104                         }\r
105                 }\r
106 \r
107                 public override void MergeWith(Style s)\r
108                 {\r
109                         if(s!=null && s is TableItemStyle && !s.IsEmpty)\r
110                         {\r
111                                 base.MergeWith(s);\r
112                                 TableItemStyle with = (TableItemStyle)s;\r
113                                 if(from.IsSet(H_ALIGN) && !IsSet(H_ALIGN))\r
114                                 {\r
115                                         HorizontalAlign = with.HorizontalAlign;\r
116                                 }\r
117                                 if(from.IsSet(V_ALIGN) && !IsSet(V_ALIGN))\r
118                                 {\r
119                                         VerticalAlign = with.VerticalAlign;\r
120                                 }\r
121                                 if(from.IsSet(WRAP) && !IsSet(WRAP))\r
122                                 {\r
123                                         Wrap = with.Wrap;\r
124                                 }\r
125                         }\r
126                 }\r
127 \r
128                 public override void Reset()\r
129                 {\r
130                         if(IsSet(H_ALIGN))\r
131                                 ViewState.Remove("HorizontalAlign");\r
132                         if(IsSet(V_ALIGN))\r
133                                 ViewState.Remove("VerticalAlign");\r
134                         if(IsSet(WRAP))\r
135                                 ViewState.Remove("Wrap");\r
136                         base.Reset();\r
137                 }\r
138 \r
139                 public override void AddAttributesToRender(HtmlTextWriter writer, WebControl owner)\r
140                 {\r
141                         base.AddAttributesToRender(writer, owner);\r
142                         if(!Wrap)\r
143                         {\r
144                                 writer.AddAttribute(HtmlTextWriterAttribute.NoWrap, "nowrap");\r
145                         }\r
146                         if(HorizontalAlign != HorizontalAlign.NotSet)\r
147                         {\r
148                                 writer.AddAttribute(HtmlTextWriterAttribute.Align, TypeDescriptor.GetConverter(typeof(HorizontalAlign)).ConvertToString(HorizontalAlign));\r
149                         }\r
150                         if(VerticalAlign != VerticalAlign.NotSet)\r
151                         {\r
152                                 writer.AddAttribute(HtmlTextWriterAttribute.Valign, TypeDescriptor.GetConverter(typeof(VerticalAlign)).ConvertToString(VerticalAlign));\r
153                         }\r
154                 }\r
155         }\r
156 }\r