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 4d9aa72..9321762 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 @@ -20,6 +20,7 @@ import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.financialsummary.SummaryController; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.financialsummary.SummaryView; +import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.stats.StatsView; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.topbar.TopBarController; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.topbar.TopBarView; import javafx.application.Application; @@ -90,8 +91,11 @@ public void start(final Stage stage) throws Exception { TopBarView topBarView = new TopBarView(summaryView); new TopBarController(topBarView, eventManager); + // Stats page + StatsView statsView = new StatsView(); + // In-game - InGameView inGameView = new InGameView(topBarView); + InGameView inGameView = new InGameView(topBarView, statsView.getRootPane()); // Register all views viewManager.addView(mainMenuView); diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameActions.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameActions.java index cae5ce2..03ddd1a 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameActions.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameActions.java @@ -1,4 +1,6 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.ingame; public enum InGameActions { + BUY_SHARES, + SELL_SHARES; } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameController.java new file mode 100644 index 0000000..eda5729 --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameController.java @@ -0,0 +1,21 @@ +package edu.ntnu.idi.idatt2003.g40.mappe.view.ingame; + +import edu.ntnu.idi.idatt2003.g40.mappe.service.event.EventManager; +import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewController; + +public class InGameController extends ViewController { + + /** + * {@inheritDoc}. + */ + protected InGameController(final InGameView 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/ingame/InGameView.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameView.java index 0096e48..b3b00b7 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameView.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/ingame/InGameView.java @@ -1,27 +1,49 @@ package edu.ntnu.idi.idatt2003.g40.mappe.view.ingame; +import edu.ntnu.idi.idatt2003.g40.mappe.model.Stock; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewElement; import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewEnum; import edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.topbar.TopBarView; +import javafx.geometry.Pos; +import javafx.scene.Node; +import javafx.scene.chart.LineChart; +import javafx.scene.chart.NumberAxis; +import javafx.scene.chart.XYChart; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.Separator; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; +import java.util.ArrayList; + public class InGameView extends ViewElement { - TopBarView topBarView; + private final TopBarView topBarView; + private Node centerView; - public InGameView(final TopBarView topBarView) { + public InGameView(final TopBarView topBarView, final Node centerView) { this.topBarView = topBarView; + this.centerView = centerView; super(new VBox(), ViewEnum.IN_GAME, InGameActions.class); - } @Override protected void initLayout() { - getRootPane().getChildren().add(topBarView.getRootPane()); + getRootPane().getChildren().addAll(topBarView.getRootPane(), centerView); + VBox.setVgrow(centerView, Priority.ALWAYS); } @Override protected void initStyling() { } + + public void changeCenterView(final Node newCenterView) { + this.centerView = newCenterView; + getRootPane().getChildren().clear(); + getRootPane().getChildren().addAll(topBarView.getRootPane(), centerView); + VBox.setVgrow(centerView, Priority.ALWAYS); + } } diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/financialsummary/SummaryView.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/financialsummary/SummaryView.java index 402a3bf..100f9eb 100644 --- a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/financialsummary/SummaryView.java +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/financialsummary/SummaryView.java @@ -28,14 +28,23 @@ public SummaryView() { protected void initLayout() { getRootPane().setSpacing(20); getRootPane().setAlignment(Pos.BOTTOM_CENTER); - getRootPane().setFillHeight(false); + getRootPane().setFillHeight(true); + + getRootPane().setPrefHeight(100); + getRootPane().setMinHeight(80); + getRootPane().setMaxHeight(100); + + VBox.setVgrow(getRootPane(), Priority.ALWAYS); VBox balanceInfo = new VBox(); titleLabel = new Label("balance/investments"); - balanceLabel = new Label("200$/2394$"); + balanceLabel = new Label("10000$/0$"); - balanceInfo.getChildren().addAll(titleLabel, balanceLabel); + Region spacerL = new Region(); + VBox.setVgrow(spacerL, Priority.ALWAYS); + + balanceInfo.getChildren().addAll(titleLabel, spacerL, balanceLabel); NumberAxis xAxis = new NumberAxis(1, 22, 1); xAxis.setMinorTickVisible(false); @@ -54,9 +63,15 @@ protected void initLayout() { chart.setVerticalGridLinesVisible(false); chart.setAlternativeRowFillVisible(false); chart.setAnimated(false); - chart.setPrefHeight(100); - chart.setMinHeight(100); - chart.setMaxHeight(100); + chart.setPrefHeight(250); + chart.setMinHeight(200); + chart.setMaxHeight(300); + chart.setMaxWidth(Double.MAX_VALUE); + chart.setMinWidth(0); + dataSeries = new XYChart.Series<>(); + chart.prefHeightProperty().bind(getRootPane().heightProperty().divide(5)); + chart.minHeightProperty().set(50); + chart.getData().add(dataSeries); Region spacer = new Region(); HBox.setHgrow(spacer, Priority.ALWAYS); @@ -65,20 +80,16 @@ protected void initLayout() { Region leftSpacer = new Region(); HBox.setHgrow(leftSpacer, Priority.SOMETIMES); - dataSeries = new XYChart.Series<>(); - chart.prefHeightProperty().bind(getRootPane().heightProperty().divide(5)); - chart.minHeightProperty().set(50); - chart.getData().add(dataSeries); - VBox navInfo = new VBox(); - navInfo.setAlignment(Pos.BOTTOM_RIGHT); + navInfo.setAlignment(Pos.TOP_CENTER); nextBtn = new Button("next"); - weekLabel = new Label("week: 0"); weekLabel.getStyleClass().add("week-label"); + Region spacerR = new Region(); + VBox.setVgrow(spacerR, Priority.ALWAYS); - navInfo.getChildren().addAll(nextBtn, weekLabel); + navInfo.getChildren().addAll(nextBtn, spacerR, weekLabel); getRootPane().getChildren().addAll(balanceInfo, chart, navInfo); registerButton(SummaryActions.NEXT_WEEK, nextBtn); diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsActions.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsActions.java new file mode 100644 index 0000000..693d1cd --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsActions.java @@ -0,0 +1,6 @@ +package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.stats; + +public enum StatsActions { + BUY_SHARES, + SELL_SHARES; +} diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsController.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsController.java new file mode 100644 index 0000000..275ea4f --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsController.java @@ -0,0 +1,4 @@ +package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.stats; + +public class StatsController { +} diff --git a/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsView.java b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsView.java new file mode 100644 index 0000000..4b6e832 --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt2003/g40/mappe/view/widgets/stats/StatsView.java @@ -0,0 +1,145 @@ +package edu.ntnu.idi.idatt2003.g40.mappe.view.widgets.stats; + +import edu.ntnu.idi.idatt2003.g40.mappe.model.Stock; +import edu.ntnu.idi.idatt2003.g40.mappe.view.ViewElement; +import java.util.ArrayList; +import javafx.geometry.Pos; +import javafx.scene.chart.LineChart; +import javafx.scene.chart.NumberAxis; +import javafx.scene.chart.XYChart; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.ScrollBar; +import javafx.scene.control.ScrollPane; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; +import javafx.scene.layout.VBox; + +public class StatsView extends ViewElement { + private LineChart chart; + private XYChart.Series dataSeries; + private VBox sidebar; + private ArrayList stocks; + private ArrayList stockStrings; + private ArrayList