//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ using System; using System.Collections; using System.ComponentModel; using System.Drawing.Design; using System.Web.UI; namespace System.Web.UI.WebControls { /// /// Collection of HotSpots. /// [ Editor("System.Web.UI.Design.WebControls.HotSpotCollectionEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)) ] public sealed class HotSpotCollection : StateManagedCollection { private static readonly Type[] knownTypes = new Type[] { typeof(CircleHotSpot), typeof(RectangleHotSpot), typeof(PolygonHotSpot), }; /// /// Returns the HotSpot at a given index. /// public HotSpot this[int index] { get { return (HotSpot)((IList)this)[index]; } } /// /// Adds a HotSpot to the collection. /// public int Add(HotSpot spot) { return ((IList)this).Add(spot); } /// /// Creates a known type of HotSpot. /// protected override object CreateKnownType(int index) { switch (index) { case 0: return new CircleHotSpot(); case 1: return new RectangleHotSpot(); case 2: return new PolygonHotSpot(); default: throw new ArgumentOutOfRangeException(SR.GetString(SR.HotSpotCollection_InvalidTypeIndex)); } } /// /// Returns an ArrayList of known HotSpot types. /// protected override Type[] GetKnownTypes() { return knownTypes; } /// /// Inserts a HotSpot into the collection. /// public void Insert(int index, HotSpot spot) { ((IList)this).Insert(index, spot); } /// /// Validates that an object is a HotSpot. /// protected override void OnValidate(object o) { base.OnValidate(o); if (!(o is HotSpot)) throw new ArgumentException(SR.GetString(SR.HotSpotCollection_InvalidType)); } /// /// Removes a HotSpot from the collection. /// public void Remove(HotSpot spot) { ((IList)this).Remove(spot); } /// /// Removes a HotSpot from the collection at a given index. /// public void RemoveAt(int index) { ((IList)this).RemoveAt(index); } /// /// Marks a HotSpot as dirty so that it will record its entire state into view state. /// protected override void SetDirtyObject(object o) { ((HotSpot)o).SetDirty(); } } }