From 016c95f7f1d003822f628167658a8f9f8d89c2c6 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Sat, 8 Dec 2018 16:06:17 +0100 Subject: [PATCH] Make file/dir selection boxes usable --- .../ui/controls/AbstractFileSelectionBox.java | 51 ++++++++++++------- .../ui/controls/DirectorySelectionBox.java | 20 ++++++++ .../ctbrec/ui/controls/FileSelectionBox.java | 7 +++ .../ui/controls/ProgramSelectionBox.java | 7 +++ 4 files changed, 66 insertions(+), 19 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/controls/AbstractFileSelectionBox.java b/client/src/main/java/ctbrec/ui/controls/AbstractFileSelectionBox.java index cc580ebc..9d8d1fab 100644 --- a/client/src/main/java/ctbrec/ui/controls/AbstractFileSelectionBox.java +++ b/client/src/main/java/ctbrec/ui/controls/AbstractFileSelectionBox.java @@ -39,7 +39,7 @@ public abstract class AbstractFileSelectionBox extends HBox { return "file"; } }; - private TextField fileInput; + protected TextField fileInput; private Tooltip validationError = new Tooltip(); public AbstractFileSelectionBox() { @@ -57,16 +57,21 @@ public abstract class AbstractFileSelectionBox extends HBox { browse.disableProperty().bind(disableProperty()); } + public AbstractFileSelectionBox(String initialValue) { + this(); + fileInput.setText(initialValue); + } + private ChangeListener textListener() { return (obs, o, n) -> { String input = fileInput.getText(); File program = new File(input); - setProgram(program); + setFile(program); }; } - private void setProgram(File program) { - String msg = validate(program); + protected void setFile(File file) { + String msg = validate(file); if (msg != null) { fileInput.setBorder(new Border(new BorderStroke(Color.RED, BorderStrokeStyle.DASHED, new CornerRadii(2), new BorderWidths(2)))); validationError.setText(msg); @@ -78,7 +83,7 @@ public abstract class AbstractFileSelectionBox extends HBox { } else { fileInput.setBorder(Border.EMPTY); fileInput.setTooltip(null); - fileProperty.set(program); + fileProperty.set(file); validationError.hide(); } } @@ -94,21 +99,29 @@ public abstract class AbstractFileSelectionBox extends HBox { private Button createBrowseButton() { Button button = new Button("Select"); button.setOnAction((e) -> { - FileChooser chooser = new FileChooser(); - File program = chooser.showOpenDialog(null); - if(program != null) { - try { - fileInput.setText(program.getCanonicalPath()); - } catch (IOException e1) { - LOG.error("Couldn't determine path", e1); - Alert alert = new AutosizeAlert(Alert.AlertType.ERROR); - alert.setTitle("Whoopsie"); - alert.setContentText("Couldn't determine path"); - alert.showAndWait(); - } - setProgram(program); - } + choose(); }); return button; } + + protected void choose() { + FileChooser chooser = new FileChooser(); + File program = chooser.showOpenDialog(null); + if(program != null) { + try { + fileInput.setText(program.getCanonicalPath()); + } catch (IOException e1) { + LOG.error("Couldn't determine path", e1); + Alert alert = new AutosizeAlert(Alert.AlertType.ERROR); + alert.setTitle("Whoopsie"); + alert.setContentText("Couldn't determine path"); + alert.showAndWait(); + } + setFile(program); + } + } + + public ObjectProperty fileProperty() { + return fileProperty; + } } diff --git a/client/src/main/java/ctbrec/ui/controls/DirectorySelectionBox.java b/client/src/main/java/ctbrec/ui/controls/DirectorySelectionBox.java index cb0758b8..f3f1a5e5 100644 --- a/client/src/main/java/ctbrec/ui/controls/DirectorySelectionBox.java +++ b/client/src/main/java/ctbrec/ui/controls/DirectorySelectionBox.java @@ -2,7 +2,27 @@ package ctbrec.ui.controls; import java.io.File; +import javafx.stage.DirectoryChooser; + public class DirectorySelectionBox extends AbstractFileSelectionBox { + public DirectorySelectionBox(String dir) { + super(dir); + } + + @Override + protected void choose() { + DirectoryChooser chooser = new DirectoryChooser(); + File currentDir = fileProperty().get(); + if (currentDir.exists() && currentDir.isDirectory()) { + chooser.setInitialDirectory(currentDir); + } + File selectedDir = chooser.showDialog(null); + if(selectedDir != null) { + fileInput.setText(selectedDir.getAbsolutePath()); + setFile(selectedDir); + } + } + @Override protected String validate(File file) { String msg = super.validate(file); diff --git a/client/src/main/java/ctbrec/ui/controls/FileSelectionBox.java b/client/src/main/java/ctbrec/ui/controls/FileSelectionBox.java index 57b69cc5..c4f3dfe4 100644 --- a/client/src/main/java/ctbrec/ui/controls/FileSelectionBox.java +++ b/client/src/main/java/ctbrec/ui/controls/FileSelectionBox.java @@ -3,6 +3,13 @@ package ctbrec.ui.controls; import java.io.File; public class FileSelectionBox extends AbstractFileSelectionBox { + public FileSelectionBox() { + } + + public FileSelectionBox(String initialValue) { + super(initialValue); + } + @Override protected String validate(File file) { String msg = super.validate(file); diff --git a/client/src/main/java/ctbrec/ui/controls/ProgramSelectionBox.java b/client/src/main/java/ctbrec/ui/controls/ProgramSelectionBox.java index 23a2023f..1ed2b85e 100644 --- a/client/src/main/java/ctbrec/ui/controls/ProgramSelectionBox.java +++ b/client/src/main/java/ctbrec/ui/controls/ProgramSelectionBox.java @@ -3,6 +3,13 @@ package ctbrec.ui.controls; import java.io.File; public class ProgramSelectionBox extends FileSelectionBox { + public ProgramSelectionBox() { + } + + public ProgramSelectionBox(String initialValue) { + super(initialValue); + } + @Override protected String validate(File file) { String msg = super.validate(file);