68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections;
 | 
						|
using System.Drawing;
 | 
						|
using DevComponents.UI.ContentManager;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar
 | 
						|
{
 | 
						|
	/// <summary>
 | 
						|
	/// Provides layout management for ISimpleTab tab implementations.
 | 
						|
	/// </summary>
 | 
						|
	public class SimpleTabLayoutManager:BlockLayoutManager
 | 
						|
	{
 | 
						|
		public SimpleTabLayoutManager()
 | 
						|
		{
 | 
						|
		}
 | 
						|
 | 
						|
		/// <summary>
 | 
						|
		/// Resizes the content block and sets it's Bounds property to reflect new size.
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="block">Content block to resize.</param>
 | 
						|
        public override void Layout(IBlock block, Size availableSize)
 | 
						|
		{
 | 
						|
			if(this.Graphics==null)
 | 
						|
				throw(new InvalidOperationException("Graphics property must be set to valid instance of Graphics object."));
 | 
						|
 | 
						|
			ISimpleTab tab=block as ISimpleTab;
 | 
						|
			if(!tab.Visible)
 | 
						|
				return;
 | 
						|
 | 
						|
			int width=0;
 | 
						|
			int height=0;
 | 
						|
			int paddingTop=1;
 | 
						|
			int paddingBottom=0;
 | 
						|
			int paddingLeft=1;
 | 
						|
			int paddingRight=1;
 | 
						|
			int paddingBottomSelected=2;
 | 
						|
 | 
						|
            eTextFormat strFormat = eTextFormat.Default;
 | 
						|
 | 
						|
			Font font=tab.GetTabFont();
 | 
						|
			if(tab.Text!="")
 | 
						|
			{
 | 
						|
				Size textSize=TextDrawing.MeasureString(this.Graphics,tab.Text,font,0,strFormat);
 | 
						|
				width+=textSize.Width;
 | 
						|
				if(textSize.Height>height)
 | 
						|
					height=textSize.Height;
 | 
						|
			}
 | 
						|
			else
 | 
						|
				height+=font.Height;
 | 
						|
 | 
						|
			height+=(paddingTop+paddingBottom);
 | 
						|
			if(tab.IsSelected)
 | 
						|
				height+=paddingBottomSelected;
 | 
						|
			width+=(paddingLeft+paddingRight);
 | 
						|
 | 
						|
			if(tab.TabAlignment==eTabStripAlignment.Left || tab.TabAlignment==eTabStripAlignment.Right)
 | 
						|
				block.Bounds=new Rectangle(0,0,height,width);
 | 
						|
			else
 | 
						|
				block.Bounds=new Rectangle(0,0,width,height);
 | 
						|
		}
 | 
						|
 | 
						|
        public override Rectangle FinalizeLayout(Rectangle containerBounds, Rectangle blocksBounds, ArrayList lines)
 | 
						|
        {
 | 
						|
            return (blocksBounds);
 | 
						|
        }
 | 
						|
	}
 | 
						|
}
 |