Implemented the Summary information on the flight data summary page

This commit is contained in:
Liam Beckett
2016-09-30 13:05:54 +13:00
parent 79b73f845e
commit eae3c34be2
4 changed files with 96 additions and 15 deletions
@@ -69,7 +69,6 @@ public class FlightEditorController extends Controller{
stage.close();
} catch ( Exception e ) {
e.printStackTrace();
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Flight Data Error");
alert.setHeaderText("Error editing a flight point.");
@@ -13,8 +13,10 @@ import javafx.scene.control.ListView;
import javafx.scene.input.MouseEvent;
import javafx.scene.web.WebView;
import seng202.group9.Controller.App;
import seng202.group9.Controller.DataException;
import seng202.group9.Controller.Dataset;
import seng202.group9.Controller.SceneCode;
import seng202.group9.Core.Airport;
import seng202.group9.Core.FlightPath;
import seng202.group9.Core.RoutePath;
import seng202.group9.Map.Map;
@@ -22,6 +24,7 @@ import seng202.group9.Core.FlightPoint;
import java.net.URL;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.ResourceBundle;
/**
@@ -31,9 +34,8 @@ import java.util.ResourceBundle;
public class FlightSummaryController extends Controller {
private Dataset theDataSet = null;
private int currentPathId = 0;
private int currentPathIndex = 0;
private int currentPathIndex = 0;
@FXML
private Button flightRawData;
@@ -43,6 +45,9 @@ public class FlightSummaryController extends Controller {
@FXML
ListView<String> flightPathListView;
final ObservableList<String> flightList = FXCollections.observableArrayList();
@FXML
ListView<String> flightSummaryListView;
final ObservableList<String> infoList = FXCollections.observableArrayList();
/**
* Changes to the Flight Raw Data Scene when the Raw Data Button is clicked.
@@ -54,7 +59,9 @@ public class FlightSummaryController extends Controller {
/**
* Changes to the Airport Summary Scene when the Airport is clicked.
*/
public void airportSummaryButton() { replaceSceneContent(SceneCode.AIRPORT_SUMMARY); }
public void airportSummaryButton() {
replaceSceneContent(SceneCode.AIRPORT_SUMMARY);
}
/**
* Changes to the Route Summary Scene when the Route Button is clicked.
@@ -70,6 +77,69 @@ public class FlightSummaryController extends Controller {
replaceSceneContent(SceneCode.AIRLINE_SUMMARY);
}
public void flightSummaryListView() {
try {
currentPathId = theDataSet.getFlightPaths().get(0).getID(); //Sets the default to the 1st Path
FlightPath currentPath = theDataSet.getFlightPathDictionary().get(currentPathId);
ArrayList<FlightPoint> flightPoints = currentPath.getFlightPoints();
FlightPoint firstPoint = flightPoints.get(0);
String firstPointICAO = firstPoint.getName();
FlightPoint lastPoint = flightPoints.get(flightPoints.size()-1);
String lastPointICAO = lastPoint.getName();
ArrayList<Airport> airportList = theDataSet.getAirports();
Airport sourceAirport = null;
Airport destinationAirport = null;
System.out.println(firstPointICAO);
System.out.println(lastPointICAO);
for (int i=0; i < airportList.size(); i++){
Airport current = airportList.get(i);
System.out.println(current.getICAO());
if(current.getICAO().equals(firstPointICAO)){
sourceAirport = current;
}
if(current.getICAO().equals(lastPointICAO)){
destinationAirport = current;
}
}
String source = "Not Available";
String destination = "Not Available";
double distance = 0.0;
if(sourceAirport != null){
source = sourceAirport.getName();
}
if(destinationAirport != null){
destination = destinationAirport.getName();
}
if(destination != "Not Available" && source != "Not Available"){
distance = sourceAirport.calculateDistance(destinationAirport);
}
infoList.add(" Flight Path Summary Information");
infoList.add("");
infoList.add("Total Distance of Flight:");
infoList.add(Double.toString(distance));
infoList.add("Source Airport:");
infoList.add(source);
infoList.add("Destination Airport:");
infoList.add(destination);
if(sourceAirport == null || destinationAirport == null){
infoList.add("");
infoList.add("Missing Data is due to first or last points");
infoList.add("ICAO codes not being present in the Airline");
infoList.add("Database!");
}
flightSummaryListView.setItems(infoList);
} catch(Exception e) {
e.printStackTrace();
}
}
/**
* Loads the Flight paths into the List View and waits for a mouse clicked event for which it will update the table
* to display the selected Flight paths points. Called from the MenuController.
@@ -85,6 +155,17 @@ public class FlightSummaryController extends Controller {
String flightPathDisplayName = Integer.toString(pathID) + "_" + pathSource + "_" + pathDestin;
flightList.add(flightPathDisplayName);
}
flightPathListView.setOnMouseClicked(new EventHandler<MouseEvent>() {
public void handle(MouseEvent event) {
String flightPathDisplayNameClicked = flightPathListView.getSelectionModel().getSelectedItem();
String[] segments = flightPathDisplayNameClicked.split("_");
String pathIdClicked = segments[0];
currentPathIndex = theDataSet.getFlightPaths().indexOf(theDataSet.getFlightPathDictionary()
.get(Integer.parseInt(pathIdClicked)));
currentPathId = Integer.parseInt(pathIdClicked);
}
});
flightPathListView.setItems(flightList);
} catch (Exception e) {
e.printStackTrace();
@@ -96,7 +177,7 @@ public class FlightSummaryController extends Controller {
public void load() {
try {
theDataSet = getParent().getCurrentDataset();
ArrayList<FlightPath> flightPaths = new ArrayList();
ArrayList<FlightPath> flightPaths;
flightPaths = theDataSet.getFlightPaths();
for(int i = 0; i<flightPaths.size(); i++ ){
int pathID = flightPaths.get(i).getID();
@@ -106,6 +187,7 @@ public class FlightSummaryController extends Controller {
flightList.add(flightPathDisplayName);
}
flightPathListView.setItems(flightList);
flightSummaryListView();
} catch (Exception e) {
e.printStackTrace();