2004-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / TableCellCollection.cs
1 /**\r
2  * Namespace: System.Web.UI.WebControls\r
3  * Class:     TableCellCollection\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.Collections;\r
16 using System.Web;\r
17 using System.Web.UI;\r
18 using System.ComponentModel;\r
19 \r
20 namespace System.Web.UI.WebControls\r
21 {\r
22         [Editor ("System.Web.UI.Design.WebControls.TableCellsCollectionEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]\r
23         public sealed class TableCellCollection: IList, ICollection, IEnumerable\r
24         {\r
25                 private TableRow owner;\r
26 \r
27                 internal TableCellCollection(TableRow owner)\r
28                 {\r
29                         if(owner == null)\r
30                         {\r
31                                 throw new ArgumentNullException();\r
32                         }\r
33                         this.owner = owner;\r
34                 }\r
35 \r
36                 public int Count\r
37                 {\r
38                         get\r
39                         {\r
40                                 return owner.Controls.Count;\r
41                         }\r
42                 }\r
43 \r
44                 public bool IsReadOnly\r
45                 {\r
46                         get\r
47                         {\r
48                                 return false;\r
49                         }\r
50                 }\r
51 \r
52                 public bool IsSynchronized\r
53                 {\r
54                         get\r
55                         {\r
56                                 return false;\r
57                         }\r
58                 }\r
59 \r
60                 public TableCell this[int index]\r
61                 {\r
62                         get\r
63                         {\r
64                                 return (TableCell)owner.Controls[index];\r
65                         }\r
66                 }\r
67 \r
68                 public object SyncRoot\r
69                 {\r
70                         get\r
71                         {\r
72                                 return this;\r
73                         }\r
74                 }\r
75 \r
76                 public int Add(TableCell cell)\r
77                 {\r
78                         AddAt(-1, cell);\r
79                         return owner.Controls.Count - 1;\r
80                 }\r
81 \r
82                 public void AddAt(int index, TableCell cell)\r
83                 {\r
84                         owner.Controls.AddAt(index, cell);\r
85                 }\r
86 \r
87                 public void AddRange(TableCell[] cells)\r
88                 {\r
89                         foreach(TableCell cell in cells)\r
90                         {\r
91                                 Add(cell);\r
92                         }\r
93                 }\r
94 \r
95                 public void Clear()\r
96                 {\r
97                         if(owner.HasControls())\r
98                         {\r
99                                 owner.Controls.Clear();\r
100                         }\r
101                 }\r
102 \r
103                 public void CopyTo(Array array, int index)\r
104                 {\r
105                         foreach(object cell in this)\r
106                         {\r
107                                 array.SetValue(cell, index++);\r
108                         }\r
109                 }\r
110 \r
111                 public int GetCellIndex(TableCell cell)\r
112                 {\r
113                         if(!owner.HasControls())\r
114                         {\r
115                                 return -1;\r
116                         }\r
117                         return owner.Controls.IndexOf(cell);\r
118                 }\r
119 \r
120                 public IEnumerator GetEnumerator()\r
121                 {\r
122                         return owner.Controls.GetEnumerator();\r
123                 }\r
124 \r
125                 public void Remove(TableCell cell)\r
126                 {\r
127                         owner.Controls.Remove(cell);\r
128                 }\r
129 \r
130                 public void RemoveAt(int index)\r
131                 {\r
132                         owner.Controls.RemoveAt(index);\r
133                 }\r
134 \r
135                 int IList.Add(object o)\r
136                 {\r
137                         return Add((TableCell)o);\r
138                 }\r
139 \r
140                 bool IList.Contains(object o)\r
141                 {\r
142                         return owner.Controls.Contains((TableCell)o);\r
143                 }\r
144 \r
145                 int IList.IndexOf(object o)\r
146                 {\r
147                         return owner.Controls.IndexOf((TableCell)o);\r
148                 }\r
149 \r
150                 void IList.Insert(int index, object o)\r
151                 {\r
152                         owner.Controls.AddAt(index, (TableCell)o);\r
153                 }\r
154 \r
155                 void IList.Remove(object o)\r
156                 {\r
157                         owner.Controls.Remove((TableCell)o);\r
158                 }\r
159 \r
160                 bool IList.IsFixedSize\r
161                 {\r
162                         get\r
163                         {\r
164                                 return false;\r
165                         }\r
166                 }\r
167 \r
168                 object IList.this[int index]\r
169                 {\r
170                         get\r
171                         {\r
172                                 return this[index];\r
173                         }\r
174                         set\r
175                         {\r
176                                 RemoveAt(index);\r
177                                 AddAt(index, (TableCell)value);\r
178                         }\r
179                 }\r
180         }\r
181 }\r