From 3d4fc0de540d4c3b6123979e74eb8d4a90aa6ae2 Mon Sep 17 00:00:00 2001 From: pawelsa Date: Mon, 25 May 2026 19:36:22 +0200 Subject: [PATCH] feat: Create wrappers for view initialization --- .../edu/ntnu/idi/idatt/view/SceneFactory.java | 91 ++++++++++++++++--- 1 file changed, 80 insertions(+), 11 deletions(-) diff --git a/src/main/java/edu/ntnu/idi/idatt/view/SceneFactory.java b/src/main/java/edu/ntnu/idi/idatt/view/SceneFactory.java index 4c80524..154e11b 100644 --- a/src/main/java/edu/ntnu/idi/idatt/view/SceneFactory.java +++ b/src/main/java/edu/ntnu/idi/idatt/view/SceneFactory.java @@ -25,6 +25,7 @@ import edu.ntnu.idi.idatt.view.primary.transactions.TransactionModel; import edu.ntnu.idi.idatt.view.primary.transactions.TransactionView; import javafx.scene.Parent; +import javafx.util.Pair; import java.util.ArrayDeque; import java.util.Deque; @@ -114,13 +115,11 @@ public static Parent createStartView() { } /** - * Initialization method for Portfolio View. + * Initialization method for all Portfolio views. * - * @return View's root. + * @return View's root and controller. */ - public static Parent createPortfolioView() { - - mark(() -> createPortfolioView()); + private static Pair createDefaultPortfolioView() { PortfolioModel model = new PortfolioModel(); PortfolioView view = new PortfolioView(); @@ -129,7 +128,51 @@ public static Parent createPortfolioView() { view.setModel(model); view.setController(controller); - return view.getInstance(); + return new Pair(view.getInstance(), controller); + } + + /** + * Wrapper for Portfolio View initialization method. + * + *

+ * Initializes a default portfolio. + *

+ * + * @return View's root. + */ + public static Parent createPortfolioView() { + + mark(() -> createPortfolioView()); + + Pair vc = createDefaultPortfolioView(); + return vc.getKey(); // View + } + + /** + * Wrapper for Portfolio View initialization method. + * + *

+ * Initializes a portfolio with a search query. + *

+ * + * @param initialSearch - Initial search query + * @return View's root + */ + public static Parent createPortfolioView(String initialSearch) { + + mark(() -> createPortfolioView(initialSearch)); + + Pair vc = createDefaultPortfolioView(); + Parent view = vc.getKey(); + + if (initialSearch == null || initialSearch.isEmpty()) { + return view; + } + + PortfolioController controller = vc.getValue(); + controller.handleSearchQuery(initialSearch); + return view; + } /** @@ -137,15 +180,14 @@ public static Parent createPortfolioView() { * * @return View's root. */ - public static Parent createExchangeView(boolean markValue) { + private static Parent createDefaultExchangeView(boolean clean) { - if (markValue) { - mark(() -> createExchangeView(true)); - } else { + if (clean) { navigation.clear(); - mark(() -> createExchangeView(true)); } + mark(() -> createDefaultExchangeView(false)); + ExchangeModel model = new ExchangeModel(); ExchangeView view = new ExchangeView(); ExchangeController controller = new ExchangeController(model); @@ -157,6 +199,33 @@ public static Parent createExchangeView(boolean markValue) { } + /** + * Wrapper for Exchange View initialization method. + * + *

+ * Initializes a default exchange view. + *

+ * + * @return View's root + */ + public static Parent createExchangeView() { + return createDefaultExchangeView(false); + } + + /** + * Wrapper for Exchange View initialization method. + * + *

+ * Initializes a default exchange view with the clean parameter. + *

+ * + * @param clean - should it reset the page stack. + * @rteturn View's root + */ + public static Parent createExchangeView(boolean clean) { + return createDefaultExchangeView(clean); + } + /** * Initialization method for Stock View. *