package de.fhswf.in.inf.se.projektthemenvergabe.view; import de.fhswf.in.inf.se.projektthemenvergabe.Main; import de.fhswf.in.inf.se.projektthemenvergabe.model.Ansprechpartner; import de.fhswf.in.inf.se.projektthemenvergabe.model.Projekt; import de.fhswf.in.inf.se.projektthemenvergabe.model.Student; import javafx.fxml.FXML; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; import javafx.stage.Stage; /** * The controller for the FXML-View ProjektHinzufuegen. * * @author Dina-Marie Hanxleden & Stefan Suhren * @version 1.0 */ public class ProjektHinzufuegenController { @FXML private TextField projektthemaTextField; @FXML private TextArea projektskizzeTextField; @FXML private TextArea projekthintergrundTextField; @FXML private TextArea projektinhalteTextField; @FXML private ComboBox ansprechpartnerComboBox; @FXML private ComboBox student1ComboBox; @FXML private ComboBox student2ComboBox; @FXML private ComboBox student3ComboBox; @FXML private TextArea dozentenkommentar; @FXML private Button saveButton; private Projekt projekt; private Main main; private Stage projekthinzufuegenStage; private boolean wasAborted = true; /** * * Set back reference of the Main. * * @param main * @param projekt */ public void setMain(Main main, Projekt projekt) { this.projekt = projekt; this.main = main; projekthinzufuegenStage = main.getProjekthinzufuegenStage(); ansprechpartnerComboBox.setItems(main.getAnsprechpartner()); student1ComboBox.setItems(main.getStudenten()); student2ComboBox.setItems(main.getStudenten()); student3ComboBox.setItems(main.getStudenten()); // It's art (not any longer :-( ) saveButton.disableProperty().bind(projektthemaTextField.textProperty() .isEmpty() .or(ansprechpartnerComboBox.valueProperty().isNull() .or(student1ComboBox.valueProperty().isNull() .and(student2ComboBox.valueProperty().isNull().and( student3ComboBox.valueProperty().isNull()))))); if (projekt != null) { if (!projekt.getStatus().equals(Projekt.StatusTypes.IN_BEARBEITUNG) && !projekt.getStatus() .equals(Projekt.StatusTypes.IN_UEBERARBEITUNG)) { main.getProjekthinzufuegenStage().setTitle("Projekt anzeigen"); projekthintergrundTextField.setEditable(false); projektinhalteTextField.setEditable(false); projektskizzeTextField.setEditable(false); projektthemaTextField.setEditable(false); saveButton.disableProperty().unbind(); } else { main.getProjekthinzufuegenStage().setTitle("Projekt bearbeiten"); } ansprechpartnerComboBox.setDisable(!projekt.getStatus() .equals(Projekt.StatusTypes.IN_BEARBEITUNG)); student1ComboBox.setDisable(!projekt.getStatus() .equals(Projekt.StatusTypes.IN_BEARBEITUNG)); student2ComboBox.setDisable(!projekt.getStatus() .equals(Projekt.StatusTypes.IN_BEARBEITUNG)); student3ComboBox.setDisable(!projekt.getStatus() .equals(Projekt.StatusTypes.IN_BEARBEITUNG)); projektthemaTextField.setText(projekt.getProjektthema()); projektskizzeTextField.setText(projekt.getSkizze()); projekthintergrundTextField .setText(projekt.getProjektbeschreibung()); projektinhalteTextField.setText(projekt.getProjekteinhalte()); ansprechpartnerComboBox.setValue(projekt.getAnsprechpartner()); if (projekt.getStudents().size() > 0) { student1ComboBox.setValue(projekt.getStudents().get(0)); } if (projekt.getStudents().size() > 1) { student2ComboBox.setValue(projekt.getStudents().get(1)); } if (projekt.getStudents().size() > 2) { student3ComboBox.setValue(projekt.getStudents().get(2)); } dozentenkommentar.setText(projekt.getDozentenkommentar()); } else { main.getProjekthinzufuegenStage().setTitle("Projekt anlegen"); } } /** * * Getter for the projekt. * * @return Returns the projekt */ public Projekt getProjekt() { if (wasAborted) { return null; } return projekt; } /** * Empty Ansprechpartner comboBox. * */ public void handleResetAnsprechpartner() { ansprechpartnerComboBox.getSelectionModel().clearSelection(); } /** * Empty 1st Student comboBox. * */ public void handleResetStudent1() { student1ComboBox.getSelectionModel().clearSelection(); } /** * Empty 2nd Student comboBox. * */ public void handleResetStudent2() { student2ComboBox.getSelectionModel().clearSelection(); } /** * Empty 3rd Student comboBox. * */ public void handleResetStudent3() { student3ComboBox.getSelectionModel().clearSelection(); } /** * * Set the Text of the Fields from the stage into the TableView and close * the projekthinzufuegen stage. * */ @FXML private void handleSave() { if (!projektthemaTextField.getText().trim().isEmpty()) { if (projekt == null) { projekt = new Projekt(projektthemaTextField.getText().trim(), student1ComboBox.getValue(), student2ComboBox.getValue(), student3ComboBox.getValue(), ansprechpartnerComboBox.getValue()); } else { projekt.setProjektthema(projektthemaTextField.getText().trim()); projekt.setAnsprechpartner(ansprechpartnerComboBox.getValue()); for (Student student : projekt.getStudents() .toArray(new Student[projekt.getStudents().size()])) { projekt.removeStudent(student); } if (student1ComboBox.getValue() != null) { projekt.addStudent(student1ComboBox.getValue()); } if (student2ComboBox.getValue() != null) { projekt.addStudent(student2ComboBox.getValue()); } if (student3ComboBox.getValue() != null) { projekt.addStudent(student3ComboBox.getValue()); } } projekt.setSkizze(projektskizzeTextField.getText().trim()); projekt.setProjektbeschreibung( projekthintergrundTextField.getText().trim()); projekt.setProjekteinhalte(projektinhalteTextField.getText().trim()); wasAborted = false; projekthinzufuegenStage.close(); } else { Alert alert = new Alert(AlertType.ERROR); alert.setTitle("Projektthema ist leer"); alert.setHeaderText("Projektthema kann nicht leer sein."); alert.setContentText("Bitte überprüfen Sie das Projektthema."); alert.initOwner(main.getProjekthinzufuegenStage()); alert.showAndWait(); } } /** * * Cancel the projekthinzufuegen stage. * */ @FXML private void handleCancel() { projekthinzufuegenStage.close(); } }