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,