/*
	GWEN
	Copyright (c) 2010 Facepunch Studios
	See license in Gwen.h
*/

#pragma once
#ifndef GWEN_CONTROLS_LAYOUT_SPLITTER_H
#define GWEN_CONTROLS_LAYOUT_SPLITTER_H

#include "Gwen/Controls/Base.h"

namespace Gwen
{
namespace Controls
{
namespace Layout
{
class GWEN_EXPORT Splitter : public Base
{
public:
	typedef Base BaseClass;

	Splitter(Base* pParent) : BaseClass(pParent)
	{
		for (int i = 0; i < 2; i++)
			m_pPanel[i] = NULL;
	}

	void SetPanel(int i, Base* pPanel)
	{
		if (i < 0 || i > 1) return;

		m_pPanel[i] = pPanel;

		if (m_pPanel[i])
		{
			m_pPanel[i]->SetParent(this);
		}
	}

	Base* GetPanel(int i) const
	{
		if (i < 0 || i > 1) return NULL;
		return m_pPanel[i];
	}

	void Layout(Skin::Base* skin)
	{
		LayoutVertical(skin);
	}

private:
	void LayoutVertical(Skin::Base* /*skin*/)
	{
		int w = Width();
		int h = Height();

		if (m_pPanel[0])
		{
			const Margin& m = m_pPanel[0]->GetMargin();
			m_pPanel[0]->SetBounds(m.left, m.top, w - m.left - m.right, (h * 0.5) - m.top - m.bottom);
		}

		if (m_pPanel[1])
		{
			const Margin& m = m_pPanel[1]->GetMargin();
			m_pPanel[1]->SetBounds(m.left, m.top + (h * 0.5f), w - m.left - m.right, (h * 0.5f) - m.top - m.bottom);
		}
	}

	void LayoutHorizontal(Skin::Base* /*skin*/)
	{
		// Todo.
	}

	Base* m_pPanel[2];
};
}  // namespace Layout
}  // namespace Controls
}  // namespace Gwen
#endif
