diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/event/EventType.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/event/EventType.java index 825e9bc..ff2e13e 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/event/EventType.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/service/event/EventType.java @@ -90,5 +90,14 @@ public enum EventType implements EventChannel { * edu.ntnu.idi.idatt2003.g40.mappe.model.SaveGame} that was loaded * but most listeners don't inspect it.

* */ - STATE_RESET; + STATE_RESET, + + /** + * Event for selecting a specific stock on the dashboard. + * + *

Published by + * {@link edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.market.MarketController} + * and handled by {@link edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.dashboard.DashBoardController}

+ * */ + SELECT_STOCK_FOR_DASHBOARD; } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java index 9a5cd9c..001ff85 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/dashboard/DashBoardController.java @@ -65,6 +65,7 @@ public DashBoardController(final DashBoardView viewElement, this.selectedTimeRange = DashBoardTimeRange.DEFAULT; super(viewElement, eventManager); eventManager.addSubscriber(this, EventType.STATE_RESET); + eventManager.addSubscriber(this, EventType.SELECT_STOCK_FOR_DASHBOARD); } /** @@ -259,5 +260,13 @@ public void handleEvent(final EventData data) { getViewElement().setCurrentStock(first, owned.floatValue()); } getViewElement().updateGraph(selectedTimeRange); + + if(data.channel() == EventType.SELECT_STOCK_FOR_DASHBOARD && data.data() instanceof Stock s) { + handleStockSelection( + s, + player.getPortfolio().getTotalShareQuantityBySymbol(s.getSymbol()).floatValue() + ); + } + } } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/market/MarketController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/market/MarketController.java index b8ab2dc..fce33d8 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/market/MarketController.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/market/MarketController.java @@ -10,6 +10,7 @@ import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventType; import edu.ntnu.idi.idatt2003.g40.mappe.utils.Validator; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewController; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.WidgetEnum; import java.math.BigDecimal; import java.util.List; @@ -63,6 +64,17 @@ protected void initInteractions() { getViewElement().setOwnedLookup(this::ownedQuantity); getViewElement().setStocks(stockList); + getViewElement().setOnStockSelected( + (stock) -> { + EventData eventData = + new EventData<>(EventType.SELECT_STOCK_FOR_DASHBOARD, stock); + EventData changeViewData = + new EventData<>(EventType.CHANGE_INGAME_CENTER, WidgetEnum.DASHBOARD); + invoke(eventData); + invoke(changeViewData); + } + ); + getViewElement().setOnAction(MarketActions.SORT_TICKER, () -> getViewElement().setSort(MarketSort.TICKER)); getViewElement().setOnAction(MarketActions.SORT_PRICE,