using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace RyzStudio.Windows.Forms
{
    [ToolboxItem(true)]
    public class PanelCollection : CollectionBase
    {
        protected PanelBook panelBook = null;

        public PanelCollection()
        {

        }

        public PanelCollection(PanelBook parent) : base()
        {
            panelBook = parent;
        }

        public PanelBook Parent => panelBook;

        public Panel this[int index] { get => (Panel)List[index]; set => List[index] = value; }

        public int Add(Panel value) => List.Add(value);

        public void AddRange(Panel[] pages)
        {
            foreach (Panel page in pages)
            {
                this.Add(page);
            }
        }

        public int IndexOf(Panel value) => (List.IndexOf(value));

        public void Insert(int index, Panel value) => List.Insert(index, value);

        public void Remove(Panel value) => List.Remove(value);

        public bool Contains(Panel value) => List.Contains(value);

        protected override void OnInsertComplete(int index, object value)
        {
            base.OnInsertComplete(index, value);

            if (panelBook != null)
            {
                panelBook.PageIndex = index;
            }
        }

        protected override void OnRemoveComplete(int index, object value)
        {
            base.OnRemoveComplete(index, value);

            if (panelBook != null)
            {
                if (panelBook.PageIndex == index)
                {
                    if (index < InnerList.Count)
                    {
                        panelBook.PageIndex = index;
                    }
                    else
                    {
                        panelBook.PageIndex = InnerList.Count - 1;
                    }
                }
            }
        }

    }
}