using System.ComponentModel;
using System.Drawing.Design;
using DevComponents.DotNetBar.SuperGrid.Primitives;
namespace DevComponents.DotNetBar.SuperGrid
{
    /// 
    /// Represents the collection of grid items.
    /// 
    [Editor("DevComponents.SuperGrid.Design.GridRowCollectionEditor, DevComponents.SuperGrid.Design, Version=14.1.0.37, Culture=neutral,  PublicKeyToken=26d81176cfa2b486", typeof(UITypeEditor))]
    public class GridItemsCollection : CustomCollection
    {
        #region ClearItems
        /// 
        /// ClearItems
        /// 
        protected override void ClearItems()
        {
            int n = Items.Count;
            for (int i = 0; i < n; i++)
            {
                GridContainer item = Items[i] as GridContainer;
                if (item != null)
                {
                    GridContainer parent = item.Parent as GridContainer;
                    if (parent != null)
                        parent.MergeScan = null;
                    break;
                }
            }
            if (FloatLastItem == true)
                n--;
            for (int i = 0; i < n; i++)
                DetachItem(Items[i] as GridContainer, true);
            base.ClearItems();
        }
        #endregion
        #region RemoveItem
        /// 
        /// RemoveItem
        /// 
        /// 
        protected override void RemoveItem(int index)
        {
            DetachItem(Items[index] as GridContainer, false);
            base.RemoveItem(index);
        }
        #endregion
        #region DetachItem
        private void DetachItem(GridContainer item, bool clear)
        {
            if (item != null)
            {
                item.DetachNestedRows(false);
                if (clear == false)
                    item.Parent = null;
                GridPanel panel = item as GridPanel;
                if (panel != null)
                    panel.DataBinder.Clear();
                
            }
        }
        #endregion
    }
}