using System;

using System.Drawing;

using System.Windows.Forms;

using WeifenLuo.WinFormsUI.Docking;



namespace DockSample.Customization

{

	internal class DockHelper

	{

		public static bool IsDockStateAutoHide(DockState dockState)

		{

			if (dockState == DockState.DockLeftAutoHide ||

				dockState == DockState.DockRightAutoHide ||

				dockState == DockState.DockTopAutoHide ||

				dockState == DockState.DockBottomAutoHide)

				return true;

			else

				return false;

		}



		public static bool IsDockStateDocked(DockState dockState)

		{

			return (dockState == DockState.DockLeft ||

				dockState == DockState.DockRight ||

				dockState == DockState.DockTop ||

				dockState == DockState.DockBottom);

		}



		public static bool IsDockBottom(DockState dockState)

		{

			return (dockState == DockState.DockBottom || dockState == DockState.DockBottomAutoHide) ? true : false;

		}



		public static bool IsDockLeft(DockState dockState)

		{

			return (dockState == DockState.DockLeft || dockState == DockState.DockLeftAutoHide) ? true : false;

		}



		public static bool IsDockRight(DockState dockState)

		{

			return (dockState == DockState.DockRight || dockState == DockState.DockRightAutoHide) ? true : false;

		}



		public static bool IsDockTop(DockState dockState)

		{

			return (dockState == DockState.DockTop || dockState == DockState.DockTopAutoHide ) ? true : false;

		}



		public static bool IsDockStateValid(DockState dockState, DockAreas dockableAreas)

		{

			if (((dockableAreas & DockAreas.Float) == 0) &&

				(dockState == DockState.Float))

				return false;

			else if (((dockableAreas & DockAreas.Document) == 0) &&

				(dockState == DockState.Document))

				return false;

			else if (((dockableAreas & DockAreas.DockLeft) == 0) &&

				(dockState == DockState.DockLeft || dockState == DockState.DockLeftAutoHide))

				return false;

			else if (((dockableAreas & DockAreas.DockRight) == 0) &&

				(dockState == DockState.DockRight || dockState == DockState.DockRightAutoHide))

				return false;

			else if (((dockableAreas & DockAreas.DockTop) == 0) &&

				(dockState == DockState.DockTop || dockState == DockState.DockTopAutoHide))

				return false;

			else if (((dockableAreas & DockAreas.DockBottom) == 0) &&

				(dockState == DockState.DockBottom || dockState == DockState.DockBottomAutoHide))

				return false;

			else

				return true;

		}



		public static bool IsDockWindowState(DockState state)

		{

			if (state == DockState.DockTop || state == DockState.DockBottom || state == DockState.DockLeft ||

				state == DockState.DockRight || state == DockState.Document)

				return true;

			else

				return false;

		}



		public static bool IsValidRestoreState(DockState state)

		{

			if (state == DockState.DockLeft || state == DockState.DockRight || state == DockState.DockTop ||

				state == DockState.DockBottom || state == DockState.Document)

				return true;

			else

				return false;

		}



		public static DockState ToggleAutoHideState(DockState state)

		{

			if (state == DockState.DockLeft)

				return DockState.DockLeftAutoHide;

			else if (state == DockState.DockRight)

				return DockState.DockRightAutoHide;

			else if (state == DockState.DockTop)

				return DockState.DockTopAutoHide;

			else if (state == DockState.DockBottom)

				return DockState.DockBottomAutoHide;

			else if (state == DockState.DockLeftAutoHide)

				return DockState.DockLeft;

			else if (state == DockState.DockRightAutoHide)

				return DockState.DockRight;

			else if (state == DockState.DockTopAutoHide)

				return DockState.DockTop;

			else if (state == DockState.DockBottomAutoHide)

				return DockState.DockBottom;

			else

				return state;

		}

	}

}

