When a new file is opened check first if there are unsafed changes and show a warning dialog.

This commit is contained in:
2022-10-19 13:48:09 +02:00
parent 7dac3ce011
commit bec55b6119
6 changed files with 28 additions and 4 deletions

View File

@@ -15,7 +15,7 @@ even in a "normal" CSV editor. So I decided to write this simple JavaFX applicat
[Wiki & Documentation](https://github.com/frosch95/SmartCSV.fx/wiki) [Wiki & Documentation](https://github.com/frosch95/SmartCSV.fx/wiki)
binary distribution of the [latest release (1.2.0)](https://github.com/frosch95/SmartCSV.fx/releases/download/1.2.0/SmartCSV.fx-1.2.0.zip) binary distribution of the [latest release (1.3.0)](https://github.com/frosch95/SmartCSV.fx/releases/download/1.3.0/SmartCSV.fx-1.3.0.zip)
## Talks ## Talks
[Introduction](http://javafx.ninja/talks/introduction/) [Introduction](http://javafx.ninja/talks/introduction/)

View File

@@ -48,5 +48,5 @@ test {
} }
group 'ninja.javafx' group 'ninja.javafx'
version '1.2.0' version '1.3.0'
mainClassName = 'ninja.javafx.smartcsv.Main' mainClassName = 'ninja.javafx.smartcsv.Main'

View File

@@ -276,7 +276,7 @@ public class SmartCSVController extends FXMLController {
tableWrapper.setOnDragDropped(event -> { tableWrapper.setOnDragDropped(event -> {
Dragboard db = event.getDragboard(); Dragboard db = event.getDragboard();
boolean success = false; boolean success = false;
if (db.hasFiles() && db.getFiles().size() == 1) { if (db.hasFiles() && db.getFiles().size() == 1 && canOpen()) {
File file = db.getFiles().get(0); File file = db.getFiles().get(0);
openFile(currentCsvFile, file); openFile(currentCsvFile, file);
success = true; success = true;
@@ -503,6 +503,22 @@ public class SmartCSVController extends FXMLController {
return canExit; return canExit;
} }
private boolean canOpen() {
boolean canOpen = true;
if (currentCsvFile.getContent() != null && currentCsvFile.isFileChanged()) {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle(resourceBundle.getString("dialog.changes.title"));
alert.setHeaderText(resourceBundle.getString("dialog.changes.header.text"));
alert.setContentText(resourceBundle.getString("dialog.changes.text"));
Optional<ButtonType> result = alert.showAndWait();
if (result.get() != ButtonType.OK){
canOpen = false;
}
}
return canOpen;
}
public void showValidationEditor(String column) { public void showValidationEditor(String column) {
validationEditorController.setSelectedColumn(column); validationEditorController.setSelectedColumn(column);
validationEditorController.updateForm(); validationEditorController.updateForm();

View File

@@ -1,5 +1,5 @@
application.name = SmartCSV.fx application.name = SmartCSV.fx
application.version = 1.2.0 application.version = 1.3.0
# fxml views # fxml views
fxml.smartcvs.view = /ninja/javafx/smartcsv/fx/smartcsv.fxml fxml.smartcvs.view = /ninja/javafx/smartcsv/fx/smartcsv.fxml

View File

@@ -29,6 +29,10 @@ dialog.exit.title = Close Application
dialog.exit.header.text = Do you want to close application? dialog.exit.header.text = Do you want to close application?
dialog.exit.text = There are changes made to the csv file. If you close now, the changes are lost! dialog.exit.text = There are changes made to the csv file. If you close now, the changes are lost!
dialog.changes.title = Discard changes
dialog.changes.header.text = Do you want to discard changes?
dialog.changes.text = There are changes made to the csv file. If you open a new file, the changes are lost!
dialog.preferences.title = Preferences dialog.preferences.title = Preferences
dialog.preferences.header.text = Preferences dialog.preferences.header.text = Preferences

View File

@@ -45,6 +45,10 @@ dialog.exit.title = Anwendung beenden
dialog.exit.header.text = M\u00f6chten Sie wirklich die Anwendung beenden? dialog.exit.header.text = M\u00f6chten Sie wirklich die Anwendung beenden?
dialog.exit.text = Es gibt noch ungespeicherte \u00c4nderungen, die verloren gehen, wenn Sie die Anwendung jetzt beenden. dialog.exit.text = Es gibt noch ungespeicherte \u00c4nderungen, die verloren gehen, wenn Sie die Anwendung jetzt beenden.
dialog.changes.title = Änderungen verwerfen
dialog.changes.header.text = Wollen Sie Ihre Änderungen verwerfen?
dialog.changes.text = Es gibt noch ungespeicherte \u00c4nderungen, die verloren gehen, wenn Sie die Datei laden.
preferences.quoteChar = Einfassungszeichen: preferences.quoteChar = Einfassungszeichen:
preferences.delimiterChar = Trennzeichen: preferences.delimiterChar = Trennzeichen:
preferences.ignoreEmptyLines = Leere Zeilen ignorieren: preferences.ignoreEmptyLines = Leere Zeilen ignorieren: