diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Main.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Main.java index 7b1c456..3c02553 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Main.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/Main.java @@ -27,6 +27,8 @@ import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.market.MarketView; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.topbar.TopBarController; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.topbar.TopBarView; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.transactions.TransactionsController; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.transactions.TransactionsView; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.Pane; @@ -116,6 +118,9 @@ public void start(final Stage stage) throws Exception { exchange, stocksInFile); + TransactionsView transactionsView = new TransactionsView(); + new TransactionsController(transactionsView, eventManager); + // In-game (Change "topBarView" to "topBarView2" if no summary section). // Dashboard er default center-view. InGameView inGameView = new InGameView(topBarView, dashBoardView.getRootPane()); @@ -124,7 +129,8 @@ public void start(final Stage stage) throws Exception { topBarController.setMarketIntegration( inGameView::changeCenterView, dashBoardView.getRootPane(), - marketView.getRootPane() + marketView.getRootPane(), + transactionsView.getRootPane() ); // Register all views diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarActions.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarActions.java index 08f84fb..9b71268 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarActions.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarActions.java @@ -4,5 +4,6 @@ public enum TopBarActions { EXIT, STATS, MARKET, - SETTINGS; + SETTINGS, + TRANSACTIONS; } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarController.java index c8772f0..e19e0ab 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarController.java @@ -17,6 +17,14 @@ public class TopBarController extends ViewController { * */ private boolean inMarketView = false; + /** + * Whether the transactions screen is currently the active center-view. + * + *

When true, the quit/back button returns to the dashboard instead + * of exiting to the main menu.

+ * */ + private boolean inTransactionsView = false; + /** * {@inheritDoc}. */ @@ -50,19 +58,22 @@ protected void initInteractions() { * otherwise to the main menu. * * - * @param centerSwitcher callback that swaps the center-view (typically - * {@code inGameView::changeCenterView}). - * @param dashboardCenter root pane of the dashboard widget. - * @param marketCenter root pane of the market widget. + * @param centerSwitcher callback that swaps the center-view (typically + * {@code inGameView::changeCenterView}). + * @param dashboardCenter root pane of the dashboard widget. + * @param marketCenter root pane of the market widget. + * @param transactionsCenter root pane of the transactions widget. * */ public void setMarketIntegration(final Consumer centerSwitcher, final Node dashboardCenter, - final Node marketCenter) { + final Node marketCenter, + final Node transactionsCenter) { getViewElement().setOnAction(TopBarActions.EXIT, () -> { - if (inMarketView) { + if (inMarketView || inTransactionsView) { centerSwitcher.accept(dashboardCenter); getViewElement().setQuitText("Quit"); inMarketView = false; + inTransactionsView = false; } else { changeScene(ViewEnum.MAIN_MENU); } @@ -72,12 +83,21 @@ public void setMarketIntegration(final Consumer centerSwitcher, centerSwitcher.accept(dashboardCenter); getViewElement().setQuitText("Quit"); inMarketView = false; + inTransactionsView = false; }); getViewElement().setOnAction(TopBarActions.MARKET, () -> { centerSwitcher.accept(marketCenter); getViewElement().setQuitText("Back"); inMarketView = true; + inTransactionsView = false; + }); + + getViewElement().setOnAction(TopBarActions.TRANSACTIONS, () -> { + centerSwitcher.accept(transactionsCenter); + getViewElement().setQuitText("Back"); + inMarketView = false; + inTransactionsView = true; }); } } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarView.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarView.java index cdb8727..30f0259 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarView.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/topbar/TopBarView.java @@ -16,8 +16,10 @@ public class TopBarView extends ViewElement { private Button statsBtn; private Button marketBtn; private Button settingsBtn; + private Button transactionsBtn; private SummaryView summaryView; + public TopBarView(final SummaryView summaryView) { this.summaryView = summaryView; super(new VBox(10), TopBarActions.class); @@ -45,8 +47,9 @@ protected void initLayout() { statsBtn = new Button("Stats"); marketBtn = new Button("Market"); settingsBtn = new Button("Settings"); + transactionsBtn = new Button("Transactions"); - Stream.of(quitBtn, statsBtn, marketBtn, settingsBtn).forEach(b -> { + Stream.of(quitBtn, statsBtn, marketBtn, settingsBtn, transactionsBtn).forEach(b -> { HBox.setHgrow(b, Priority.ALWAYS); }); @@ -54,7 +57,8 @@ protected void initLayout() { quitBtn, statsBtn, marketBtn, - settingsBtn + settingsBtn, + transactionsBtn ); if (summaryView != null) { @@ -66,12 +70,13 @@ protected void initLayout() { registerButton(TopBarActions.STATS, statsBtn); registerButton(TopBarActions.MARKET, marketBtn); registerButton(TopBarActions.SETTINGS, settingsBtn); + registerButton(TopBarActions.TRANSACTIONS, transactionsBtn); } @Override protected void initStyling() { getRootPane().getStyleClass().add("top-bar"); - Stream.of(quitBtn, statsBtn, marketBtn, settingsBtn) + Stream.of(quitBtn, statsBtn, marketBtn, settingsBtn, transactionsBtn) .forEach(b -> b.getStyleClass().add("menu-button")); } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsActions.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsActions.java new file mode 100644 index 0000000..bbaad49 --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsActions.java @@ -0,0 +1,4 @@ +package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.transactions; + +public enum TransactionsActions { +} diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsController.java new file mode 100644 index 0000000..63bc088 --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsController.java @@ -0,0 +1,20 @@ +package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.transactions; + +import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventManager; +import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewController; + +public class TransactionsController extends ViewController { + + /** + * {@inheritDoc} + */ + public TransactionsController(final TransactionsView viewElement, final EventManager eventManager) + throws IllegalArgumentException { + super(viewElement, eventManager); + } + + @Override + protected void initInteractions() { + + } +} diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsView.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsView.java new file mode 100644 index 0000000..5f60974 --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/transactions/TransactionsView.java @@ -0,0 +1,21 @@ +package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.transactions; + +import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewElement; +import javafx.scene.layout.VBox; + +public class TransactionsView extends ViewElement { + + public TransactionsView() { + super(new VBox(), TransactionsActions.class); + } + + @Override + protected void initLayout() { + + } + + @Override + protected void initStyling() { + + } +}