package de.greifintegra.kontor.extras.papierkorb.gui;

import de.greifintegra.kontor.Css;
import de.greifintegra.kontor.bausteine.RahmenTitelWeiss;
import de.greifintegra.kontor.extras.gui.CssExtras;
import de.greifintegra.kontor.extras.tabellendatenobjekte.Teilnehmer;
import javafx.geometry.Insets;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;

public class PapierkorbTeilnehmer
{
	private BorderPane elter;
	private TableView<Teilnehmer> tabelle;
	
	public PapierkorbTeilnehmer()
	{
		elter = new BorderPane();
		elter.setTop(initGUItop());
		elter.setCenter(initGUIcenter());
	}
	
	public ScrollPane mache()
	{
		ScrollPane roller = new ScrollPane(elter);
		roller.setStyle(CssExtras.hintergrund12());
		return roller;
	}
	
	private AnchorPane initGUItop()
	{
		AnchorPane feld = new AnchorPane();
		
		Text überschrift = new Text("Papierkorb Teilnehmerliste");
		überschrift.setStyle(Css.überschrift());
		feld.getChildren().add(überschrift);
		AnchorPane.setTopAnchor(überschrift, 10.0);
	   AnchorPane.setLeftAnchor(überschrift, 10.0);
	   
		return feld;
	}
	
	private HBox initGUIcenter()
	{
		HBox waagerecht = new HBox(10);
		waagerecht.setPadding(new Insets(10,10,10,10));		
	   waagerecht.getChildren().add(initGUIcenterLinks());
	   waagerecht.getChildren().add(initGUIcenterRechts());
		return waagerecht;
	}
	
	private VBox initGUIcenterLinks()
	{
		VBox senkrecht = new VBox();
		
		HBox zeile1 = new HBox(10);
		zeile1.setPadding(new Insets(5,5,5,5));
		zeile1.setStyle(Css.boxgrau());
		TextArea zustandDatenbank = new TextArea();
		zustandDatenbank.getStyleClass().add("textarea80");
		zustandDatenbank.setStyle(Css.focusrahmenWeg());
		zustandDatenbank.setEditable(false);
		zustandDatenbank.setPrefRowCount(2);
		zustandDatenbank.setPrefColumnCount(23);
		zustandDatenbank.setWrapText(true);
		RahmenTitelWeiss rahmenZustandDatenbank = new RahmenTitelWeiss("Zustand der Datenbank", zustandDatenbank);
		Button knopfDatenbank = new Button("aktualisieren");
		zeile1.getChildren().add(rahmenZustandDatenbank);
		zeile1.getChildren().add(knopfDatenbank);
		
		VBox zeile2 = new VBox(10);
		zeile2.setPadding(new Insets(10,10,10,10));	
		zeile2.setStyle(Css.boxgrau());
		zeile2.getChildren().add(initGUItabelle());
		
		senkrecht.getChildren().add(zeile1);
		senkrecht.getChildren().add(zeile2);
		
		return senkrecht;
	}
	
	private TableView<Teilnehmer> initGUItabelle()
	{
		tabelle = new TableView<Teilnehmer>();
		
		TableColumn<Teilnehmer,Integer> id = new TableColumn<Teilnehmer,Integer>("ID");
      TableColumn<Teilnehmer,String> vorname = new TableColumn<Teilnehmer,String>("Vorname");
      TableColumn<Teilnehmer,String> nachname = new TableColumn<Teilnehmer,String>("Nachname");
      TableColumn<Teilnehmer,Boolean> admin = new TableColumn<Teilnehmer,Boolean>("Admin");
      TableColumn<Teilnehmer,String> status = new TableColumn<Teilnehmer,String>("Status");
      
      id.prefWidthProperty().bind(tabelle.widthProperty().divide(12));
      vorname.prefWidthProperty().bind(tabelle.widthProperty().divide(12).multiply(3));
      nachname.prefWidthProperty().bind(tabelle.widthProperty().divide(12).multiply(3));
      admin.prefWidthProperty().bind(tabelle.widthProperty().divide(12).multiply(2));
      status.prefWidthProperty().bind(tabelle.widthProperty().divide(12).multiply(3));
      
      id.setEditable(false);
      vorname.setEditable(false);
      nachname.setEditable(false);
      admin.setEditable(false);
      status.setEditable(false);
       
      tabelle.getColumns().add(id);
      tabelle.getColumns().add(vorname);
      tabelle.getColumns().add(nachname);
      tabelle.getColumns().add(admin);
      tabelle.getColumns().add(status);
		
		return tabelle;
	}
	
	private VBox initGUIcenterRechts()
	{
		VBox senkrecht1 = new VBox();
		
		VBox senkrecht2 = new VBox(10);
		senkrecht2.setPadding(new Insets(5,5,5,5));
		senkrecht2.setStyle(Css.boxgrau());	
		senkrecht2.getChildren().add(initGUIcenterRechtsZeile1());
		senkrecht2.getChildren().add(initGUIcenterRechtsZeile2());
		senkrecht2.getChildren().add(initGUIcenterRechtsZeile3());
		senkrecht2.getChildren().add(initGUIcenterRechtsZeile4());
		senkrecht2.getChildren().add(initGUIcenterRechtsZeile5());
		senkrecht2.getChildren().add(initGUIcenterRechtsZeile6());
		senkrecht2.getChildren().add(initGUIcenterRechtsZeile6a());
		senkrecht2.getChildren().add(initGUIcenterRechtsZeile7());
		senkrecht2.getChildren().add(initGUIcenterRechtsZeile8());
		
		senkrecht1.getChildren().add(senkrecht2);
		senkrecht1.getChildren().add(initGUIcenterRechtsDatenbank());
		senkrecht1.getChildren().add(initGUIcenterRechtsFussnote());
		
		return senkrecht1;
	}
	
	private HBox initGUIcenterRechtsZeile1()
	{
		HBox zeile = new HBox(10);
		
		Label id = new Label("");
		RahmenTitelWeiss rahmenId = new RahmenTitelWeiss("ID",id);
		
		TextField anrede = new TextField();
		anrede.setPrefColumnCount(10);
		anrede.setEditable(false);
		RahmenTitelWeiss rahmenAnrede = new RahmenTitelWeiss("Anrede",anrede);
				
		TextField vorname = new TextField();
		vorname.setPrefColumnCount(17);
		vorname.setEditable(false);
		RahmenTitelWeiss rahmenVorname = new RahmenTitelWeiss("Vorname",vorname);
		
		TextField nachname = new TextField();
		nachname.setPrefColumnCount(17);
		nachname.setEditable(false);
		RahmenTitelWeiss rahmenNachname = new RahmenTitelWeiss("Nachname",nachname);
		
		zeile.getChildren().add(rahmenId);
		zeile.getChildren().add(rahmenAnrede);
		zeile.getChildren().add(rahmenVorname);
		zeile.getChildren().add(rahmenNachname);
		return zeile;
	}
	
	private HBox initGUIcenterRechtsZeile2()
	{
		HBox zeile = new HBox(10);
		
		TextField strasse = new TextField();
		strasse.setPrefColumnCount(17);
		strasse.setEditable(false);
		RahmenTitelWeiss rahmenStrasse = new RahmenTitelWeiss("Straße", strasse);

		TextField hausnummer = new TextField();
		hausnummer.setPrefColumnCount(3);
		hausnummer.setEditable(false);
		RahmenTitelWeiss rahmenHausnummer = new RahmenTitelWeiss("Nr.", hausnummer);
		
		TextField postleitzahl = new TextField();
		postleitzahl.setPrefColumnCount(5);
		postleitzahl.setEditable(false);
		RahmenTitelWeiss rahmenPostleitzahl = new RahmenTitelWeiss("PLZ", postleitzahl);
		
		TextField stadt = new TextField();
		stadt.setPrefColumnCount(17);
		stadt.setEditable(false);
		RahmenTitelWeiss rahmenStadt = new RahmenTitelWeiss("Stadt", stadt);
		
		zeile.getChildren().add(rahmenStrasse);
		zeile.getChildren().add(rahmenHausnummer);
		zeile.getChildren().add(rahmenPostleitzahl);
		zeile.getChildren().add(rahmenStadt);
		return zeile;
	}
	
	private HBox initGUIcenterRechtsZeile3()
	{
		HBox zeile = new HBox(10);
		
		TextField land = new TextField();
		land.setPrefColumnCount(17);
		land.setEditable(false);
		RahmenTitelWeiss rahmenLand = new RahmenTitelWeiss("Land", land);
		
		TextField geburtsdatum = new TextField();
		geburtsdatum.setEditable(false);
		RahmenTitelWeiss rahmenGeburtsdatum = new RahmenTitelWeiss("Geburtsdatum", geburtsdatum);
		
		TextField status = new TextField();
		status.setEditable(false);
		status.setMinWidth(250);
		RahmenTitelWeiss rahmenStatus = new RahmenTitelWeiss("Status", status);
		
		zeile.getChildren().add(rahmenLand);
		zeile.getChildren().add(rahmenGeburtsdatum);
		zeile.getChildren().add(rahmenStatus);
		return zeile;
	}
	
	private HBox initGUIcenterRechtsZeile4()
	{
		HBox zeile = new HBox(10);
		
		TextField telefon = new TextField();
		telefon.setPrefColumnCount(17);
		telefon.setEditable(false);
		RahmenTitelWeiss rahmenTelefon = new RahmenTitelWeiss("Telefon", telefon);

		TextField fax = new TextField();
		fax.setPrefColumnCount(17);
		fax.setEditable(false);
		RahmenTitelWeiss rahmenFax = new RahmenTitelWeiss("Fax", fax);
		
		TextField handy = new TextField();
		handy.setPrefColumnCount(17);
		handy.setEditable(false);
		RahmenTitelWeiss rahmenHandy = new RahmenTitelWeiss("Handy", handy);
		
		zeile.getChildren().add(rahmenTelefon);
		zeile.getChildren().add(rahmenFax);
		zeile.getChildren().add(rahmenHandy);
		return zeile;
	}
	
	private HBox initGUIcenterRechtsZeile5()
	{
		HBox zeile = new HBox(10);
		
		TextField email = new TextField();
		email.setPrefColumnCount(21);
		email.setEditable(false);
		RahmenTitelWeiss rahmenEmail = new RahmenTitelWeiss("Email", email);
		
		TextField homepage = new TextField();
		homepage.setPrefColumnCount(21);
		homepage.setEditable(false);
		RahmenTitelWeiss rahmenHomepage = new RahmenTitelWeiss("Homepage", homepage);
		
		zeile.getChildren().add(rahmenEmail);
		zeile.getChildren().add(rahmenHomepage);
		return zeile;
	}
	
	private HBox initGUIcenterRechtsZeile6()
	{	
		HBox zeile = new HBox(10);
		zeile.setPadding(new Insets(0,5,0,5));
		
		TextField loginname = new TextField();
		loginname.setPrefColumnCount(17);
		loginname.setEditable(false);
		RahmenTitelWeiss rahmenLoginname = new RahmenTitelWeiss("Loginname", loginname);

		TextField loginkennwort = new TextField();
		loginkennwort.setPrefColumnCount(17);
		loginkennwort.setEditable(false);
		RahmenTitelWeiss rahmenLoginkennwort = new RahmenTitelWeiss("Loginkennwort", loginkennwort);
		
		zeile.getChildren().add(rahmenLoginname);
		zeile.getChildren().add(rahmenLoginkennwort);

		return zeile;
	}
	
	private HBox initGUIcenterRechtsZeile6a()
	{	
		HBox zeile = new HBox(20);
		zeile.setPadding(new Insets(0,5,0,5));
		
		CheckBox adminwahl = new CheckBox("Adminrechte:");
		adminwahl.setStyle(CssExtras.label());
		adminwahl.setDisable(true);
		
		CheckBox teilnehmerwahl = new CheckBox("Teilnehmer verwalten");
		teilnehmerwahl.setStyle(CssExtras.label());
		teilnehmerwahl.setDisable(true);
		
		CheckBox kundenwahl = new CheckBox("Kunden verwalten");
		kundenwahl.setStyle(CssExtras.label());
		kundenwahl.setDisable(true);
		
		CheckBox projektewahl = new CheckBox("Projekte verwalten");
		projektewahl.setStyle(CssExtras.label());
		projektewahl.setDisable(true);
		
		zeile.getChildren().add(adminwahl);
		zeile.getChildren().add(teilnehmerwahl);
		zeile.getChildren().add(kundenwahl);
		zeile.getChildren().add(projektewahl);

		return zeile;
	}

	private HBox initGUIcenterRechtsZeile7()
	{
		HBox zeile = new HBox(10);
		
		TextArea info = new TextArea();
      info.setPrefRowCount(3);
      info.setPrefColumnCount(36);
      info.setWrapText(true);
      info.setEditable(false);
		
		RahmenTitelWeiss rahmenLoginname = new RahmenTitelWeiss("Info", info);

		ListView<String> gruppen = new ListView<String>();
		gruppen.setPrefWidth(190);
		gruppen.setPrefHeight(50);
		RahmenTitelWeiss rahmenGruppen = new RahmenTitelWeiss("Gruppen", gruppen);
		
		zeile.getChildren().add(rahmenLoginname);
		zeile.getChildren().add(rahmenGruppen);
		return zeile;
	}
	
	private HBox initGUIcenterRechtsZeile8()
	{
		HBox zeile = new HBox(10);
		
		Label erstelltAm = new Label("");
		RahmenTitelWeiss rahmenErstelltAm = new RahmenTitelWeiss("Eintrag erstellt am",erstelltAm);

		Label erstelltVon = new Label("");
		RahmenTitelWeiss rahmenErstelltVon = new RahmenTitelWeiss("erstellt von",erstelltVon);
		
		Label erstelltLetzte = new Label("");
		RahmenTitelWeiss rahmenErstelltLetzte = new RahmenTitelWeiss("letzte Änderung von",erstelltLetzte);
		
		zeile.getChildren().add(rahmenErstelltAm);
		zeile.getChildren().add(rahmenErstelltVon);
		zeile.getChildren().add(rahmenErstelltLetzte);
		return zeile;
	}
	
	private HBox initGUIcenterRechtsDatenbank()
	{
		HBox zeile = new HBox(20);
		zeile.setPadding(new Insets(5,5,5,5));
		zeile.setStyle(Css.boxhellblaugrau());
				
		TextArea antwortDatenbank = new TextArea();
		antwortDatenbank.getStyleClass().add("textareaFlat");
		antwortDatenbank.setStyle(Css.focusrahmenWeg());
		antwortDatenbank.setEditable(false);
		antwortDatenbank.setPrefRowCount(3);
		antwortDatenbank.setPrefColumnCount(25);
		antwortDatenbank.setWrapText(true);
		RahmenTitelWeiss rahmenAntwortDatenbank = new RahmenTitelWeiss("Antwort Datenbank", antwortDatenbank);
		
		VBox senkrecht = new VBox(5);
		Label schildchenAktion = new Label("Aktion");
		schildchenAktion.setStyle(CssExtras.titel());
		
		ToggleGroup gruppe = new ToggleGroup();
		 
		RadioButton knopfAktivieren = new RadioButton("aktivieren");
		knopfAktivieren.setToggleGroup(gruppe);
		knopfAktivieren.setSelected(true);
		
		RadioButton knopfArchivieren = new RadioButton("archivieren");
		knopfArchivieren.setToggleGroup(gruppe);
		
		RadioButton knopfLöschen = new RadioButton("entgültig entfernen*");
		knopfLöschen.setToggleGroup(gruppe);
		
		senkrecht.getChildren().add(schildchenAktion);
		senkrecht.getChildren().add(knopfAktivieren);
		senkrecht.getChildren().add(knopfArchivieren);
		senkrecht.getChildren().add(knopfLöschen);
		
		Button knopfSenden = new Button("senden");
		
		zeile.getChildren().add(rahmenAntwortDatenbank);
		zeile.getChildren().add(senkrecht);
		zeile.getChildren().add(knopfSenden);
		return zeile;
	}
	
	private HBox initGUIcenterRechtsFussnote()
	{
		HBox zeile = new HBox(20);
		zeile.setPadding(new Insets(5,5,5,5));
		zeile.setStyle(Css.boxgrau());

		Label fussnote2 = new Label("* kann nur von der Bürozentrale entgültig entfernt werden");
		fussnote2.setStyle(CssExtras.titel());
		
		zeile.getChildren().add(fussnote2);
		return zeile;
	}
}