#if FRAMEWORK20 using System.Drawing; using DevComponents.UI.ContentManager; namespace DevComponents.DotNetBar { internal class OneNote2007SuperTabStrip : SuperTabStripBaseDisplay { #region Constants private const int HTabSpacing = 5; private const int HTabOverLap = 10; private const int VTabSpacing = 7; private const int VTabOverLap = 10; #endregion /// /// OneNote2007 SuperTabStripBaseDisplay /// /// Associated TabStripItem public OneNote2007SuperTabStrip(SuperTabStripItem tabStripItem) : base(tabStripItem) { } #region Internal properties #region MinTabSize /// /// Returns the Minimum tab size for this style /// internal override Size MinTabSize { get { if (TabStripItem.IsVertical == true && TabStripItem.HorizontalText == true) return (new Size(28, 30)); return (new Size(28, 16)); } } #endregion #region TabOverlap /// /// Tab Overlap /// internal override int TabOverlap { get { return (TabStripItem.IsVertical ? VTabOverLap : HTabOverLap); } } #endregion #region TabSpacing /// /// Tab Spacing /// internal override int TabSpacing { get { switch (TabStripItem.TabAlignment) { case eTabStripAlignment.Top: case eTabStripAlignment.Bottom: return (HTabSpacing); case eTabStripAlignment.Right: return (TabStripItem.HorizontalText == false ? HTabSpacing : VTabSpacing); default: return (VTabSpacing); } } } #endregion #endregion #region NextBlockPosition /// /// Gets the next layout block position /// /// LayoutManagerPositionEventArgs 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 - VTabOverLap); else e.NextPosition.X += (e.Block.Bounds.Width - HTabOverLap); e.Cancel = true; } } } } #endregion #region NextBlockPosition /// /// Gets the next block position when attempting /// to make a specific tab visible /// /// Potential item to replace /// View item being placed /// Block Rectangle internal override Rectangle NextBlockPosition(BaseItem item, BaseItem vItem) { Rectangle r = base.NextBlockPosition(item, vItem); if (item is SuperTabItem && vItem is SuperTabItem) { if (TabStripItem.IsVertical == true) r.Y -= VTabOverLap; else r.X -= HTabOverLap; } return (r); } #endregion } } #endif