#include "PositionHandler.h"
#include "Panel.h"

//////////////////////////////////////////////////////////////
namespace Dubious {
namespace Panels {

//////////////////////////////////////////////////////////////
PositionHandler::PositionHandler()
{
}

//////////////////////////////////////////////////////////////
PositionHandler::PositionHandler( PanelPtr pParent )
	: m_pParent( pParent )
{
}

//////////////////////////////////////////////////////////////
PositionHandler::~PositionHandler()
{
}

//////////////////////////////////////////////////////////////
Math::Point PositionHandler::GetPosition() const
{
	PanelPtr pParent = m_pParent.lock();
	if (!pParent) {
		return Math::Point( m_Position.X(), m_Position.Y() );
	}
	return pParent->GetPosition() + Math::Point( m_Position.X(), m_Position.Y() );
}

//////////////////////////////////////////////////////////////
void PositionHandler::SetPosition( const Math::Point& Position )
{
	PanelPtr pParent = m_pParent.lock();
	if (!pParent) {
		m_Position = Math::LocalPoint( Position.X(), Position.Y() );
	}
	else {
		Math::Point Offset = Position - pParent->GetPosition();
		m_Position = Math::LocalPoint( Offset.X(), Offset.Y() );
	}
}

}
}
