using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; namespace HotelPms.Share.Windows.Component.Design { public class DesignItemCollection : CollectionBase { private DesignPanel owner; public virtual DesignItem this[int index] { get { return this.List[index] as DesignItem; } } public DesignItemCollection(DesignPanel owner) : base() { if (owner == null) throw new ArgumentNullException("owner"); this.owner = owner; } public DesignItemCollection(DesignPanel owner, DesignItem dateItems) : this(owner) { this.Add(dateItems); } public int IndexOf(DesignItem dateItem) { if (dateItem == null) throw new ArgumentNullException("dateItem"); for (int i = 0; i < this.Count; i++) { if (this[i] == dateItem) { return i; } } return -1; } public void Add(DesignItem value) { int index; if (value == null) throw new ArgumentNullException("value"); //if (value.Owner == null) { value.Owner = this.owner; } index = this.IndexOf(value); if (index == -1) this.List.Add(value); else this.List[index] = value; } public void Insert(DesignItem value, int p) { int index; if (value == null) throw new ArgumentNullException("value"); //if (value.Owner == null) { value.Owner = this.owner; } index = this.IndexOf(value); if (index == -1) this.List.Insert(p, value); else this.List[index] = value; } public void AddRange(DesignItem[] dateItems) { if (dateItems == null) throw new ArgumentNullException("dateItems"); for (int i = 0; i < dateItems.Length; i++) { //dateItems[i].Owner = owner; this.Add(dateItems[i]); } } public void Add(DesignItemCollection dateItems) { if (dateItems == null) throw new ArgumentNullException("dateItems"); for (int i = 0; i < dateItems.Count; i++) { this.Add(dateItems[i]); } } public new void Clear() { while (this.Count > 0) { this.RemoveAt(0); } } public bool Contains(DesignItem dateItem) { if (dateItem == null) throw new ArgumentNullException("dateItem"); return (this.IndexOf(dateItem) != -1); } public void Remove(DesignItem value) { if (value == null) throw new ArgumentNullException("value"); this.List.Remove(value); } public new void RemoveAt(int index) { this.Remove(this[index]); } public void Move(DesignItem value, int index) { if (value == null) throw new ArgumentNullException("value"); if (index < 0) { index = 0; } else if (index > this.Count) { index = this.Count; } if (!this.Contains(value) || this.IndexOf(value) == index) { return; } this.List.Remove(value); if (index > this.Count) { this.List.Add(value); } else { this.List.Insert(index, value); } } public void MoveToTop(DesignItem value) { this.Move(value, 0); } public void MoveToBottom(DesignItem value) { this.Move(value, this.Count); } } }