144 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.ComponentModel;
 | 
						|
namespace DevComponents.DotNetBar
 | 
						|
{
 | 
						|
	using System;
 | 
						|
	using System.Collections;
 | 
						|
	/// <summary>
 | 
						|
	///		Summary description for ShortcutList.
 | 
						|
	/// </summary>
 | 
						|
	public class ShortcutsCollection:System.Collections.CollectionBase
 | 
						|
	{
 | 
						|
		private BaseItem m_Parent=null;
 | 
						|
		public ShortcutsCollection(BaseItem parent)
 | 
						|
		{
 | 
						|
			m_Parent=parent;
 | 
						|
		}
 | 
						|
		public int Add(eShortcut key)
 | 
						|
		{
 | 
						|
			int iRet=0;
 | 
						|
			iRet=List.Add(key);
 | 
						|
			return iRet;
 | 
						|
		}
 | 
						|
		protected override void OnInsertComplete(int index,object value)
 | 
						|
		{
 | 
						|
			base.OnInsertComplete(index,value);
 | 
						|
			RefreshOwnerShortcuts();
 | 
						|
		}
 | 
						|
		public eShortcut this[int index]
 | 
						|
		{
 | 
						|
			get {return (eShortcut)(List[index]);}
 | 
						|
			set {List[index] = value;}
 | 
						|
		}
 | 
						|
 | 
						|
		public void Insert(int index, eShortcut value) 
 | 
						|
		{
 | 
						|
			List.Insert(index, value);
 | 
						|
			RefreshOwnerShortcuts();
 | 
						|
		}
 | 
						|
 | 
						|
		public int IndexOf(eShortcut value) 
 | 
						|
		{
 | 
						|
			return List.IndexOf(value);
 | 
						|
		}
 | 
						|
 | 
						|
		public string ToString(string Delimiter)
 | 
						|
		{
 | 
						|
			if(List.Count==0)
 | 
						|
				return "";
 | 
						|
 | 
						|
			System.Text.StringBuilder sb=new System.Text.StringBuilder(List.Count*(2+Delimiter.Length));int c=List.Count-1;
 | 
						|
			for(int i=0;i<c;i++)
 | 
						|
				sb.Append(((int)List[i]).ToString()+Delimiter);
 | 
						|
 | 
						|
			sb.Append(((int)List[c]).ToString());
 | 
						|
 | 
						|
			return sb.ToString();
 | 
						|
		}
 | 
						|
 | 
						|
		public void FromString(string Data, string Delimiter)
 | 
						|
		{
 | 
						|
			List.Clear();
 | 
						|
			string[] str=Data.Split(Delimiter.ToCharArray());
 | 
						|
			foreach(string s in str)
 | 
						|
				List.Add((eShortcut)System.Xml.XmlConvert.ToInt32(s));
 | 
						|
		}
 | 
						|
 | 
						|
		public bool Contains(eShortcut value) 
 | 
						|
		{
 | 
						|
			return List.Contains(value);
 | 
						|
		}
 | 
						|
 | 
						|
		public void Remove(eShortcut value) 
 | 
						|
		{
 | 
						|
			List.Remove(value);
 | 
						|
		}
 | 
						|
 | 
						|
        protected override void OnRemove(int index, object value)
 | 
						|
        {
 | 
						|
            RemoveOwnerShortcuts();
 | 
						|
            base.OnRemove(index, value);
 | 
						|
        }
 | 
						|
 | 
						|
		protected override void OnRemoveComplete(int index,object value)
 | 
						|
		{
 | 
						|
			base.OnRemoveComplete(index,value);
 | 
						|
			RefreshOwnerShortcuts();
 | 
						|
		}
 | 
						|
 | 
						|
		protected override void OnClear()
 | 
						|
		{
 | 
						|
			base.OnClear();
 | 
						|
			RemoveOwnerShortcuts();
 | 
						|
		}
 | 
						|
 | 
						|
        protected override void OnClearComplete()
 | 
						|
        {
 | 
						|
            RefreshOwnerShortcuts();
 | 
						|
            base.OnClearComplete();
 | 
						|
        }
 | 
						|
 | 
						|
		public void CopyTo(eShortcut[] array, int index) 
 | 
						|
		{
 | 
						|
			List.CopyTo(array, index);
 | 
						|
		}
 | 
						|
        [EditorBrowsable(EditorBrowsableState.Never)]
 | 
						|
		public BaseItem Parent
 | 
						|
		{
 | 
						|
			get
 | 
						|
			{
 | 
						|
				return m_Parent;
 | 
						|
			}
 | 
						|
			set
 | 
						|
			{
 | 
						|
				m_Parent=value;
 | 
						|
                if (m_Parent != null)
 | 
						|
                    m_Parent.RefreshShortcutString();
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void RefreshOwnerShortcuts()
 | 
						|
		{
 | 
						|
            if (m_Parent != null)
 | 
						|
                m_Parent.RefreshShortcutString();
 | 
						|
 | 
						|
			IOwner owner=null;
 | 
						|
			if(m_Parent!=null)
 | 
						|
				owner=m_Parent.GetOwner() as IOwner;
 | 
						|
			if(m_Parent!=null && owner!=null)
 | 
						|
			{
 | 
						|
				owner.RemoveShortcutsFromItem(m_Parent);
 | 
						|
				owner.AddShortcutsFromItem(m_Parent);
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void RemoveOwnerShortcuts()
 | 
						|
		{
 | 
						|
			IOwner owner=null;
 | 
						|
			if(m_Parent!=null)
 | 
						|
				owner=m_Parent.GetOwner() as IOwner;
 | 
						|
			if(m_Parent!=null && owner!=null)
 | 
						|
			{
 | 
						|
				owner.RemoveShortcutsFromItem(m_Parent);
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |