diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewController.java index 61fb506..3284e51 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewController.java @@ -3,6 +3,7 @@ import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventData; import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventManager; import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventPublisher; +import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventType; /** * Handles logic and event publishing for {@link ViewElement} objects. @@ -18,7 +19,7 @@ * @see EventManager * */ -public abstract class ViewController> +public abstract class ViewController> implements EventPublisher { /** @@ -26,6 +27,7 @@ public abstract class ViewController> * */ private final T1 viewElement; + /** * The {@link EventManager} object to send events to. * @@ -84,4 +86,15 @@ public final void invoke(final EventData data, final EventManager eventManager) { eventManager.invokeEvent(data); } + + /** + * Basic method for invoking an event to change to a specific view. + * + * @param viewName the view to set to. + * */ + protected void changeScene(final ViewEnum viewName) { + ViewData viewData = new ViewData(viewName); + EventData eventData = new EventData(EventType.SCENE_CHANGE, viewData); + invoke(eventData, eventManager); + } } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewData.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewData.java index 33fca3c..5f66e88 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewData.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewData.java @@ -17,7 +17,7 @@ public class ViewData { * Name of the scene. * */ - private final String sceneName; + private final ViewEnum sceneName; /** * Constructor. @@ -26,8 +26,8 @@ public class ViewData { * * @throws IllegalArgumentException if sceneName is empty or null. */ - public ViewData(final String sceneName) throws IllegalArgumentException { - if (Validator.NOT_EMPTY.isValid(sceneName)) { + public ViewData(final ViewEnum sceneName) throws IllegalArgumentException { + if (Validator.NOT_EMPTY.isValid(sceneName.toString())) { this.sceneName = sceneName; } else { throw new IllegalArgumentException(Validator.NOT_EMPTY.getErrorMessage()); @@ -40,7 +40,7 @@ public ViewData(final String sceneName) throws IllegalArgumentException { * @return scene name. * */ - public String getSceneName() { + public ViewEnum getSceneName() { return sceneName; } } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewElement.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewElement.java index aa0f941..a0b0f1c 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewElement.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ViewElement.java @@ -1,7 +1,8 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view; import edu.ntnu.idi.idatt2003.g40.mappe.utils.Validator; -import java.util.ArrayList; +import java.util.EnumMap; +import java.util.Map; import javafx.scene.control.Button; import javafx.scene.layout.Pane; @@ -12,15 +13,16 @@ *

Extends {@link Pane}

* * @param the type of pane this view element represents. + * @param an enum representing all interactable actions found in the view. * */ -public abstract class ViewElement { +public abstract class ViewElement> { /** * List of buttons in this view. * */ - private final ArrayList