//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Web.UI.WebControls { using System; using System.Collections; using System.ComponentModel; using System.Drawing.Design; using System.Web; using System.Web.UI; /// /// Encapsulates the collection of and objects within a /// /// control. /// [ Editor("System.Web.UI.Design.WebControls.TableCellsCollectionEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)) ] public sealed class TableCellCollection : IList { /// /// /// A protected field of type . Represents the /// /// collection internally. /// /// private TableRow owner; /// /// internal TableCellCollection(TableRow owner) { this.owner = owner; } /// /// Gets the /// count in the collection. /// public int Count { get { if (owner.HasControls()) { return owner.Controls.Count; } return 0; } } /// /// /// Gets a /// referenced by the specified /// ordinal index value. /// /// public TableCell this[int index] { get { return(TableCell)owner.Controls[index]; } } /// /// /// Adds the specified to the end of the collection. /// /// public int Add(TableCell cell) { AddAt(-1, cell); return owner.Controls.Count - 1; } /// /// /// Adds the specified to the collection at the specified /// index location. /// /// public void AddAt(int index, TableCell cell) { owner.Controls.AddAt(index, cell); } /// /// public void AddRange(TableCell[] cells) { if (cells == null) { throw new ArgumentNullException("cells"); } foreach(TableCell cell in cells) { Add(cell); } } /// /// Removes all controls /// from the collection. /// public void Clear() { if (owner.HasControls()) { owner.Controls.Clear(); } } /// /// Returns an ordinal index value that represents the position of the /// specified within the collection. /// public int GetCellIndex(TableCell cell) { if (owner.HasControls()) { return owner.Controls.IndexOf(cell); } return -1; } /// /// /// Returns an enumerator of all controls within the /// collection. /// /// public IEnumerator GetEnumerator() { return owner.Controls.GetEnumerator(); } /// /// Copies contents from the collection to the specified with the /// specified starting index. /// public void CopyTo(Array array, int index) { for (IEnumerator e = this.GetEnumerator(); e.MoveNext();) array.SetValue(e.Current, index++); } /// /// /// Gets the object that can be used to synchronize access to the /// collection. In this case, it is the collection itself. /// /// public Object SyncRoot { get { return this;} } /// /// /// Gets a value indicating whether the collection is read-only. /// /// public bool IsReadOnly { get { return false;} } /// /// /// Gets a value indicating whether access to the collection is synchronized /// (thread-safe). /// /// public bool IsSynchronized { get { return false;} } /// /// /// Removes the specified from the /// collection. /// /// public void Remove(TableCell cell) { owner.Controls.Remove(cell); } /// /// /// Removes the from the collection at the /// specified index location. /// /// public void RemoveAt(int index) { owner.Controls.RemoveAt(index); } // IList implementation, required by collection editor /// object IList.this[int index] { get { return owner.Controls[index]; } set { RemoveAt(index); AddAt(index, (TableCell)value); } } /// bool IList.IsFixedSize { get { return false; } } /// int IList.Add(object o) { return Add((TableCell) o); } /// bool IList.Contains(object o) { return owner.Controls.Contains((TableCell)o); } /// int IList.IndexOf(object o) { return owner.Controls.IndexOf((TableCell)o); } /// void IList.Insert(int index, object o) { owner.Controls.AddAt(index, (TableCell)o); } /// void IList.Remove(object o) { owner.Controls.Remove((TableCell)o); } } }