From 49c7465f072ba075d27731a9579ef2e8209649f1 Mon Sep 17 00:00:00 2001 From: Mateusz Kowalczyk Date: Sun, 5 Jan 2020 15:32:01 +0100 Subject: [PATCH] Add choosing directory --- .../ffm/app/WorkspaceService.java | 17 ++++++++++++++++ .../mateuszkowalczyk/ffm/data/Chooser.java | 20 +++++++++++++++++++ .../ffm/utils/PropertiesLoader.java | 14 +++++++++++++ .../ffm/view/StageController.java | 11 +++++++--- .../controller/WelcomePageController.java | 4 +++- 5 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 src/main/java/dev/mateuszkowalczyk/ffm/app/WorkspaceService.java create mode 100644 src/main/java/dev/mateuszkowalczyk/ffm/data/Chooser.java diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/app/WorkspaceService.java b/src/main/java/dev/mateuszkowalczyk/ffm/app/WorkspaceService.java new file mode 100644 index 0000000..b730a48 --- /dev/null +++ b/src/main/java/dev/mateuszkowalczyk/ffm/app/WorkspaceService.java @@ -0,0 +1,17 @@ +package dev.mateuszkowalczyk.ffm.app; + +import dev.mateuszkowalczyk.ffm.data.Chooser; +import dev.mateuszkowalczyk.ffm.utils.PropertiesLoader; +import dev.mateuszkowalczyk.ffm.utils.Property; + +import java.util.Properties; + +public class WorkspaceService { + private PropertiesLoader propertiesLoader = new PropertiesLoader(); + + public void setupWorkspace() { + Chooser chooser = new Chooser(); + String path = chooser.chooseDirectory(); + this.propertiesLoader.set(Property.PATH_TO_DIRECTORY, path); + } +} diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/data/Chooser.java b/src/main/java/dev/mateuszkowalczyk/ffm/data/Chooser.java new file mode 100644 index 0000000..1cbdcca --- /dev/null +++ b/src/main/java/dev/mateuszkowalczyk/ffm/data/Chooser.java @@ -0,0 +1,20 @@ +package dev.mateuszkowalczyk.ffm.data; + +import dev.mateuszkowalczyk.ffm.view.StageController; +import javafx.stage.DirectoryChooser; +import javafx.stage.Stage; + +import java.io.File; + +public class Chooser { + private StageController stageController = StageController.getInstance(); + + public String chooseDirectory() { + DirectoryChooser directoryChooser = new DirectoryChooser(); + + Stage stage = this.stageController.getStage(); + File selectedDirectory = directoryChooser.showDialog(stage); + + return selectedDirectory.getAbsolutePath(); + } +} diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/utils/PropertiesLoader.java b/src/main/java/dev/mateuszkowalczyk/ffm/utils/PropertiesLoader.java index 91d41de..ba184ee 100644 --- a/src/main/java/dev/mateuszkowalczyk/ffm/utils/PropertiesLoader.java +++ b/src/main/java/dev/mateuszkowalczyk/ffm/utils/PropertiesLoader.java @@ -32,6 +32,10 @@ public class PropertiesLoader { return this.properties; } + public void save() { + this.save(this.properties); + } + public void save(Properties prop) { try { OutputStream output = new FileOutputStream(this.resourceLoader.getPath(CONFIG_NAME_FILE)); @@ -51,4 +55,14 @@ public class PropertiesLoader { return this.properties.getProperty(name); } + + public void set(String name, String value) { + if (this.properties == null) { + this.load(); + } + + this.properties.setProperty(name, value); + + this.save(); + } } diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/view/StageController.java b/src/main/java/dev/mateuszkowalczyk/ffm/view/StageController.java index 291cb83..80740e0 100644 --- a/src/main/java/dev/mateuszkowalczyk/ffm/view/StageController.java +++ b/src/main/java/dev/mateuszkowalczyk/ffm/view/StageController.java @@ -1,7 +1,7 @@ package dev.mateuszkowalczyk.ffm.view; -import dev.mateuszkowalczyk.ffm.utils.Property; import dev.mateuszkowalczyk.ffm.utils.PropertiesLoader; +import dev.mateuszkowalczyk.ffm.utils.Property; import dev.mateuszkowalczyk.ffm.utils.ResourceLoader; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; @@ -16,17 +16,22 @@ public class StageController { private PropertiesLoader propertiesLoader = PropertiesLoader.getInstance(); private Stage stage; - private StageController() {} + private StageController() { + } public static StageController getInstance() { return instance; } + public Stage getStage() { + return stage; + } + public void initApp(Stage stage) throws IOException { this.stage = stage; this.stage.setTitle("Friend Face Matcher"); - URL sceneUrl = null; + URL sceneUrl; if (this.propertiesLoader.get(Property.PATH_TO_DIRECTORY) != null) { sceneUrl = this.resourceLoader.getResource("welcomePage.fxml"); } else { diff --git a/src/main/java/dev/mateuszkowalczyk/ffm/view/controller/WelcomePageController.java b/src/main/java/dev/mateuszkowalczyk/ffm/view/controller/WelcomePageController.java index c36b0dc..48faa5f 100644 --- a/src/main/java/dev/mateuszkowalczyk/ffm/view/controller/WelcomePageController.java +++ b/src/main/java/dev/mateuszkowalczyk/ffm/view/controller/WelcomePageController.java @@ -1,5 +1,6 @@ package dev.mateuszkowalczyk.ffm.view.controller; +import dev.mateuszkowalczyk.ffm.app.WorkspaceService; import javafx.fxml.FXML; public class WelcomePageController { @@ -9,6 +10,7 @@ public class WelcomePageController { @FXML public void startNewApp(){ - System.out.println("Button work");; + var workspaceService = new WorkspaceService(); + workspaceService.setupWorkspace(); } }