diff --git a/src/main/java/seng202/group9/Controller/SceneCode.java b/src/main/java/seng202/group9/Controller/SceneCode.java index 205465d..e13e196 100644 --- a/src/main/java/seng202/group9/Controller/SceneCode.java +++ b/src/main/java/seng202/group9/Controller/SceneCode.java @@ -13,7 +13,8 @@ public enum SceneCode { AIRPORT_ADD("airport_add_form.fxml"), AIRPORT_FILTER("airport_filter_form.fxml"), ROUTE_ADD("route_add_form.fxml"), ROUTE_FILTER("route_filter_form.fxml"), AIRLINE_EDIT("airline_edit_form.fxml"), AIRPORT_EDIT("airport_edit_form.fxml"), ROUTE_EDIT("route_edit_form.fxml"), FLIGHT_EDITOR("flight_editor_form.fxml"), DATASET_CONTROLLER("dataset_editor.fxml"), HELP("help.fxml"), - FLIGHT_ADD("flight_add_form.fxml"), ROUTE_BY_AIRPORT("airport_map_routes.fxml"), ROUTE_BY_EQUIP("route_by_equip.fxml"); + FLIGHT_ADD("flight_add_form.fxml"), ROUTE_BY_AIRPORT("airport_map_routes.fxml"), ROUTE_BY_EQUIP("route_by_equip.fxml"), + POP_UP_AIRPORT_MAP("pop_up_airport_map.fxml"), POP_UP_ROUTE_MAP("pop_up_route_map.fxml"); private String filePath; diff --git a/src/main/java/seng202/group9/GUI/AirportRDController.java b/src/main/java/seng202/group9/GUI/AirportRDController.java index e53392c..45ba396 100644 --- a/src/main/java/seng202/group9/GUI/AirportRDController.java +++ b/src/main/java/seng202/group9/GUI/AirportRDController.java @@ -5,6 +5,7 @@ import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; +import javafx.stage.Stage; import seng202.group9.Controller.Dataset; import seng202.group9.Controller.SceneCode; import seng202.group9.Controller.Session; @@ -142,6 +143,6 @@ public class AirportRDController extends Controller{ * Opens a map with the data currently being displayed in the table. */ public void openMap() { - + createPopUpStage(SceneCode.POP_UP_AIRPORT_MAP, 600, 400); } } diff --git a/src/main/java/seng202/group9/GUI/PopUpMapController.java b/src/main/java/seng202/group9/GUI/PopUpAirportMapController.java similarity index 59% rename from src/main/java/seng202/group9/GUI/PopUpMapController.java rename to src/main/java/seng202/group9/GUI/PopUpAirportMapController.java index 318e621..57857fd 100644 --- a/src/main/java/seng202/group9/GUI/PopUpMapController.java +++ b/src/main/java/seng202/group9/GUI/PopUpAirportMapController.java @@ -3,6 +3,7 @@ package seng202.group9.GUI; import javafx.fxml.FXML; import javafx.scene.control.TableView; import javafx.scene.web.WebView; +import seng202.group9.Controller.Dataset; import seng202.group9.Core.Airport; import seng202.group9.Core.Position; import seng202.group9.Core.Route; @@ -10,26 +11,30 @@ import seng202.group9.Core.RoutePath; import seng202.group9.Map.Map; import java.util.ArrayList; +import java.util.HashMap; /** * Created by fwy13 on 2/10/16. */ -public class PopUpMapController extends Controller { +public class PopUpAirportMapController extends Controller { @FXML WebView mapView; + Dataset dataset; Map map; @Override public void load() { - map = new Map(mapView, new RoutePath()); + dataset = getParent().getCurrentDataset(); + loadAirports(); } - public void loadAirports(ArrayList airports){ + public void loadAirports(){ ArrayList routePaths = new ArrayList<>(); - for (Airport airport: airports){ - routePaths.add(airport.getRoutePath()); + HashMap airports = getParent().getSession().getFilteredAirports(); + for (int i = 0; i < airports.size(); i ++){ + routePaths.add(dataset.getAirportDictionary().get(airports.get(i)).getRoutePath()); } - map.displayAirports(routePaths); + map = new Map(mapView, routePaths, Map.loadAirports); } public void loadRoutes(ArrayList routes){ diff --git a/src/main/java/seng202/group9/GUI/PopUpRouteMapController.java b/src/main/java/seng202/group9/GUI/PopUpRouteMapController.java new file mode 100644 index 0000000..1a5cc6e --- /dev/null +++ b/src/main/java/seng202/group9/GUI/PopUpRouteMapController.java @@ -0,0 +1,36 @@ +package seng202.group9.GUI; + +import javafx.fxml.FXML; +import javafx.scene.web.WebView; +import seng202.group9.Controller.Dataset; +import seng202.group9.Core.Route; +import seng202.group9.Core.RoutePath; +import seng202.group9.Map.Map; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * Created by fwy13 on 2/10/16. + */ +public class PopUpRouteMapController extends Controller{ + @FXML + WebView mapView; + Dataset dataset; + Map map; + + @Override + public void load() { + dataset = getParent().getCurrentDataset(); + loadRoutes(); + } + + public void loadRoutes(){ + ArrayList routePaths = new ArrayList<>(); + HashMap routes = getParent().getSession().getFilteredRoutes(); + for (int i = 0; i < routes.size(); i ++){ + routePaths.add(dataset.getRouteDictionary().get(routes.get(i)).getRoutePath()); + } + map = new Map(mapView, routePaths, Map.loadRoutes); + } +} diff --git a/src/main/java/seng202/group9/GUI/RouteRDController.java b/src/main/java/seng202/group9/GUI/RouteRDController.java index 3a2e64b..fa109bb 100644 --- a/src/main/java/seng202/group9/GUI/RouteRDController.java +++ b/src/main/java/seng202/group9/GUI/RouteRDController.java @@ -143,6 +143,6 @@ public class RouteRDController extends Controller { * Opens a map with the data currently being displayed in the table. */ public void openMap(){ - + createPopUpStage(SceneCode.POP_UP_ROUTE_MAP, 600, 400); } } diff --git a/src/main/java/seng202/group9/Map/Map.java b/src/main/java/seng202/group9/Map/Map.java index d14414c..2b8b73b 100644 --- a/src/main/java/seng202/group9/Map/Map.java +++ b/src/main/java/seng202/group9/Map/Map.java @@ -21,6 +21,8 @@ public class Map { private WebEngine webEngine; private WebView webView; private boolean canLoad = false; + public static int loadAirports = 0; + public static int loadRoutes = 1; public Map(WebView webView, final RoutePath newRoute){ this.webView = webView; @@ -36,6 +38,24 @@ public class Map { }); } + public Map(WebView webView, final ArrayList newRoute, int type){ + this.webView = webView; + webEngine = webView.getEngine(); + initMap(); + webEngine.getLoadWorker().stateProperty().addListener( + new ChangeListener() { + public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) { + if (newState == Worker.State.SUCCEEDED){ + if (loadAirports == type) { + displayAirports(newRoute); + }else if (loadRoutes == type){ + displayRoutes(newRoute); + } + } + } + }); + } + public Map(WebView webView, final RoutePath newRoute, TableView table){ this.webView = webView; webEngine = webView.getEngine(); @@ -87,15 +107,15 @@ public class Map { airportJSONArray += airport.toJSONArray() + ", "; if (counter++ > 49){ Alert alert = new Alert(Alert.AlertType.WARNING); - alert.setTitle("Too Many Routes"); - alert.setHeaderText("Too Many Routes to display"); - alert.setContentText("As there are too many routes to display only the first\n50 will be displayed."); + alert.setTitle("Too Many Airports"); + alert.setHeaderText("Too Many Airports to display"); + alert.setContentText("As there are too many Airports to display only the first\n50 will be displayed."); alert.showAndWait(); break; } } airportJSONArray += "]"; - webEngine.executeScript("displayRoutes("+airportJSONArray+");"); + webEngine.executeScript("displayAirports("+airportJSONArray+");"); } public void displayRoutes(ArrayList routes){ diff --git a/src/main/resources/map.html b/src/main/resources/map.html index e579638..dc2400b 100644 --- a/src/main/resources/map.html +++ b/src/main/resources/map.html @@ -56,12 +56,12 @@ }); for (var i = 0; i < positions.length; i ++) { new google.maps.Marker({ - position: positions[i], + position: positions[i][0], map: map, title: '\u0048\u0061\u0072\u0061\u006d\u0062\u0065' }); } - repositionMap(positions); + repositionMapToMulti(positions); } function displayRoute(flightPath) { diff --git a/src/main/resources/pop_up_map.fxml b/src/main/resources/pop_up_airport_map.fxml similarity index 90% rename from src/main/resources/pop_up_map.fxml rename to src/main/resources/pop_up_airport_map.fxml index 6f44ec9..52e76b2 100644 --- a/src/main/resources/pop_up_map.fxml +++ b/src/main/resources/pop_up_airport_map.fxml @@ -4,7 +4,7 @@ - + diff --git a/src/main/resources/pop_up_route_map.fxml b/src/main/resources/pop_up_route_map.fxml new file mode 100644 index 0000000..1af3b4c --- /dev/null +++ b/src/main/resources/pop_up_route_map.fxml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + +