From f99a7d2845cfbb1c907ce71d8ba2ce6b51c84737 Mon Sep 17 00:00:00 2001 From: duminil <duminil@2c044af0-2e85-064f-a0c3-7471430cffcd> Date: Mon, 18 May 2015 09:41:26 +0000 Subject: [PATCH] Cross-Platform JavaFX Region Chooser. --- .../regionchooser/RegionChooserFX.java | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/eu/simstadt/regionchooser/RegionChooserFX.java b/src/eu/simstadt/regionchooser/RegionChooserFX.java index fd8e2a7..4400d49 100644 --- a/src/eu/simstadt/regionchooser/RegionChooserFX.java +++ b/src/eu/simstadt/regionchooser/RegionChooserFX.java @@ -1,5 +1,7 @@ package eu.simstadt.regionchooser; +import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import javafx.application.Application; import javafx.beans.value.ObservableValue; @@ -36,8 +38,14 @@ public static void main(String[] args) { class Browser extends Region { - public class JavaApp + public class JavaScriptFXBridge { + private Path repo; + + public JavaScriptFXBridge() { + repo = Paths.get("../TestRepository"); + } + public void downloadRegion(String wktPolygon) { System.out.println("FROM JAVA : DO SOMETHING with " + wktPolygon); } @@ -47,8 +55,14 @@ public void downloadRegionFromCityGML(String wktPolygon, String citygmlDescripti } public boolean checkIfCityGMLSAreAvailable(String citygmlDescription) { - //TODO: IMPLEMENT ME - return true; + boolean available = false; + String[] projectAndCityGML = citygmlDescription.split(">"); + if (projectAndCityGML.length == 2) { + String project = projectAndCityGML[0]; + String citygml = projectAndCityGML[1]; + available = Files.isReadable(repo.resolve(project + ".simstadt").resolve(citygml)); + } + return available; } } @@ -59,15 +73,14 @@ public Browser() { //apply the styles getStyleClass().add("browser"); // load the web page - String url = "file://" + Paths.get("../RegionChooser/website/index.html").toAbsolutePath().toString(); + String url = Paths.get("../RegionChooser/website/index.html").toUri().toString(); webEngine.load(url); // process page loading webEngine.getLoadWorker().stateProperty().addListener( - (ObservableValue<? extends State> ov, State oldState, - State newState) -> { + (ObservableValue<? extends State> ov, State oldState, State newState) -> { if (newState == State.SUCCEEDED) { JSObject win = (JSObject) webEngine.executeScript("window"); - win.setMember("fxapp", new JavaApp()); + win.setMember("fxapp", new JavaScriptFXBridge()); } }); //add the web view to the scene -- GitLab