#ifndef __ULIB_BUTTON_H__
#define __ULIB_BUTTON_H__

#include <header/Object.h>
#include <header/Control.h>
#include <header/Label.h>
#include <header/GraphBox.h>
#include <header/Window.h>
#include <header/ULString.h>
extern "C"
{
	#include <guigui00.h>
}
using namespace Ulib;

namespace Ulib
{
	class Button : public Ulib::Control
	{
	protected:
		GraphBox gbox;
		ULString caption;
		//Label caption;
		//char *caption;
		bool visible; // 可視:true
		bool isPushed, isOnMouse;
		int lastx0, lasty0; // 最後に検知した座標
	public:
		Button();
		virtual ~Button();
		virtual const char *getTypeName();
		virtual Button &xSize(int value);
		virtual int xSize();
		virtual Button &ySize(int value);
		virtual int ySize();
		virtual Button &xPosition(int value);
		virtual int xPosition();
		virtual Button &yPosition(int value);
		virtual int yPosition();
		virtual void Caption(char *caption0);
		virtual const char *Caption();
		virtual void Show();
		virtual void Erase();
		virtual void Push();
		virtual bool Push(int x, int y);
		virtual void Release();
		virtual bool Release(int x, int y);
		virtual bool Drag(int x, int y);
		virtual void OnMouse();
		virtual bool OnMouse(int x, int y);
		virtual void Refresh(int x, int y);
		virtual bool IsPushed(); // クリックされていたらtrue
		virtual bool IsOnMouse(int x, int y); // マウスが上にあったらtrue

		/* マウスが上にあったらtrue
		（最後にDrag(x,y),Push(x,y),Release(x,y)されたときの座標で判断）*/
		virtual bool IsOnMouse();
		friend void Ulib::Window::AddObject(Object &object0);
		friend void Ulib::Window::RemoveObject(Object &object0);
	};
}

#endif
