From a7c64dc401ae0371deab16c7f642a7f9bf079524 Mon Sep 17 00:00:00 2001 From: Fan-Wu Yang Date: Wed, 15 Mar 2017 02:03:37 +1300 Subject: [PATCH] Implemented base UI and abstract controller for parent coupling -Added Controller abstract class that all JavaFX controllers are to be a child of. -Added MainController in case in the future we need a menu. -Added mainpane.fxml as a base pane that we can mount the future menu on. -Added RaceController so where the race will be made and displayed. -Added racepane.fxml which includes a Canvas and a tableview -Added loadPane() function to the mainApp which will swap the pane the app is currently on. #story[9] --- .idea/misc.xml | 5 +- src/main/java/seng302/App.java | 58 ++++++++++++++++++- .../java/seng302/Controllers/Controller.java | 25 ++++++++ .../seng302/Controllers/MainController.java | 17 ++++++ .../seng302/Controllers/RaceController.java | 24 ++++++++ src/main/resources/scenes/mainpane.fxml | 7 +++ src/main/resources/scenes/racepane.fxml | 31 ++++++++++ 7 files changed, 164 insertions(+), 3 deletions(-) create mode 100644 src/main/java/seng302/Controllers/Controller.java create mode 100644 src/main/java/seng302/Controllers/MainController.java create mode 100644 src/main/java/seng302/Controllers/RaceController.java create mode 100644 src/main/resources/scenes/mainpane.fxml create mode 100644 src/main/resources/scenes/racepane.fxml diff --git a/.idea/misc.xml b/.idea/misc.xml index 347c25ca..1972028c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,8 @@ + + + - + diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index 348b3dcd..cf9d06d6 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -1,11 +1,27 @@ 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; import java.util.Scanner; -public class App +public class App extends Application { + Stage primaryStage; + BorderPane mainContainer; + Scene mainScene; + public static void main( String[] args ) { + launch(args); + /* SPRINT 1 Leftovers int timescale = 0; // Scale 5 min to 1 min, 1min = 200 5 min = 1000 Scanner sc = new Scanner(System.in); @@ -40,6 +56,44 @@ public class App }; Race race = new ConstantVelocityRace(boats, marks, timescale); - race.simulateRace(); + race.simulateRace();*/ + } + + @Override + public void start(Stage primaryStage) throws Exception { + this.primaryStage = primaryStage; + + //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, 800, 600); + 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(); + } + + 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); } } diff --git a/src/main/java/seng302/Controllers/Controller.java b/src/main/java/seng302/Controllers/Controller.java new file mode 100644 index 00000000..86081bee --- /dev/null +++ b/src/main/java/seng302/Controllers/Controller.java @@ -0,0 +1,25 @@ +package seng302.Controllers; + +import javafx.fxml.Initializable; +import seng302.App; + +import java.net.URL; +import java.util.ResourceBundle; + +/** + * Created by Gondr on 15/03/2017. + */ +public abstract class Controller implements Initializable{ + protected App parent; + + public void setParent(App parent){ + this.parent = parent; + } + + public void loadPane(String fxmlName) throws Exception { + this.parent.loadPane(fxmlName); + } + + @Override + public abstract void initialize(URL location, ResourceBundle resources); +} diff --git a/src/main/java/seng302/Controllers/MainController.java b/src/main/java/seng302/Controllers/MainController.java new file mode 100644 index 00000000..d6edf653 --- /dev/null +++ b/src/main/java/seng302/Controllers/MainController.java @@ -0,0 +1,17 @@ +package seng302.Controllers; + +import javafx.fxml.Initializable; + +import java.net.URL; +import java.util.ResourceBundle; + +/** + * Created by Gondr on 15/03/2017. + */ +public class MainController extends Controller { + + @Override + public void initialize(URL location, ResourceBundle resources) { + + } +} diff --git a/src/main/java/seng302/Controllers/RaceController.java b/src/main/java/seng302/Controllers/RaceController.java new file mode 100644 index 00000000..6e09c291 --- /dev/null +++ b/src/main/java/seng302/Controllers/RaceController.java @@ -0,0 +1,24 @@ +package seng302.Controllers; + +import javafx.fxml.FXML; +import javafx.scene.canvas.Canvas; +import javafx.scene.control.TableView; + +import java.net.URL; +import java.util.ResourceBundle; + +/** + * Created by Gondr on 15/03/2017. + */ +public class RaceController extends Controller{ + @FXML + Canvas raceMap; + @FXML + TableView boatInfoTable; + + + @Override + public void initialize(URL location, ResourceBundle resources) { + + } +} diff --git a/src/main/resources/scenes/mainpane.fxml b/src/main/resources/scenes/mainpane.fxml new file mode 100644 index 00000000..fd1a4081 --- /dev/null +++ b/src/main/resources/scenes/mainpane.fxml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/main/resources/scenes/racepane.fxml b/src/main/resources/scenes/racepane.fxml new file mode 100644 index 00000000..030c4252 --- /dev/null +++ b/src/main/resources/scenes/racepane.fxml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +