diff --git a/src/eu/simstadt/regionchooser/RegionChooser.fxml b/src/eu/simstadt/regionchooser/RegionChooser.fxml index 59304cfdc54cf7304daef2e7a800ad682aa3af04..2e4f3e6a188b8084092c46e184b1343ba5418ba2 100644 --- a/src/eu/simstadt/regionchooser/RegionChooser.fxml +++ b/src/eu/simstadt/regionchooser/RegionChooser.fxml @@ -1,14 +1,24 @@ <?xml version="1.0" encoding="UTF-8"?> -<?import javafx.scene.layout.AnchorPane?> -<?import javafx.scene.layout.VBox?> +<?import javafx.scene.control.*?> +<?import java.lang.*?> +<?import javafx.scene.layout.*?> <?import com.lynden.gmapsfx.GoogleMapView?> -<AnchorPane id="AnchorPane" fx:controller="eu.simstadt.regionchooser.RegionChooserController" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <GoogleMapView fx:id="mapView" prefHeight="750.0" prefWidth="750.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"/> - <VBox alignment="TOP_CENTER" fillWidth="false" layoutX="26.0" layoutY="29.0" prefHeight="478.0" prefWidth="221.0" spacing="10.0" styleClass="panel-background" stylesheets="@../styles/Styles.css" - AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="26.0" AnchorPane.topAnchor="88.0"> - </VBox> - </children> -</AnchorPane> + + + + +<BorderPane fx:controller="eu.simstadt.regionchooser.RegionChooserController" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> + <center> + <GoogleMapView fx:id="mapView" prefHeight="750.0" prefWidth="750.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"/> + </center> + <bottom> + <HBox BorderPane.alignment="CENTER"> + <children> + <Button mnemonicParsing="false" onAction="#generateExportJob" text="Generate Export Job" /> + <TextArea fx:id="outputTA" wrapText="true" /> + </children> + </HBox> + </bottom> +</BorderPane> diff --git a/src/eu/simstadt/regionchooser/RegionChooserController.java b/src/eu/simstadt/regionchooser/RegionChooserController.java index 3cf8c2b96e1f2f6583a3fe981cb11edbb0b47305..7b2b86a24fe05da4fc99b149ee96cdc9831150f7 100644 --- a/src/eu/simstadt/regionchooser/RegionChooserController.java +++ b/src/eu/simstadt/regionchooser/RegionChooserController.java @@ -2,10 +2,11 @@ import java.util.Arrays; import java.util.List; - +import javafx.concurrent.Service; +import javafx.concurrent.Task; +import javafx.event.ActionEvent; import javafx.fxml.FXML; -import javafx.scene.control.Button; - +import javafx.scene.control.TextArea; import com.lynden.gmapsfx.GoogleMapView; import com.lynden.gmapsfx.MapComponentInitializedListener; import com.lynden.gmapsfx.javascript.object.GoogleMap; @@ -16,14 +17,16 @@ import com.lynden.gmapsfx.javascript.object.MapTypeIdEnum; import com.lynden.gmapsfx.javascript.object.Marker; import com.lynden.gmapsfx.javascript.object.MarkerOptions; - import eu.simstadt.nf.Coord; import eu.simstadt.nf.NFJobBuilder; -public class RegionChooserController implements MapComponentInitializedListener { - + +public class RegionChooserController implements MapComponentInitializedListener +{ + List<Coord> regionPolygon; + @FXML - private Button button; + private TextArea outputTA; @FXML private GoogleMapView mapView; @@ -42,18 +45,17 @@ public void mapInitialized() { LatLong stuttgartLoc = new LatLong(48.878323, 9.216613); LatLong dresdenLoc = new LatLong(48.879402, 9.216532); - //Set the initial properties of the map. MapOptions mapOptions = new MapOptions(); mapOptions.center(new LatLong(51.3, 11.0)) .mapType(MapTypeIdEnum.ROADMAP) - .overviewMapControl(false) + .overviewMapControl(true) .panControl(false) .rotateControl(false) .scaleControl(false) .streetViewControl(false) - .zoomControl(false) + .zoomControl(true) .zoom(7); map = mapView.createMap(mapOptions); @@ -86,15 +88,32 @@ public void mapInitialized() { InfoWindow bochumInfoWindow = new InfoWindow(infoWindowOptions); bochumInfoWindow.open(map, bochumMarker); - - // Build the nF export job description from a region polygon - List<Coord> regionPolygon = Arrays.asList( + + regionPolygon = Arrays.asList( new Coord(bochumLoc.getLatitude(), bochumLoc.getLongitude()), new Coord(hamburgLoc.getLatitude(), bochumLoc.getLongitude()), new Coord(stuttgartLoc.getLatitude(), bochumLoc.getLongitude()), new Coord(dresdenLoc.getLatitude(), bochumLoc.getLongitude()) - ); - String exportJobDescription = NFJobBuilder.buildExportJob(regionPolygon); - System.out.println(exportJobDescription); + ); + } + + // Build the nF export job description from a region polygon + @FXML + void generateExportJob(ActionEvent event) { + Service<String> exportRunner = new Service<String>() { + @Override + protected Task<String> createTask() { + return new Task<String>() { + @Override + protected String call() throws Exception { + return NFJobBuilder.buildExportJob(regionPolygon); + } + }; + } + }; + exportRunner.setOnSucceeded(state -> { + outputTA.setText(exportRunner.getValue()); + }); + exportRunner.start(); } } \ No newline at end of file diff --git a/src/eu/simstadt/regionchooser/RegionChooserMain.java b/src/eu/simstadt/regionchooser/RegionChooserMain.java index 1fea2b9f28d121cfd7f40ee282b75470db90ebf3..524e7e0253d15ebdf684dbeff54974b8da67e45b 100644 --- a/src/eu/simstadt/regionchooser/RegionChooserMain.java +++ b/src/eu/simstadt/regionchooser/RegionChooserMain.java @@ -3,7 +3,7 @@ import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; -import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.BorderPane; import javafx.stage.Stage; @@ -12,7 +12,7 @@ public class RegionChooserMain extends Application @Override public void start(Stage primaryStage) { try { - AnchorPane root = (AnchorPane) FXMLLoader.load(getClass().getResource("RegionChooser.fxml")); + BorderPane root = (BorderPane) FXMLLoader.load(getClass().getResource("RegionChooser.fxml")); Scene scene = new Scene(root, 750, 750); scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); primaryStage.setScene(scene);