diff --git a/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java b/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java index 0e9d8ef6ab14993c8e21f36264ffbce6d8834939..006ddf2b11825cf88d4f6510c5452fbf76cdaa4b 100644 --- a/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java +++ b/src/main/java/eu/simstadt/regionchooser/RegionChooserBrowser.java @@ -22,6 +22,7 @@ import javafx.scene.layout.Region; import javafx.scene.web.WebEngine; import javafx.scene.web.WebView; +import javafx.stage.DirectoryChooser; import javafx.stage.FileChooser; import javafx.stage.Stage; import netscape.javascript.JSObject; @@ -30,6 +31,7 @@ public class RegionChooserBrowser extends Region { private static final Logger LOGGER = Logger.getLogger(RegionChooserBrowser.class.getName()); + private static final String PREF_RECENT_REPOSITORY = "RECENT_REPOSITORY"; private static final int BUFFER = 1024; /** @@ -41,7 +43,7 @@ public class RegionChooserBrowser extends Region public JavaScriptFXBridge() { Preferences userPrefs = Preferences.userRoot().node("/eu/simstadt/desktop"); - String repoString = userPrefs.get("RECENT_REPOSITORY", "../TestRepository"); + String repoString = userPrefs.get(PREF_RECENT_REPOSITORY, "../TestRepository"); repo = Paths.get(repoString); } @@ -63,7 +65,10 @@ public Void call() throws IOException { } }; - task.setOnRunning(e -> jsApp.call("display", "Importing citgyml. Please wait.")); + task.setOnRunning(e -> { + jsApp.call("display", "Importing citgyml. Please wait."); + jsApp.call("init"); + }); task.setOnSucceeded(e -> jsApp.call("ready")); @@ -91,6 +96,26 @@ public void downloadRegionFromCityGMLs(String wktPolygon, String project, String } } + public void selectRepository() { + Preferences userPrefs = Preferences.userRoot().node("/eu/simstadt/desktop"); + String currentRepo = userPrefs.get(PREF_RECENT_REPOSITORY, "../TestRepository"); + + DirectoryChooser fileChooser = new DirectoryChooser(); + Stage mainStage = (Stage) RegionChooserBrowser.this.getScene().getWindow(); + fileChooser.setTitle("Select Repository"); + fileChooser.setInitialDirectory(new File(currentRepo)); + File repoLocation = fileChooser.showDialog(mainStage); + + if (repoLocation != null) { + repo = repoLocation.toPath(); + userPrefs.put(PREF_RECENT_REPOSITORY, repo.toAbsolutePath().toString()); + LOGGER.info("Repository was set to " + repo); + refreshHulls(); + } else { + LOGGER.warning("No repository chosen."); + } + } + private File selectSaveFileWithDialog(String project, String citygml, String suffix) { Stage mainStage = (Stage) RegionChooserBrowser.this.getScene().getWindow(); FileChooser fileChooser = new FileChooser(); diff --git a/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js b/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js index dfbd58aa72933709983ce8adde0fe3335c5a9ad8..a1d671c48be2f2785277078e8ca821a9f20ef3b0 100644 --- a/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js +++ b/src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js @@ -4,7 +4,13 @@ var regionChooser = (function(){ //NOTE: Could do without jQuery var dataPanel = $('#dataPanel'); var wgs84Sphere = new ol.Sphere(6378137); - var gmlId = 0; + var gmlId; + + publicScope.init = function(){ + //NOTE: Only called from JavaFX. At startup, or when Repo has been changed. + gmlId = 0; + kml_source.clear(); + } if (fromJavaFX){ $("html").addClass("wait"); @@ -248,7 +254,7 @@ var regionChooser = (function(){ fxapp.downloadRegionFromCityGMLs(sketchAsWKT(srsName), project, citygmlNames.join(";"), srsName); dataPanel.append("<h2 class='ok'>Done!</h2><br/>\n"); } catch (e) { - console.log("ERROR : " + e); + console.warning("ERROR : " + e); dataPanel.append("<h2 class='error'>Some problem occured!</h2><br/>\n"); } var end = new Date().getTime(); @@ -382,7 +388,8 @@ var regionChooser = (function(){ } publicScope.selectRepository = function() { - console.log("Should probably do something"); + console.log("Should probably do select repository."); + fxapp.selectRepository(); } focusOnMap();