/*!
	@file
	@author		Generate utility by Albert Semenov
	@date		01/2009
	@module
*/
#pragma once

#{Include}

namespace MyGUI
{
	namespace Managed
	{

		public ref class #{ThisName} : public #{BaseName}
		{

		private:
			typedef MyGUI::#{ThisType} ThisType;

		public:
			#{ThisName}() : #{BaseName}() { }

		internal:
			#{ThisName}( MyGUI::#{ThisType}* _native ) : #{BaseName}(_native) { }
			#{ThisName}( BaseWidget^ _parent, MyGUI::WidgetStyle _style, const std::string& _skin, const MyGUI::IntCoord& _coord, MyGUI::Align _align, const std::string& _layer, const std::string& _name )
			{
				CreateWidget(_parent, _style, _skin, _coord, _align, _layer, _name);
			}

			virtual const std::string& getClassTypeName() const override { return ThisType::getClassTypeName(); }

			static BaseWidget^ WidgetCreator(BaseWidget^ _parent, MyGUI::WidgetStyle _style, const std::string& _skin, const MyGUI::IntCoord& _coord, MyGUI::Align _align, const std::string& _layer, const std::string& _name)
			{
				return gcnew #{ThisName}(_parent, _style, _skin, _coord, _align, _layer, _name);
			}


			//InsertPoint

		};

	} // namespace Managed
} // namespace MyGUI
