using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
namespace DevComponents.DotNetBar
{
	/// 
	/// Provides fill layout for the dock site.
	/// 
	public class DockSiteDocumentLayout
	{
		private int m_BarSpacing=2;
		private eOrientation m_Orientation=eOrientation.Horizontal;
		public DockSiteDocumentLayout()
		{
		}
		public void Layout(DockSite site)
		{
			if(m_Orientation==eOrientation.Horizontal)
				LayoutHorizontal(site);
			//else
			//	LayoutVertical(site);
		}
		private void LayoutHorizontal(DockSite site)
		{
			int height=site.ClientRectangle.Height;
			Rectangle containerRectangle=site.ClientRectangle;
			int totalWidth=0, specifiedWidth=0;
			int variableCount=0;
			ArrayList visibleBars=new ArrayList();
			// Calculate fixed/specified and variable width
			for(int i=0;i0)
				{
					totalWidth+=bar.SplitDockWidth;
					specifiedWidth+=bar.SplitDockWidth;
				}
				else
				{
					totalWidth+=bar.MinimumSize(m_Orientation).Width;
					variableCount++;
				}
				if(i+10 && visibleBars.Count-variableCount-1>0)
				specifiedWidth+=(visibleBars.Count-variableCount-1)*m_BarSpacing;
			int x=containerRectangle.X, y=containerRectangle.Y;
			int variableWidth=0;
			int totalVariableWidth=(containerRectangle.Width-specifiedWidth-m_BarSpacing*(variableCount-1));
			if(variableCount>0)
				variableWidth=totalVariableWidth/variableCount;
			int availableWidth=containerRectangle.Width;
			int count=visibleBars.Count;
			for(int i=0;i0)
				{
					if(i+1==count)
						bar.RecalcSize(new Size(availableWidth,containerRectangle.Height));
					else
						bar.RecalcSize(new Size(bar.SplitDockWidth,containerRectangle.Height));
				}
				else
				{
					bar.SplitDockWidth=variableWidth;
					bar.RecalcSize(new Size(variableWidth,containerRectangle.Height));
					totalVariableWidth-=variableWidth;
				}
				x+=(m_BarSpacing+bar.Width);
				availableWidth-=(m_BarSpacing+bar.Width);
			}
		}
		public eOrientation Orientation
		{
			get {return m_Orientation;}
			set {m_Orientation=value;}
		}
	}
}