package seng302; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; import seng302.Controllers.Controller; import seng302.Controllers.MainController; import java.io.InputStream; public class App extends Application { Stage primaryStage; BorderPane mainContainer; Scene mainScene; /** * Entry point for running the programme * * @param args for starting the programme */ public static void main(String[] args) { launch(args); } /** * Loads and sets up the GUI elements * * @param primaryStage Base for all scenes * @throws Exception Error in initialising programme */ @Override public void start(Stage primaryStage) throws Exception { this.primaryStage = primaryStage; primaryStage.minHeightProperty().setValue(600); primaryStage.minWidthProperty().setValue(780); //load the first container try { FXMLLoader loader = new FXMLLoader(); InputStream in = getClass().getClassLoader().getResourceAsStream("scenes/mainpane.fxml"); mainContainer = (BorderPane) loader.load(in); mainScene = new Scene(mainContainer, 1200, 800); primaryStage.setScene(mainScene); primaryStage.sizeToScene(); MainController mainController = (MainController) loader.getController(); mainController.setParent(this); in.close(); //add the center loadPane("racepane.fxml"); } catch (Exception e) { e.printStackTrace(); } primaryStage.show(); } /** * Loads panes for use in the GUI * * @param fxmlName name of resource fxml file * @throws Exception critical error in loading file */ public void loadPane(String fxmlName) throws Exception { FXMLLoader loader = new FXMLLoader(); InputStream in = getClass().getClassLoader().getResourceAsStream("scenes/" + fxmlName); Parent page; try { page = (Parent) loader.load(in); } finally { in.close(); } mainContainer.getChildren().remove(mainContainer.getCenter()); mainContainer.setCenter(page); Controller controller = (Controller) loader.getController(); controller.setParent(this); } }