#ifndef Version_H
#define Version_H

#include "..\Basic\Abschnitt.h"
#include "..\..\Netzwerk\Main\MSKlient.h"
#include "..\..\Netzwerk\Patch\PSKlient.h"
#include "..\..\Ressourcen\Ressourcen.h"
#include "..\Login\Login.h"
#include <TextFeld.h>
#include <AuswahlBox.h>
#include <Tabelle.h>

class Version : public Abschnitt
{
private:
	Fenster *fenster;
	Fenster *f;
	AdminAccount *account;
    MSKlient *msc;
    PSKlient *psc;
	Fenster *gruppeF; // Gruppen Fenster
	ObjTabelle *gruppeT; // Tabelle mit Gruppen
	TextFeld *neuGruppeName; // Neue Gruppe erstellen Name Textfeld
	TextFeld *neuGruppePfad; // Neue Gruppe erstellen Pfad Textfeld
	Knopf *neuGruppeK; // neue Gruppe erstellen Knopf
	Fenster *systemF; // System Fenster
	InitDatei *systemInit; // Pfad zu den Systemen
	ObjTabelle *systemT; // Tabelle mit Systemen
	TextFeld *neuSystemName; // Neues System erstellen Name Textfeld
	Knopf *neuSystemK; // neues System erstellen Knopf
	Knopf *speichern; // Pfade zu den Systemen speichern
	Knopf *weiter;
	Fenster *dateiF; // Datei Fenster
	ObjTabelle *dateiT; // Tabelle mit Dateien
	Knopf *commit; // update Knopf
	Knopf *aktualisieren;
	Fenster *fehlerF;
	TextFeld *fehlerText;
	Knopf *zurück;
	Schrift *schrift;
	Text *sName;
	int system;
	int gruppe;
	int ref;

	void sucheDateien( const char *pfad, RCArray< ReferenceCounting< FileInfo > > &list );

public:
	// Konstruktor
	Version( Schrift *s, MSKlient *msc, RessourceBild *rb, AdminAccount *acc, Bildschirm *b );
	// Destruktor
	~Version();
	// nicht constant
	virtual void setFenster( Fenster *f );
	virtual void setSichtbar( bool s );
	bool neuGruppeKMausEreignis( void *o, MausEreignis me );
	bool auswahlKnopfMausEreignis( void *o, MausEreignis me );
	bool neuSystemKMausEreignis( void *o, MausEreignis me );
	bool speichernMausEreignis( void *o, MausEreignis me );
	bool weiterMausEreignis( void *o, MausEreignis me );
	bool commitMausEreignis( void *o, MausEreignis me );
	bool aktualisierenMausEreignis( void *o, MausEreignis me );
	bool zurückMausEreignis( void *o, MausEreignis me );
	// constant
	InitDatei *getSystemInit() const;
	// Reference Counting
	virtual Abschnitt *getThis();
	virtual Abschnitt *release();
};

// Ereignisse
bool versionNeuGruppeKMausEreignis( void *p, void *o, MausEreignis me );
bool versionAuswahlKnopfMausEreignis( void *p, void *o, MausEreignis me );
bool versionNeuSystemKMausEreignis( void *p, void *o, MausEreignis me );
bool versionSpeichernMausEreignis( void *p, void *o, MausEreignis me );
bool versionWeiterMausEreignis( void *p, void *o, MausEreignis me );
bool versionCommitMausEreignis( void *p, void *o, MausEreignis me );
bool versionAktualisierenMausEreignis( void *p, void *o, MausEreignis me );
bool versionZurückMausEreignis( void *p, void *o, MausEreignis me );

#endif