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

#pragma once
#ifndef GWEN_CONTROLS_WINDOWCONTROL_H
#define GWEN_CONTROLS_WINDOWCONTROL_H

#include "Gwen/Gwen.h"
#include "Gwen/Controls/Base.h"
#include "Gwen/Controls/Label.h"
#include "Gwen/Controls/Button.h"
#include "Gwen/Controls/Dragger.h"
#include "Gwen/Controls/Label.h"
#include "Gwen/Controls/ResizableControl.h"
#include "Gwen/Controls/Modal.h"
#include "Gwen/Skin.h"

namespace Gwen
{
namespace Controls
{
class GWEN_EXPORT WindowControl : public ResizableControl
{
public:
	GWEN_CONTROL(WindowControl, ResizableControl);

	virtual ~WindowControl();
	virtual void Render(Skin::Base* skin);
	virtual void RenderUnder(Skin::Base* skin);

	virtual void SetTitle(Gwen::UnicodeString title);
	virtual void SetTitle(Gwen::String title) { SetTitle(Gwen::Utility::StringToUnicode(title)); }
	virtual void SetClosable(bool closeable);

	virtual void Touch();
	bool IsOnTop();

	virtual void SetHidden(bool hidden);

	void CloseButtonPressed(Gwen::Controls::Base* pFromPanel);
	void RenderFocus(Gwen::Skin::Base* skin);
	void SetDeleteOnClose(bool b) { m_bDeleteOnClose = b; }
	void MakeModal(bool invisible = false);

protected:
	ControlsInternal::Dragger* m_TitleBar;
	Label* m_Title;
	Button* m_CloseButton;

	bool m_bInFocus;
	bool m_bDeleteOnClose;

	ControlsInternal::Modal* m_Modal;
};
}  // namespace Controls
}  // namespace Gwen
#endif
