mirror of
https://github.com/frosch95/SmartCSV.fx.git
synced 2026-04-11 21:48:22 +02:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0db16c0328 | |||
| bec55b6119 | |||
| 7dac3ce011 | |||
| 449f929f08 | |||
| 9e3561fedb |
@@ -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)
|
||||
|
||||
binary distribution of the [latest release (1.1.0)](https://github.com/frosch95/SmartCSV.fx/releases/download/1.1.0/SmartCSV.fx-1.0.1.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
|
||||
[Introduction](http://javafx.ninja/talks/introduction/)
|
||||
|
||||
@@ -48,5 +48,5 @@ test {
|
||||
}
|
||||
|
||||
group 'ninja.javafx'
|
||||
version '1.1.0'
|
||||
version '1.3.0'
|
||||
mainClassName = 'ninja.javafx.smartcsv.Main'
|
||||
|
||||
@@ -36,6 +36,8 @@ import javafx.event.EventHandler;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.Node;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.input.Dragboard;
|
||||
import javafx.scene.input.TransferMode;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
import javafx.scene.layout.BorderPane;
|
||||
import javafx.stage.FileChooser;
|
||||
@@ -255,6 +257,34 @@ public class SmartCSVController extends FXMLController {
|
||||
fileEncodingFile.setFile(ENCODING_FILE);
|
||||
|
||||
loadCsvPreferencesFromFile();
|
||||
|
||||
initDragAndDrop();
|
||||
}
|
||||
|
||||
private void initDragAndDrop() {
|
||||
tableWrapper.setOnDragOver(event -> {
|
||||
Dragboard db = event.getDragboard();
|
||||
if (event.getGestureSource() != tableWrapper
|
||||
&& db.hasFiles()
|
||||
&& db.getFiles().size() == 1
|
||||
&& db.getFiles().get(0).getName().endsWith(".csv")) {
|
||||
event.acceptTransferModes(TransferMode.COPY);
|
||||
}
|
||||
event.consume();
|
||||
});
|
||||
|
||||
tableWrapper.setOnDragDropped(event -> {
|
||||
Dragboard db = event.getDragboard();
|
||||
boolean success = false;
|
||||
if (db.hasFiles() && db.getFiles().size() == 1 && canOpen()) {
|
||||
File file = db.getFiles().get(0);
|
||||
openFile(currentCsvFile, file);
|
||||
success = true;
|
||||
}
|
||||
/* let the source know whether the string was successfully
|
||||
* transferred and used */
|
||||
event.setDropCompleted(success);
|
||||
});
|
||||
}
|
||||
|
||||
private void loadEncodingFromFile() {
|
||||
@@ -473,6 +503,22 @@ public class SmartCSVController extends FXMLController {
|
||||
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) {
|
||||
validationEditorController.setSelectedColumn(column);
|
||||
validationEditorController.updateForm();
|
||||
@@ -599,6 +645,10 @@ public class SmartCSVController extends FXMLController {
|
||||
|
||||
//Show open file dialog
|
||||
File file = fileChooser.showOpenDialog(applicationPane.getScene().getWindow());
|
||||
openFile(storageFile, file);
|
||||
}
|
||||
|
||||
private void openFile(FileStorage storageFile, File file) {
|
||||
if (file != null) {
|
||||
File previousFile = storageFile.getFile();
|
||||
storageFile.setFile(file);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
application.name = SmartCSV.fx
|
||||
application.version = 1.0.0
|
||||
application.version = 1.3.0
|
||||
|
||||
# fxml views
|
||||
fxml.smartcvs.view = /ninja/javafx/smartcsv/fx/smartcsv.fxml
|
||||
|
||||
@@ -29,6 +29,10 @@ dialog.exit.title = 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.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.header.text = Preferences
|
||||
|
||||
|
||||
@@ -45,6 +45,10 @@ dialog.exit.title = 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.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.delimiterChar = Trennzeichen:
|
||||
preferences.ignoreEmptyLines = Leere Zeilen ignorieren:
|
||||
|
||||
Reference in New Issue
Block a user