150 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| #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
 | |
| 
 | |
|         /// <summary>
 | |
|         /// OneNote2007 SuperTabStripBaseDisplay
 | |
|         /// </summary>
 | |
|         /// <param name="tabStripItem">Associated TabStripItem</param>
 | |
|         public OneNote2007SuperTabStrip(SuperTabStripItem tabStripItem)
 | |
|             : base(tabStripItem)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         #region Internal properties
 | |
| 
 | |
|         #region MinTabSize
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Returns the Minimum tab size for this style
 | |
|         /// </summary>
 | |
|         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
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Tab Overlap
 | |
|         /// </summary>
 | |
|         internal override int TabOverlap
 | |
|         {
 | |
|             get { return (TabStripItem.IsVertical ? VTabOverLap : HTabOverLap); }
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region TabSpacing
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Tab Spacing
 | |
|         /// </summary>
 | |
|         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
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the next layout block position
 | |
|         /// </summary>
 | |
|         /// <param name="e">LayoutManagerPositionEventArgs</param>
 | |
|         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
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the next block position when attempting
 | |
|         /// to make a specific tab visible
 | |
|         /// </summary>
 | |
|         /// <param name="item">Potential item to replace</param>
 | |
|         /// <param name="vItem">View item being placed</param>
 | |
|         /// <returns>Block Rectangle</returns>
 | |
|         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 |