mirror of
https://gitlab.com/kauron/jstudy
synced 2024-12-23 00:43:32 +01:00
FileChooser will remember last folders and will suggest filenames
This commit is contained in:
parent
2613dc66e1
commit
112ab9f293
3 changed files with 15 additions and 2 deletions
|
@ -1,6 +1,7 @@
|
||||||
package es.kauron.jstudy.controller;
|
package es.kauron.jstudy.controller;
|
||||||
|
|
||||||
import es.kauron.jstudy.Main;
|
import es.kauron.jstudy.Main;
|
||||||
|
import es.kauron.jstudy.model.AppConfig;
|
||||||
import es.kauron.jstudy.model.TestItem;
|
import es.kauron.jstudy.model.TestItem;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.property.BooleanProperty;
|
import javafx.beans.property.BooleanProperty;
|
||||||
|
@ -83,8 +84,10 @@ public class Controller implements Initializable {
|
||||||
private void onLoadAction(ActionEvent event) {
|
private void onLoadAction(ActionEvent event) {
|
||||||
FileChooser chooser = new FileChooser();
|
FileChooser chooser = new FileChooser();
|
||||||
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JStudy file", "*.jsdb"));
|
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JStudy file", "*.jsdb"));
|
||||||
|
if (AppConfig.lastDir != null) chooser.setInitialDirectory(AppConfig.lastDir);
|
||||||
List<File> list = chooser.showOpenMultipleDialog(root.getScene().getWindow());
|
List<File> list = chooser.showOpenMultipleDialog(root.getScene().getWindow());
|
||||||
if (list == null || list.isEmpty()) return;
|
if (list == null || list.isEmpty()) return;
|
||||||
|
AppConfig.lastDir = list.get(0).getParentFile();
|
||||||
if (list.size() > 1) {
|
if (list.size() > 1) {
|
||||||
ButtonType mergeBT = new ButtonType("Merge", ButtonBar.ButtonData.APPLY);
|
ButtonType mergeBT = new ButtonType("Merge", ButtonBar.ButtonData.APPLY);
|
||||||
ButtonType openBT = new ButtonType("Open", ButtonBar.ButtonData.OK_DONE);
|
ButtonType openBT = new ButtonType("Open", ButtonBar.ButtonData.OK_DONE);
|
||||||
|
@ -127,8 +130,10 @@ public class Controller implements Initializable {
|
||||||
private void onImportAction(ActionEvent event) {
|
private void onImportAction(ActionEvent event) {
|
||||||
FileChooser chooser = new FileChooser();
|
FileChooser chooser = new FileChooser();
|
||||||
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Data files (.csv, .txt)", "*.csv", "*.txt"));
|
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Data files (.csv, .txt)", "*.csv", "*.txt"));
|
||||||
|
if (AppConfig.lastDir != null) chooser.setInitialDirectory(AppConfig.lastDir);
|
||||||
File file = chooser.showOpenDialog(root.getScene().getWindow());
|
File file = chooser.showOpenDialog(root.getScene().getWindow());
|
||||||
if (file == null) return;
|
if (file == null) return;
|
||||||
|
AppConfig.lastDir = file.getParentFile();
|
||||||
String separator;
|
String separator;
|
||||||
if (file.getName().matches(".*txt"))
|
if (file.getName().matches(".*txt"))
|
||||||
separator = TestItem.TAB;
|
separator = TestItem.TAB;
|
||||||
|
@ -150,7 +155,7 @@ public class Controller implements Initializable {
|
||||||
FXMLLoader loader = new FXMLLoader(Main.class.getResource("view/table.fxml"));
|
FXMLLoader loader = new FXMLLoader(Main.class.getResource("view/table.fxml"));
|
||||||
Parent tableRoot = loader.load();
|
Parent tableRoot = loader.load();
|
||||||
|
|
||||||
((TableController) loader.getController()).setData(list, this, file);
|
((TableController) loader.getController()).setData(name, list, this, file);
|
||||||
tabMap.put(tab, loader.getController());
|
tabMap.put(tab, loader.getController());
|
||||||
|
|
||||||
tab.setContent(tableRoot);
|
tab.setContent(tableRoot);
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package es.kauron.jstudy.controller;
|
package es.kauron.jstudy.controller;
|
||||||
|
|
||||||
import es.kauron.jstudy.Main;
|
import es.kauron.jstudy.Main;
|
||||||
|
import es.kauron.jstudy.model.AppConfig;
|
||||||
import es.kauron.jstudy.model.TestItem;
|
import es.kauron.jstudy.model.TestItem;
|
||||||
import javafx.beans.property.BooleanProperty;
|
import javafx.beans.property.BooleanProperty;
|
||||||
import javafx.beans.property.SimpleBooleanProperty;
|
import javafx.beans.property.SimpleBooleanProperty;
|
||||||
|
@ -38,6 +39,7 @@ public class TableController implements Initializable {
|
||||||
private ObservableList<TestItem> data;
|
private ObservableList<TestItem> data;
|
||||||
private Controller parent;
|
private Controller parent;
|
||||||
private File file;
|
private File file;
|
||||||
|
private String name;
|
||||||
protected BooleanProperty saved = new SimpleBooleanProperty();
|
protected BooleanProperty saved = new SimpleBooleanProperty();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -55,7 +57,8 @@ public class TableController implements Initializable {
|
||||||
saveButton.disableProperty().bind(saved);
|
saveButton.disableProperty().bind(saved);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setData(List<TestItem> list, Controller controller, File file) {
|
void setData(String name, List<TestItem> list, Controller controller, File file) {
|
||||||
|
this.name = name;
|
||||||
this.data = FXCollections.observableArrayList(list);
|
this.data = FXCollections.observableArrayList(list);
|
||||||
this.parent = controller;
|
this.parent = controller;
|
||||||
table.setItems(data);
|
table.setItems(data);
|
||||||
|
@ -68,7 +71,11 @@ public class TableController implements Initializable {
|
||||||
if (file == null) {
|
if (file == null) {
|
||||||
FileChooser chooser = new FileChooser();
|
FileChooser chooser = new FileChooser();
|
||||||
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JStudy file", "*.jsdb"));
|
chooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JStudy file", "*.jsdb"));
|
||||||
|
if (AppConfig.lastDir != null) chooser.setInitialDirectory(AppConfig.lastDir);
|
||||||
|
chooser.setInitialFileName(name);
|
||||||
file = chooser.showSaveDialog(table.getScene().getWindow());
|
file = chooser.showSaveDialog(table.getScene().getWindow());
|
||||||
|
if (file != null)
|
||||||
|
AppConfig.lastDir = file.getParentFile();
|
||||||
}
|
}
|
||||||
if (file == null) return;
|
if (file == null) return;
|
||||||
TestItem.saveTo(file, data);
|
TestItem.saveTo(file, data);
|
||||||
|
|
|
@ -8,6 +8,7 @@ import java.util.Scanner;
|
||||||
public class AppConfig {
|
public class AppConfig {
|
||||||
private static final String FILE = "./config.ini";
|
private static final String FILE = "./config.ini";
|
||||||
public static boolean repeatWrong, showFeedback;
|
public static boolean repeatWrong, showFeedback;
|
||||||
|
public static File lastDir;
|
||||||
|
|
||||||
public static void save() {
|
public static void save() {
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Reference in a new issue