#include <classes/layouter/windows.h>
#include <classes/layouter/boopsigadgets.h>
#include <classes/exec/libraries.h>
#include <classes/boopsi/images.h>
#include <classes/layouter/decorgadgets.h>

class ScrollerWindowC : public LayouterWindowC {
public:
	ScrollerWindowC(GTIDCMPortC &, ScreenC &);
	~ScrollerWindowC();
	TextAttrC font;
	LBScrollerC vertical,horizontal;
	GeometryC verticalGeo,horizontalGeo;
};

ScrollerWindowC::ScrollerWindowC(GTIDCMPortC &p, ScreenC &s)
	: LayouterWindowC(p,s,font,
		WA_SizeBRight,TRUE,
		WA_SizeBBottom,TRUE,
		WA_CloseGadget,TRUE,
		WA_DepthGadget,TRUE,
		WA_SizeGadget,TRUE,
		WA_DragBar,TRUE,
		TAG_END),
	  font("topaz.font",8),
	  vertical(NULL,*this,0,0,
	  	GA_RightBorder,TRUE,
	  	PGA_Borderless,TRUE,
	  	PGA_Freedom,FREEVERT,
	  	PGA_NewLook,TRUE,
	  	TAG_END),
	  horizontal(NULL,*this,0,0,
	  	GA_BottomBorder,TRUE,
	  	PGA_Borderless,TRUE,
	  	PGA_Freedom,FREEHORIZ,
	  	PGA_NewLook,TRUE,
	   TAG_END),
	  verticalGeo(vertical,
	   LAYOUT_GROUP,NULL,0,LAYOUT_GROUP,NULL,-2,
	   LAYOUT_GROUP,NULL,2,LAYOUT_GROUP,NULL,-2),
	  horizontalGeo(horizontal,
	   LAYOUT_GROUP,NULL,1,LAYOUT_GROUP,NULL,-1,
	   LAYOUT_GROUP,NULL,0,LAYOUT_GROUP,NULL,-2)
{
	gadgets.add(vertical);
	gadgets.add(horizontal);
	rightGeo.add(verticalGeo);
	bottomGeo.add(horizontalGeo);
}

ScrollerWindowC::~ScrollerWindowC()
{
	close();
}

LibraryBaseErrC GadToolsBase("gadtools.library",37);
LibraryBaseErrC UtilityBase("utility.library",37);
LibraryBaseErrC AslBase("asl.library",37);
LibraryBaseErrC CxBase("commodities.library",37);
LibraryBaseErrC LayersBase("layers.library",37);
LibraryBaseErrC WorkbenchBase("workbench.library",37);

int main()
{
	if (!LibraryBaseC::areAllOpen())
		return 20;

	// diese Klasse empfängt und verarbeitet alle signals
	SignalsC sc;

	// public screen sperren
	PublicScreenC screen(NULL);
	screen.open();

	// der IDCMPort (in der GadTools Version) für die Fenster
	GTIDCMPortC port;
	sc.add(port);

	// Ein Testfenster erzeugen
	ScrollerWindowC window(port,screen);
	WindowCloseHandlerC wch(window);

	CtrlCHandlerC ctrlc();
	sc.add(ctrlc);

	// Fenster öffnen
	window.open(WA_Width,100, WA_Height,100, TAG_END);

	// THE BIG AND EASY ONE!
	sc.loop();

	return 0;
}

