using System; namespace DevComponents.DotNetBar { /// /// Summary description for TabsCollection. /// public class TabsCollection:System.Collections.CollectionBase { #region Private Variables private TabStrip m_Owner; #endregion #region Internal Implementation private bool m_IgnoreEvents = false; public TabsCollection(TabStrip owner) { m_Owner=owner; } public int Add(TabItem item) { m_Owner.NeedRecalcSize=true; return List.Add(item); } public TabItem this[int index] { get {return (TabItem)(List[index]);} set {List[index] = value;} } /// /// Get the TabItem with given name. Name comparison is case insensitive. /// /// /// public TabItem this[string name] { get { if (name == null) return null; int i = GetIndexOf(name); if (i >= 0) return this[i]; return null; } set { int i = GetIndexOf(name); if (i >= 0) List[i] = value; } } private int GetIndexOf(string name) { name = name.ToLower(); for (int i = 0; i < this.Count; i++) { if (this[i].Name.ToLower() == name) return i; } return -1; } public void Insert(int index, TabItem value) { value.Visible=true; m_Owner.NeedRecalcSize=true; List.Insert(index, value); } internal void _Insert(int index, TabItem value) { m_IgnoreEvents = true; try { value.Visible = true; m_Owner.NeedRecalcSize = true; List.Insert(index, value); } finally { m_IgnoreEvents = false; } } public int IndexOf(TabItem value) { return List.IndexOf(value); } public bool Contains(TabItem value) { return List.Contains(value); } public void Remove(TabItem value) { List.Remove(value); } internal void _Remove(TabItem value) { m_IgnoreEvents = true; try { List.Remove(value); } finally { m_IgnoreEvents = false; } } protected override void OnRemoveComplete(int index,object value) { base.OnRemoveComplete(index,value); if (m_IgnoreEvents) return; TabItem item=value as TabItem; m_Owner.InvokeTabRemoved(item); item.SetParent(null); item.Visible=true; if(m_Owner.SelectedTab==item) { m_Owner.OnSelectedTabRemoved(index, item); } m_Owner.NeedRecalcSize=true; if(m_Owner.IsDesignMode) m_Owner.Refresh(); } protected override void OnInsertComplete(int index,object value) { base.OnInsertComplete(index,value); if (m_IgnoreEvents) return; TabItem item=value as TabItem; item.SetParent(m_Owner); //item.Visible=true; m_Owner.OnTabAdded(item); m_Owner.NeedRecalcSize=true; if(m_Owner.IsDesignMode) m_Owner.Refresh(); } public void CopyTo(TabItem[] array, int index) { List.CopyTo(array, index); } protected override void OnClear() { m_Owner.InternalTabsCleared(); base.OnClear(); } #endregion } }