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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +