You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
5.1 KiB
155 lines
5.1 KiB
package controllers;
|
|
|
|
import controllers.BaseController;
|
|
import controllers.Controller;
|
|
import javafx.application.Application;
|
|
import javafx.application.Platform;
|
|
import javafx.collections.FXCollections;
|
|
import javafx.collections.ObservableList;
|
|
import javafx.fxml.FXMLLoader;
|
|
import javafx.fxml.Initializable;
|
|
import javafx.scene.Parent;
|
|
import javafx.scene.Scene;
|
|
|
|
import javafx.stage.Stage;
|
|
import model.*;
|
|
import utils.DataManagerSerialiser;
|
|
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
|
|
|
|
/**
|
|
* Created by samschofield on 7/03/17.
|
|
*/
|
|
public class Main extends Application {
|
|
|
|
private Stage primaryStage;
|
|
private Parent base;
|
|
private BaseController baseController;
|
|
private Session session;
|
|
private Scene scene = null;
|
|
|
|
public void start(Stage stage) throws Exception {
|
|
this.primaryStage = stage;
|
|
replaceSceneContent(SceneCode.MAIN);
|
|
|
|
//load up base pane
|
|
FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource("scenes/base.fxml"));
|
|
Parent root = loader.load();
|
|
base = root;
|
|
baseController = (BaseController) loader.getController();
|
|
baseController.setParent(this);
|
|
this.session = Session.session;
|
|
try{
|
|
DataManagerSerialiser dataManagerSerialiser = new DataManagerSerialiser();
|
|
DataManager dataManager = dataManagerSerialiser.load();
|
|
this.session.setDataManager(dataManager);
|
|
} catch (Exception e){
|
|
//this exception is for when the files is formatted wrong.
|
|
this.session.setDataManager(new DataManager());
|
|
Ride ride = new Ride("Nissan March", "Baby Blue", "EPU001", 2004, 5);
|
|
|
|
Stop stop1 = new Stop("1 Avonhead Road");
|
|
Stop stop2 = new Stop("100 Yaldhurst Road");
|
|
Stop stop3 = new Stop("120 Maidstone Road");
|
|
Stop stop4 = new Stop("1 University Drive");
|
|
Stop stop5 = new Stop("1 Homestead Lane");
|
|
|
|
ObservableList<Stop> routeList1 = FXCollections.observableArrayList();
|
|
routeList1.add(stop1);
|
|
routeList1.add(stop4);
|
|
Route route1 = new Route("Home to University", routeList1);
|
|
|
|
ObservableList<Stop> routeList2 = FXCollections.observableArrayList();
|
|
routeList2.addAll(stop2, stop3, stop5);
|
|
Route route2 = new Route("Friends Route", routeList2);
|
|
|
|
boolean[] days = {false, true, true, false, true, false , false};
|
|
|
|
TripStop tripStop1 = new TripStop("1 Avonhead Road", "9:00");
|
|
TripStop tripStop4 = new TripStop("1 University Drive", "9:15");
|
|
ObservableList<TripStop> tripStops = FXCollections.observableArrayList();
|
|
tripStops.addAll(tripStop1, tripStop4);
|
|
|
|
Trip trip = new Trip("Home to Uni", tripStops, "University", ride, days, true, "30-12-2017");
|
|
|
|
this.session.getDataManager().addRides(ride);
|
|
|
|
this.session.getDataManager().addStop(stop1);
|
|
this.session.getDataManager().addStop(stop2);
|
|
this.session.getDataManager().addStop(stop3);
|
|
this.session.getDataManager().addStop(stop4);
|
|
this.session.getDataManager().addStop(stop5);
|
|
|
|
this.session.getDataManager().addRoute(route1);
|
|
this.session.getDataManager().addRoute(route2);
|
|
|
|
this.session.getDataManager().addTrip(trip);
|
|
}
|
|
|
|
//set up stage
|
|
stage.setTitle("UC RSS");
|
|
stage.setMinHeight(400);
|
|
stage.setMinWidth(600);
|
|
stage.show();
|
|
|
|
stage.setOnCloseRequest(e -> {
|
|
DataManagerSerialiser dataManagerSerialiser = new DataManagerSerialiser();
|
|
dataManagerSerialiser.serialise(session.getDataManager());
|
|
Platform.exit();
|
|
});
|
|
|
|
}
|
|
|
|
/**
|
|
* Replace Scene Content with fxml file code from oracle.
|
|
* @param fxml
|
|
* @return
|
|
* @throws Exception
|
|
*/
|
|
public Controller replaceSceneContent(SceneCode fxml) throws Exception {
|
|
FXMLLoader loader = new FXMLLoader();
|
|
InputStream in = getClass().getClassLoader().getResourceAsStream(fxml.getPath());
|
|
Parent page;
|
|
try {
|
|
page = (Parent) loader.load(in);
|
|
} finally {
|
|
in.close();
|
|
}
|
|
if (fxml.isLoadMenu()){
|
|
if (scene == null){
|
|
scene = new Scene(base, SceneCode.prefWidth, SceneCode.prefHeight);
|
|
}else{
|
|
scene.setRoot(base);
|
|
}
|
|
baseController.setContent(page);
|
|
}else {
|
|
if (scene == null) {
|
|
scene = new Scene(page, SceneCode.prefWidth, SceneCode.prefHeight);
|
|
}else{
|
|
scene.setRoot(page);
|
|
}
|
|
}
|
|
primaryStage.setScene(scene);
|
|
Controller controller = loader.getController();
|
|
if (controller != null) {
|
|
controller.setParent(this);
|
|
controller.runLater();
|
|
}
|
|
return controller;
|
|
}
|
|
|
|
public Session getSession() {
|
|
return session;
|
|
}
|
|
|
|
public Stage getPrimaryStage() {
|
|
return primaryStage;
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
launch(args);
|
|
}
|
|
}
|