1 // 2 // System.Web.UI.WebControls.TableCellCollection.cs 3 // 4 // Author: 5 // Sebastien Pouliot <sebastien@ximian.com> 6 // 7 // Copyright (C) 2005 Novell, Inc (http://www.novell.com) 8 // 9 // Permission is hereby granted, free of charge, to any person obtaining 10 // a copy of this software and associated documentation files (the 11 // "Software"), to deal in the Software without restriction, including 12 // without limitation the rights to use, copy, modify, merge, publish, 13 // distribute, sublicense, and/or sell copies of the Software, and to 14 // permit persons to whom the Software is furnished to do so, subject to 15 // the following conditions: 16 // 17 // The above copyright notice and this permission notice shall be 18 // included in all copies or substantial portions of the Software. 19 // 20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 27 // 28 29 using System.ComponentModel; 30 using System.Collections; 31 32 namespace System.Web.UI.WebControls { 33 34 [Editor ("System.Web.UI.Design.WebControls.TableCellsCollectionEditor, " + Consts.AssemblySystem_Design, "System.Drawing.Design.UITypeEditor, " + Consts.AssemblySystem_Drawing)] 35 public sealed class TableCellCollection : IList, ICollection, IEnumerable 36 { 37 ControlCollection cc; 38 TableCellCollection(TableRow tr)39 internal TableCellCollection (TableRow tr) 40 { 41 cc = tr.Controls; 42 } 43 44 45 public int Count { 46 get { return cc.Count; } 47 } 48 49 public bool IsReadOnly { 50 get { return false; } // documented as always false 51 } 52 53 public bool IsSynchronized { 54 get { return false; } // documented as always false 55 } 56 57 public TableCell this [int index] { 58 get { return (TableCell) cc [index]; } 59 } 60 61 public object SyncRoot { 62 get { return this; } // as documented 63 } 64 65 Add(TableCell cell)66 public int Add (TableCell cell) 67 { 68 int index = cc.IndexOf (cell); 69 if (index < 0) { 70 cc.Add (cell); 71 index = cc.Count; 72 } 73 return index; 74 } 75 AddAt(int index, TableCell cell)76 public void AddAt (int index, TableCell cell) 77 { 78 if (cc.IndexOf (cell) < 0) 79 cc.AddAt (index, cell); 80 } 81 AddRange(TableCell[] cells)82 public void AddRange (TableCell[] cells) 83 { 84 foreach (TableCell td in cells) { 85 if (cc.IndexOf (td) < 0) 86 cc.Add (td); 87 } 88 } 89 Clear()90 public void Clear () 91 { 92 cc.Clear (); 93 } 94 CopyTo(Array array, int index)95 public void CopyTo (Array array, int index) 96 { 97 cc.CopyTo (array, index); 98 } 99 GetCellIndex(TableCell cell)100 public int GetCellIndex (TableCell cell) 101 { 102 return cc.IndexOf (cell); 103 } 104 GetEnumerator()105 public IEnumerator GetEnumerator () 106 { 107 return cc.GetEnumerator (); 108 } 109 Remove(TableCell cell)110 public void Remove (TableCell cell) 111 { 112 cc.Remove (cell); 113 } 114 RemoveAt(int index)115 public void RemoveAt (int index) 116 { 117 cc.RemoveAt (index); 118 } 119 120 121 // implements IList but doesn't make some members public 122 123 bool IList.IsFixedSize { 124 get { return false; } 125 } 126 127 object IList.this [int index] { 128 get { return cc [index]; } 129 set { 130 cc.AddAt (index, (TableRow)value); 131 cc.RemoveAt (index + 1); 132 } 133 } 134 135 IList.Add(object value)136 int IList.Add (object value) 137 { 138 cc.Add ((TableRow)value); 139 return cc.IndexOf ((TableRow)value); 140 } 141 IList.Contains(object value)142 bool IList.Contains (object value) 143 { 144 return cc.Contains ((TableRow)value); 145 } 146 IList.IndexOf(object value)147 int IList.IndexOf (object value) 148 { 149 return cc.IndexOf ((TableRow)value); 150 } 151 IList.Insert(int index, object value)152 void IList.Insert (int index, object value) 153 { 154 cc.AddAt (index, (TableRow)value); 155 } 156 IList.Remove(object value)157 void IList.Remove (object value) 158 { 159 cc.Remove ((TableRow)value); 160 } 161 } 162 } 163