wizardpanelcollection.cs

来自「Fireball.CodeEditor is an source code ed」· CS 代码 · 共 315 行

CS
315
字号
using System;
using System.Collections.Generic;
using System.Text;
using Fireball.Collections.Generic;

namespace Fireball.Windows.Forms.Dialogs
{
	public class WizardPanelCollection : IKeyedCollection<WizardPanel>
	{
		KeyedCollection<WizardPanel> m_Panels = null;

		internal delegate void AddPanelHandler(WizardPanel panel);
		internal delegate void AddPanelRangeHandler(WizardPanel[] panel);
		internal delegate void RemovePanelHandler(WizardPanel panel);
		internal delegate void InsertPanelHandler(WizardPanel panel, int index);

		internal event AddPanelHandler AddPanel;
		internal event AddPanelRangeHandler AddPanelRange;
		internal event RemovePanelHandler RemovePanel;
		internal event InsertPanelHandler InsertPanel;

		int m_Current = 0;

		public WizardPanelCollection()
		{
			m_Panels = new KeyedCollection<WizardPanel>();
		}

		#region IKeyedCollection<WizardPanel> Members

		public int Count
		{
			get
			{
				return m_Panels.Count;
			}
		}

		public WizardPanel this[int index]
		{
			get
			{
				return m_Panels[index];
			}
			set
			{
				m_Panels[index] = value;
			}
		}

		public WizardPanel this[string key]
		{
			get
			{
				return m_Panels[key];
			}
			set
			{
				m_Panels[key] = value;
			}
		}

		public string[] Keys
		{
			get {
				return m_Panels.Keys;
			}
		}

		public void Add(string key, WizardPanel item)
		{
			m_Panels.Add(key, item);
			if (AddPanel != null)
				AddPanel(item);
		}

		public void AddRange(string[] keys, WizardPanel[] items)
		{
			m_Panels.AddRange(keys, items);
			if (AddPanelRange != null)
				AddPanelRange(items);
		}

		public void Clear()
		{
			m_Panels.Clear();
		}

		public void Insert(int index, string key, WizardPanel item)
		{
			m_Panels.Insert(index, key, item);
			if (InsertPanel != null)
				InsertPanel(item,index);
		}

		public void RemoveAt(int index)
		{
			WizardPanel panel = m_Panels[index];

			m_Panels.Remove(panel);

			if (RemovePanel != null)
				RemovePanel(panel);
		}

		public void Remove(string key)
		{
			WizardPanel panel = m_Panels[key];

			m_Panels.Remove(panel);

			if (RemovePanel != null)
				RemovePanel(panel);
		}

		public void Remove(WizardPanel item)
		{

			m_Panels.Remove(item);

			if (RemovePanel != null)
				RemovePanel(item);
		}

        public bool ContainsKey(string key)
		{
			return m_Panels.ContainsKey(key);
		}

		public bool Contains(WizardPanel item)
		{
			return m_Panels.Contains(item);
		}

        public int IndexOfKey(string key)
		{
			return m_Panels.IndexOfKey(key);
		}

		public int IndexOf(WizardPanel item)
		{
			return m_Panels.IndexOf(item);
		}

		public WizardPanel[] GetItems()
		{
			return m_Panels.GetItems();
		}

		public WizardPanel[] GetItems(int startIndex)
		{
			return m_Panels.GetItems();
		}

		public WizardPanel[] GetItems(int startIndex, int finalIndex)
		{
			return m_Panels.GetItems(startIndex, finalIndex);
		}

		public void Sort()
		{
			m_Panels.Sort();
		}

		public WizardPanel Current
		{
			get
			{
				if (m_Panels.Count == 0)
					return null;

				return m_Panels[m_Current];
			}
            set
            {
                int index = m_Panels.IndexOf(value);
                if (index>=0)
                {
                    m_Current = index;
                    m_Panels[index].BringToFront();
                }
            }
		}

		public void Next()
		{
			if (m_Current >= m_Panels.Count - 1)
			{
				return;
			}
			m_Current++;

			this.Current.BringToFront();
		}

		public void Back()
		{
			if (m_Current <= 0)
			{
				return;
			}
			m_Current--;
			this.Current.BringToFront();
		}

		#endregion

        #region IKeyedCollection<WizardPanel> Members

        public string CreateFreeKey()
        {
            return m_Panels.CreateFreeKey();
        }

        public void Move(WizardPanel item, int newIndex)
        {
            m_Panels.Move(item, newIndex);
        }

        public void MoveByIndex(int index, int newIndex)
        {
            m_Panels.MoveByIndex(index, newIndex);
        }

        public void Reverse(int index, int length)
        {
            m_Panels.Reverse(index, length);
        }

        public void Reverse()
        {
            m_Panels.Reverse();
        }

        public void Swap(WizardPanel item1, WizardPanel item2)
        {
            m_Panels.Swap(item1, item2);
        }

        public void SwapByIndex(int index1, int index2)
        {
            m_Panels.SwapByIndex(index1, index2);
        }

        #endregion

        #region IKeyedCollection<WizardPanel> Members

        public bool TryGetItem(string key, out WizardPanel item)
        {
            return m_Panels.TryGetItem(key, out item);
        }

        public bool TryGetItem(int index, out WizardPanel item)
        {
            return m_Panels.TryGetItem(index, out item);
        }

        #endregion

        #region IKeyedCollection<WizardPanel> Membri di


        public void RemoveByKey(string key)
        {
            m_Panels.RemoveByKey(key);
        }


        public KeyedCollection<WizardPanel>.Enumerator GetEnumerator()
        {
            return m_Panels.GetEnumerator();
        }

        #endregion

        #region IKeyedCollection<WizardPanel> Members


        public void AddRange(KeyedCollection<WizardPanel> items)
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public LightCollection<WizardPanel> Collection
        {
            get { throw new Exception("The method or operation is not implemented."); }
        }

        public event EventHandler CollectionChanged;

        public event EventHandler CollectionClear;

        public event KeyedCollection<WizardPanel>.KeyedCollectionAddHandler ItemAdd;

        public event KeyedCollection<WizardPanel>.KeyedCollectionAddRangeHandler ItemAddRange;

        public event KeyedCollection<WizardPanel>.KeyedCollectionMoveHandler ItemMove;

        public event KeyedCollection<WizardPanel>.KeyedCollectionRemoveHandler ItemRemove;

        public ReadOnlyKeyedCollection<WizardPanel> ReadOnlyCollection
        {
            get { throw new Exception("The method or operation is not implemented."); }
        }

        public void TrimToSize()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        #endregion
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?