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