Support for drag'n'drop

This commit is contained in:
2022-10-19 12:34:55 +02:00
parent 9e3561fedb
commit 449f929f08
4 changed files with 37 additions and 3 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)
binary distribution of the [latest release (1.1.0)](https://github.com/frosch95/SmartCSV.fx/releases/download/1.1.0/SmartCSV.fx-1.1.0.zip)
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)
## Talks
[Introduction](http://javafx.ninja/talks/introduction/)

View File

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

View File

@@ -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) {
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() {
@@ -599,6 +629,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);

View File

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