using System;
using System.ComponentModel;
using System.Drawing;
using System.Xml;
namespace DevComponents.DotNetBar
{
	/// 
	/// Represents class that is a bar container for document docking.
	/// 
	[DesignTimeVisible(false),ToolboxItem(false),TypeConverter(typeof(DocumentBarContainerConverter))]
	public class DocumentBarContainer:DocumentBaseContainer
	{
		#region Private Variables and Constructor
		private Bar m_Bar=null;
		/// 
		/// Creates new instance of the class.
		/// 
		public DocumentBarContainer(){}
		/// 
		/// Creates new instance of the class and initializes it with the Bar object.
		/// 
		/// Bar to contain on document.
		public DocumentBarContainer(Bar bar)
		{
			m_Bar=bar;
            if(m_Bar.SplitDockHeight>0 || m_Bar.SplitDockWidth>0)
				this.SetLayoutBounds(new Rectangle(0,0,m_Bar.SplitDockWidth,m_Bar.SplitDockHeight));
		}
		/// 
		/// Creates new instance of the class and initializes it with the bar and propesed width and height.
		/// 
		/// Bar to contain on document.
		/// Proposed width of the document in pixels
		/// Proposed height of the document in pixels
		public DocumentBarContainer(Bar bar, int proposedWidth, int proposedHeight)
		{
			m_Bar=bar;
			this.SetLayoutBounds(new Rectangle(0,0,proposedWidth,proposedHeight));
		}
		#endregion
		#region Internal Implementation
		/// 
		/// Gets or sets the bar that is contained by this document.
		/// 
		[Browsable(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
		public Bar Bar
		{
			get {return m_Bar;}
			set {m_Bar=value;}
		}
		/// 
		/// Resizes document object.
		/// 
		/// Available bounds for the document.
		public override void Layout(Rectangle bounds)
		{
            if (m_Bar != null)
            {
                m_Bar.SplitDockHeight = 0;
                m_Bar.SplitDockWidth = 0;
                m_Bar.MinHeight = 0;
                m_Bar.RecalcSize(bounds.Size);
                m_Bar.Location = bounds.Location;
            }
			SetDisplayBounds(bounds);
		}
		/// 
		/// Gets whether document is visible.
		/// 
		public override bool Visible
		{
			get
			{
                if (m_Bar == null)
                    return false;
				if(m_Bar.GetDesignMode())
					return true;
                return m_Bar.IsVisible;
			}
		}
		/// 
		/// Gets the minimum size of the document.
		/// 
		protected internal override System.Drawing.Size MinimumSize
		{
			get {return m_Bar.GetAdjustedFullSize(m_Bar.MinimumDockSize(eOrientation.Horizontal));}
		}
		#endregion
	}
}