diff --git a/client/src/main/java/client/utils/Navigation.java b/client/src/main/java/client/utils/Navigation.java new file mode 100644 index 0000000..50b4b89 --- /dev/null +++ b/client/src/main/java/client/utils/Navigation.java @@ -0,0 +1,41 @@ +package client.utils; + +import client.MyFXML; +import javafx.scene.Parent; +import javafx.scene.layout.Pane; + +public class Navigation { + + private final MyFXML myFXML; + private Pane screen; + + /** + * Constructs a Navigation Object that uses a fxml object and Pane that will allow to switch UI screens + * @param x - a MyFXML Object + * @param y - a Pane Object + */ + public Navigation(MyFXML x, Pane y){ + this.myFXML = x; + this.screen = y; + } + + /** + * The show function takes in an FxmlPath and changes the current pane to the value given by the path + * using the load function of the myFXML object + * @param fxmlpath - FXML path provided to show the next pane + */ + public void show(String fxmlpath){ + + try{ + var result = myFXML.load(Object.class, fxmlpath); //stores the result of the load method in result + Parent uiRoot = result.getValue(); + screen.getChildren().setAll(uiRoot); + } + catch(Exception e) { //catches any failures thrown by the load method + System.err.println("Failed to load FXML file: " + fxmlpath); + throw new IllegalArgumentException("Cannot load FXML file: " + fxmlpath, e); + } + } + + +}