From 0772ca22c6b19baee98e5dbb11a461662a8c8e43 Mon Sep 17 00:00:00 2001 From: Erika Savell Date: Thu, 6 Apr 2017 15:32:12 +1200 Subject: [PATCH 01/12] Re-engineered fxml controllers to use child controllers - Removed a lot of unnecessary complexity in App class #pair[jam339, esa46] #story[760] --- src/main/java/seng302/App.java | 112 +++++++++-------- .../java/seng302/Controllers/Controller.java | 14 +-- .../seng302/Controllers/MainController.java | 12 +- .../seng302/Controllers/RaceController.java | 26 +--- .../seng302/Controllers/StartController.java | 43 +++++++ src/main/resources/scenes/main.fxml | 16 +++ src/main/resources/scenes/mainpane.fxml | 7 -- src/main/resources/scenes/race.fxml | 59 +++++++++ src/main/resources/scenes/racepane.fxml | 113 ------------------ src/main/resources/scenes/start.fxml | 60 ++++++++++ 10 files changed, 253 insertions(+), 209 deletions(-) create mode 100644 src/main/java/seng302/Controllers/StartController.java create mode 100644 src/main/resources/scenes/main.fxml delete mode 100644 src/main/resources/scenes/mainpane.fxml create mode 100644 src/main/resources/scenes/race.fxml delete mode 100644 src/main/resources/scenes/racepane.fxml create mode 100644 src/main/resources/scenes/start.fxml diff --git a/src/main/java/seng302/App.java b/src/main/java/seng302/App.java index 72e98838..c1bd32d3 100644 --- a/src/main/java/seng302/App.java +++ b/src/main/java/seng302/App.java @@ -6,10 +6,6 @@ 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; @@ -25,54 +21,66 @@ public class App extends Application { 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(); - } + public void start(Stage stage) throws Exception { - /** - * 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); + FXMLLoader loader = new FXMLLoader(getClass().getResource("/scenes/main.fxml")); + Parent root = loader.load(); + Scene scene = new Scene(root, 1050, 835); + stage.setScene(scene); + stage.setMinHeight(800); + stage.setMinWidth(1200); + stage.show(); } + + +// /** +// * 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/main.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("race.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); +// } } diff --git a/src/main/java/seng302/Controllers/Controller.java b/src/main/java/seng302/Controllers/Controller.java index 792acd2c..0b1ed991 100644 --- a/src/main/java/seng302/Controllers/Controller.java +++ b/src/main/java/seng302/Controllers/Controller.java @@ -11,27 +11,17 @@ import java.util.ResourceBundle; * Created by fwy13 on 15/03/2017. */ public abstract class Controller implements Initializable { - protected App parent; + protected Controller parent; /** * Sets the parent of the application * * @param parent controller */ - public void setParent(App parent) { + public void setParent(Controller parent) { this.parent = parent; } - /** - * Sets the loads a pane into the parent. - * - * @param fxmlName fxml resource file to be loaded - * @throws Exception error in loading file - */ - public void loadPane(String fxmlName) throws Exception { - this.parent.loadPane(fxmlName); - } - /** * Initialisation class that is run on start up. * diff --git a/src/main/java/seng302/Controllers/MainController.java b/src/main/java/seng302/Controllers/MainController.java index fe6922a0..9058a305 100644 --- a/src/main/java/seng302/Controllers/MainController.java +++ b/src/main/java/seng302/Controllers/MainController.java @@ -1,5 +1,9 @@ package seng302.Controllers; +import javafx.fxml.FXML; +import javafx.scene.control.SplitPane; +import javafx.scene.layout.GridPane; + import java.net.URL; import java.util.ResourceBundle; @@ -7,6 +11,11 @@ import java.util.ResourceBundle; * Created by fwy13 on 15/03/2017. */ public class MainController extends Controller { + @FXML StartController startController; + @FXML RaceController raceController; + + + /** * Main Controller for the applications will house the menu and the displayed pane. @@ -16,6 +25,7 @@ public class MainController extends Controller { */ @Override public void initialize(URL location, ResourceBundle resources) { - + startController.setParent(this); + raceController.setParent(this); } } diff --git a/src/main/java/seng302/Controllers/RaceController.java b/src/main/java/seng302/Controllers/RaceController.java index 7fb037d2..a83401cd 100644 --- a/src/main/java/seng302/Controllers/RaceController.java +++ b/src/main/java/seng302/Controllers/RaceController.java @@ -1,14 +1,12 @@ package seng302.Controllers; -import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.layout.GridPane; -import javafx.util.Callback; import org.xml.sax.SAXException; import seng302.Model.*; import seng302.RaceXMLReader; @@ -31,7 +29,7 @@ public class RaceController extends Controller { @FXML GridPane startScreen; @FXML - SplitPane ongoingRacePane; + SplitPane racepane; @FXML CheckBox showFPS; @FXML @@ -79,26 +77,6 @@ public class RaceController extends Controller { boatPlacingColumn.setCellValueFactory(cellData -> cellData.getValue().positionProperty()); } - /** - * Begins the race with a scale factor of 15 - */ - public void startRace1Min() { - startRace(15); - } - - /** - * Begins the race with a scale factor of 3 - */ - public void startRace5Min() { - startRace(3); - } - - /** - * Begins the race with a scale factor of 1 - */ - public void startRaceNoScaling() { - startRace(1); - } @Override public void initialize(URL location, ResourceBundle resources) { @@ -163,7 +141,7 @@ public class RaceController extends Controller { canvasBase.getChildren().add(raceMap); startScreen.setVisible(false); - ongoingRacePane.setVisible(true); + racepane.setVisible(true); initializeFPS(); diff --git a/src/main/java/seng302/Controllers/StartController.java b/src/main/java/seng302/Controllers/StartController.java new file mode 100644 index 00000000..0429e15d --- /dev/null +++ b/src/main/java/seng302/Controllers/StartController.java @@ -0,0 +1,43 @@ +package seng302.Controllers; + +import java.net.URL; +import java.util.ResourceBundle; + +/** + * Created by esa46 on 6/04/17. + */ +public class StartController extends Controller { + + + /** + * Begins the race with a scale factor of 15 + */ + public void startRace1Min() { + startRace(15); + } + + /** + * Begins the race with a scale factor of 3 + */ + public void startRace5Min() { + startRace(3); + } + + /** + * Begins the race with a scale factor of 1 + */ + public void startRaceNoScaling() { + startRace(1); + } + + private void startRace(Integer raceScale){ + + } + + @Override + public void initialize(URL location, ResourceBundle resources){ + + } + + +} diff --git a/src/main/resources/scenes/main.fxml b/src/main/resources/scenes/main.fxml new file mode 100644 index 00000000..d94c8b59 --- /dev/null +++ b/src/main/resources/scenes/main.fxml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/scenes/mainpane.fxml b/src/main/resources/scenes/mainpane.fxml deleted file mode 100644 index ca502553..00000000 --- a/src/main/resources/scenes/mainpane.fxml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/src/main/resources/scenes/race.fxml b/src/main/resources/scenes/race.fxml new file mode 100644 index 00000000..2f626404 --- /dev/null +++ b/src/main/resources/scenes/race.fxml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/scenes/racepane.fxml b/src/main/resources/scenes/racepane.fxml deleted file mode 100644 index f7e5c19f..00000000 --- a/src/main/resources/scenes/racepane.fxml +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +