//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ using System; using System.Collections; using System.ComponentModel; using System.Configuration; using System.Web; using System.Web.Resources; using System.Web.Security; using System.Web.UI; namespace System.Web.UI.WebControls { /// /// Summary description for DataPagerFieldCollection /// public class DataPagerFieldCollection : StateManagedCollection { private DataPager _dataPager; private static readonly Type[] knownTypes = new Type[] { typeof(NextPreviousPagerField), typeof(NumericPagerField), typeof(TemplatePagerField) }; public event EventHandler FieldsChanged; public DataPagerFieldCollection(DataPager dataPager) { _dataPager = dataPager; } /// /// Gets a at the specified index in the /// collection. /// [ Browsable(false) ] public DataPagerField this[int index] { get { return ((IList)this)[index] as DataPagerField; } } /// /// Appends a to the collection. /// public void Add(DataPagerField field) { ((IList)this).Add(field); } /// /// Provides a deep copy of the collection. Used mainly by design time dialogs to implement "cancel" rollback behavior. /// public DataPagerFieldCollection CloneFields(DataPager pager) { DataPagerFieldCollection fields = new DataPagerFieldCollection(pager); foreach (DataPagerField field in this) { fields.Add(field.CloneField()); } return fields; } /// /// Returns whether a DataPagerField is a member of the collection. /// public bool Contains(DataPagerField field) { return ((IList)this).Contains(field); } /// /// Copies the contents of the entire collection into an appending at /// the specified index of the . /// public void CopyTo(DataPagerField[] array, int index) { ((IList)this).CopyTo(array, index); return; } /// /// Creates a known type of DataPagerField. /// protected override object CreateKnownType(int index) { switch (index) { case 0: return new NextPreviousPagerField(); case 1: return new NumericPagerField(); case 2: return new TemplatePagerField(); default: throw new ArgumentOutOfRangeException(AtlasWeb.PagerFieldCollection_InvalidTypeIndex); } } /// /// Returns an ArrayList of known DataPagerField types. /// protected override Type[] GetKnownTypes() { return knownTypes; } /// /// Returns the index of the first occurrence of a value in a . /// public int IndexOf(DataPagerField field) { return ((IList)this).IndexOf(field); } /// /// Inserts a to the collection /// at the specified index. /// public void Insert(int index, DataPagerField field) { ((IList)this).Insert(index, field); } /// /// Called when the Clear() method is complete. /// protected override void OnClearComplete() { OnFieldsChanged(); } /// /// void OnFieldChanged(object sender, EventArgs e) { OnFieldsChanged(); } /// /// void OnFieldsChanged() { if (FieldsChanged != null) { FieldsChanged(this, EventArgs.Empty); } } /// /// Called when the Insert() method is complete. /// protected override void OnInsertComplete(int index, object value) { DataPagerField field = value as DataPagerField; if (field != null) { field.FieldChanged += new EventHandler(OnFieldChanged); } field.SetDataPager(_dataPager); OnFieldsChanged(); } /// /// Called when the Remove() method is complete. /// protected override void OnRemoveComplete(int index, object value) { DataPagerField field = value as DataPagerField; if (field != null) { field.FieldChanged -= new EventHandler(OnFieldChanged); } OnFieldsChanged(); } /// /// Validates that an object is a HotSpot. /// protected override void OnValidate(object o) { base.OnValidate(o); if (!(o is DataPagerField)) throw new ArgumentException(AtlasWeb.PagerFieldCollection_InvalidType); } /// /// Removes a from the collection at the specified /// index. /// public void RemoveAt(int index) { ((IList)this).RemoveAt(index); } /// /// Removes the specified from the collection. /// public void Remove(DataPagerField field) { ((IList)this).Remove(field); } /// /// Marks a DataPagerField as dirty so that it will record its entire state into view state. /// protected override void SetDirtyObject(object o) { ((DataPagerField)o).SetDirty(); } } }