#if FRAMEWORK20
using System.Drawing;
using DevComponents.UI.ContentManager;
namespace DevComponents.DotNetBar
{
    internal class VS2008DocumentSuperTabStrip : SuperTabStripBaseDisplay
    {
        #region Constants
        private const int HvTabSpacing = 0;
        private const int HvTabOverLap = 20;
        #endregion
        /// 
        /// Constructor
        /// 
        /// Associated SuperTabStripItem
        public VS2008DocumentSuperTabStrip(SuperTabStripItem tabStripItem)
            : base(tabStripItem)
        {
        }
        #region Internal properties
        #region TabOverlap
        /// 
        /// Gets the TabOverlap
        /// 
        internal override int TabOverlap
        {
            get { return (HvTabOverLap); }
        }
        #endregion
        #region TabSpacing
        /// 
        /// Gets the TabSpacing
        /// 
        internal override int TabSpacing
        {
            get { return (HvTabSpacing); }
        }
        #endregion
        #region TabOverlapLeft
        /// 
        /// Gets the TabOverlapLeft
        /// 
        internal override bool TabOverlapLeft
        {
            get { return (true); }
        }
        #endregion
        #region TabLayoutOffset
        /// 
        /// Gets the TabLayoutOffset
        /// 
        internal override Size TabLayoutOffset
        {
            get { return (new Size(3, 2)); }
        }
        #endregion
        #region MinTabSize
        /// 
        /// Gets the MinTabSize
        /// 
        internal override Size MinTabSize
        {
            get
            {
                if (TabStripItem.IsVertical == true && TabStripItem.HorizontalText == true)
                    return (new Size(33, 35));
                
                return (new Size(33, 16));
            }
        }
        #endregion
        #endregion
        #region NextBlockPosition (LayoutManager)
        /// 
        /// Gets the LayoutManager NextBlockPosition
        /// 
        /// 
        protected override void NextBlockPosition(LayoutManagerPositionEventArgs e)
        {
            int n = Tabs.IndexOf((BaseItem)e.Block);
            if (n >= 0 && n + 1 < Tabs.Count)
            {
                SuperTabItem tab1 = Tabs[n] as SuperTabItem;
                if (tab1 != null)
                {
                    SuperTabItem tab2 = Tabs[n + 1] as SuperTabItem;
                    if (tab2 != null)
                    {
                        e.NextPosition = e.CurrentPosition;
                        if (TabStripItem.IsVertical == true)
                            e.NextPosition.Y += (e.Block.Bounds.Height - HvTabOverLap);
                        else
                            e.NextPosition.X += (e.Block.Bounds.Width - HvTabOverLap);
                        e.Cancel = true;
                    }
                }
            }
        }
        #endregion
        #region NextBlockPosition (PromoteSelectedTab)
        /// 
        /// Gets the PromoteSelectedTab NextBlockPosition
        /// 
        /// 
        /// 
        /// 
        internal override Rectangle NextBlockPosition(BaseItem item, BaseItem vItem)
        {
            Rectangle r = base.NextBlockPosition(item, vItem);
            if (item is SuperTabItem && vItem is SuperTabItem)
            {
                if (IsVertical == true)
                    r.Y -= HvTabOverLap;
                else
                    r.X -= HvTabOverLap;
            }
            return (r);
        }
        #endregion
    }
}
#endif