package de.fhswf.in.inf.se.notepadMinusMinus.view; import java.io.File; import java.math.BigDecimal; import de.fhswf.in.inf.se.notepadMinusMinus.Main; import de.fhswf.in.inf.se.notepadMinusMinus.model.Grade; import javafx.application.Platform; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.control.Label; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.cell.ComboBoxTableCell; import javafx.scene.control.cell.TextFieldTableCell; import javafx.stage.FileChooser; import javafx.util.converter.IntegerStringConverter; public class MainViewController { @FXML private TableView gradeTable; @FXML private TableColumn semesterColumn; @FXML private TableColumn modulenameColumn; @FXML private TableColumn ectsColumn; @FXML private TableColumn gradeColumn; @FXML private TableColumn attemptColumn; @FXML private Label ectsSumLabel; @FXML private Label averageNoteLabel; @FXML private Button deleteButton; @FXML private ComboBox colloquiumComboBox; @FXML private ComboBox thesisComboBox; private Main main; @FXML private void initialize() { semesterColumn.setCellValueFactory( cellData -> cellData.getValue().semesterProperty().asObject()); semesterColumn.setCellFactory( TextFieldTableCell.forTableColumn(new IntegerStringConverter())); semesterColumn.setOnEditCommit(data -> { data.getRowValue().setSemester(data.getNewValue()); }); modulenameColumn.setCellValueFactory( cellData -> cellData.getValue().modulenameProperty()); modulenameColumn.setCellFactory(TextFieldTableCell.forTableColumn()); modulenameColumn.setOnEditCommit(data -> { data.getRowValue().setModulename(data.getNewValue()); }); ectsColumn.setCellValueFactory( cellData -> cellData.getValue().ectsProperty().asObject()); ectsColumn.setCellFactory( TextFieldTableCell.forTableColumn(new IntegerStringConverter())); ectsColumn.setOnEditCommit(data -> { data.getRowValue().setEcts(data.getNewValue()); }); gradeColumn.setCellValueFactory( cellData -> cellData.getValue().gradeProperty()); gradeColumn.setCellFactory( ComboBoxTableCell.forTableColumn(Grade.gradeValuesProperty())); gradeColumn.setOnEditCommit(data -> { data.getRowValue().setGrade(data.getNewValue()); }); attemptColumn.setCellValueFactory( cellData -> cellData.getValue().attemptProperty().asObject()); attemptColumn.setCellFactory( TextFieldTableCell.forTableColumn(new IntegerStringConverter())); attemptColumn.setOnEditCommit(data -> { data.getRowValue().setAttempt(data.getNewValue()); }); deleteButton.disableProperty().bind(gradeTable.getSelectionModel() .selectedIndexProperty().lessThan(0)); } public void setMain(Main main) { this.main = main; gradeTable.setItems(main.getGradeList()); } @FXML private void handleNewValue() { Grade grade = new Grade(); gradeTable.getItems().add(grade); } @FXML private void handleDeleteValue() { Grade delete = gradeTable.getSelectionModel().getSelectedItem(); if (delete != null) { gradeTable.getItems().remove(delete); } } @FXML private void handleNew() { if (main != null) { gradeTable.getItems().clear(); main.setOpenFile(null); } } @FXML private void handleOpen() { FileChooser fileChooser = new FileChooser(); // Set extension filter FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter( "XML files (*.xml)", "*.xml"); fileChooser.getExtensionFilters().add(extFilter); // Set initial Directory to a good value if (main != null && main.getGradesFilePath() != null) { fileChooser .setInitialDirectory(main.getGradesFilePath().getParentFile()); } else { String userDirectoryString = System.getProperty("user.home"); File userDirectory = new File(userDirectoryString); fileChooser.setInitialDirectory(userDirectory); } // Show save file dialog File file = fileChooser.showOpenDialog(main.getPrimaryStage()); if (file != null) { main.loadGradesFromFile(file); } } @FXML private void handleSave() { if (main.getOpenFile() == null) { handleSaveAs(); } else { if (main != null) { main.saveGradesToFile(main.getOpenFile()); } } } @FXML private void handleSaveAs() { FileChooser fileChooser = new FileChooser(); // Only show XML files. FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter( "XML files (*.xml)", "*.xml"); fileChooser.getExtensionFilters().add(extFilter); // Set initial Directory to a good value if (main != null && main.getGradesFilePath() != null) { fileChooser .setInitialDirectory(main.getGradesFilePath().getParentFile()); } else { String userDirectoryString = System.getProperty("user.home"); File userDirectory = new File(userDirectoryString); fileChooser.setInitialDirectory(userDirectory); } File file = fileChooser.showSaveDialog(main.getPrimaryStage()); if (file != null) { // Set the correct file ending if (!file.getPath().endsWith(".xml")) { file = new File(file.getPath() + ".xml"); } main.saveGradesToFile(file); } } @FXML private void handleExit() { Platform.exit(); } }