From 3d0a8932f21997f6b9f19b5ec07d431ed938931e Mon Sep 17 00:00:00 2001 From: danieskj Date: Sat, 16 May 2026 15:21:03 +0200 Subject: [PATCH 1/2] feat: Create newspaper ui and menu buttons --- .../edu/ntnu/idi/idatt/view/SceneFactory.java | 17 +++++- .../elements/NewspaperComponent.java | 33 ++++++++++ .../view/primary/exchange/ExchangeView.java | 2 +- .../newspaper/NewspaperController.java | 24 ++++++++ .../primary/newspaper/NewspaperModel.java | 14 +++++ .../view/primary/newspaper/NewspaperView.java | 61 +++++++++++++++++++ .../view/primary/portfolio/PortfolioView.java | 7 ++- .../primary/transactions/TransactionView.java | 7 +-- src/main/resources/themes/default.css | 19 ++++++ 9 files changed, 175 insertions(+), 9 deletions(-) create mode 100644 src/main/java/edu/ntnu/idi/idatt/view/components/elements/NewspaperComponent.java create mode 100644 src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperController.java create mode 100644 src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperModel.java create mode 100644 src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperView.java 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 350fa89..165182a 100644 --- a/src/main/java/edu/ntnu/idi/idatt/view/SceneFactory.java +++ b/src/main/java/edu/ntnu/idi/idatt/view/SceneFactory.java @@ -1,11 +1,13 @@ package edu.ntnu.idi.idatt.view; import edu.ntnu.idi.idatt.model.market.Stock; -import edu.ntnu.idi.idatt.model.portfolio.Share; import edu.ntnu.idi.idatt.session.UserSession; import edu.ntnu.idi.idatt.view.entry.StartController; import edu.ntnu.idi.idatt.view.entry.StartModel; import edu.ntnu.idi.idatt.view.entry.StartView; +import edu.ntnu.idi.idatt.view.primary.newspaper.NewspaperController; +import edu.ntnu.idi.idatt.view.primary.newspaper.NewspaperModel; +import edu.ntnu.idi.idatt.view.primary.newspaper.NewspaperView; import edu.ntnu.idi.idatt.view.primary.portfolio.PortfolioController; import edu.ntnu.idi.idatt.view.primary.portfolio.PortfolioModel; import edu.ntnu.idi.idatt.view.primary.portfolio.PortfolioView; @@ -130,5 +132,18 @@ public static Parent createTransactionView() { return view.getInstance(); } + public static Parent createNewspaperView() { + + mark(() -> createNewspaperView()); + + NewspaperModel model = new NewspaperModel(); + NewspaperView view = new NewspaperView(); + NewspaperController controller = new NewspaperController(model); + + view.setModel(model); + view.setController(controller); + + return view.getInstance(); + } } diff --git a/src/main/java/edu/ntnu/idi/idatt/view/components/elements/NewspaperComponent.java b/src/main/java/edu/ntnu/idi/idatt/view/components/elements/NewspaperComponent.java new file mode 100644 index 0000000..8661c9b --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt/view/components/elements/NewspaperComponent.java @@ -0,0 +1,33 @@ +package edu.ntnu.idi.idatt.view.components.elements; + +import edu.ntnu.idi.idatt.model.portfolio.Share; +import edu.ntnu.idi.idatt.view.components.ui.UICompositor; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.control.Label; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; + +public class NewspaperComponent extends HBox { + private final Label newsTitle; + private final Label newsText; + + public NewspaperComponent(Share share) { + this.setPadding(new Insets(30)); + this.getStyleClass().add("newspaper-article"); + + newsTitle = new Label("Earthquake in Norway"); + newsText = new Label("Intel are crashing"); + newsTitle.getStyleClass().add("newspaper-title"); + newsText.getStyleClass().add("newspaper-med-text"); + + UICompositor shareComponent = new UICompositor.Builder() + .parent(new VBox()) + .growWithAlignment(Pos.TOP_CENTER) + .addAllContent(newsTitle, newsText) + .build(); + + this.getChildren().add(shareComponent.makeUI()); + } + +} diff --git a/src/main/java/edu/ntnu/idi/idatt/view/primary/exchange/ExchangeView.java b/src/main/java/edu/ntnu/idi/idatt/view/primary/exchange/ExchangeView.java index accf6dc..e69a94e 100644 --- a/src/main/java/edu/ntnu/idi/idatt/view/primary/exchange/ExchangeView.java +++ b/src/main/java/edu/ntnu/idi/idatt/view/primary/exchange/ExchangeView.java @@ -46,7 +46,7 @@ public Parent createContent() { public Parent createNavigation() { return UIFactory.createNavigation(UserSession.getInstance().getExchange().getName(), List.of(" • Newspaper"), - () -> System.out.println("Newspaper clicked")); + () -> SceneManager.switchTo(SceneFactory.createNewspaperView())); } @Override diff --git a/src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperController.java b/src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperController.java new file mode 100644 index 0000000..674758a --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperController.java @@ -0,0 +1,24 @@ +package edu.ntnu.idi.idatt.view.primary.newspaper; + +import edu.ntnu.idi.idatt.model.portfolio.Share; +import edu.ntnu.idi.idatt.session.UserSession; +import edu.ntnu.idi.idatt.view.components.AbstractController; +import edu.ntnu.idi.idatt.view.components.elements.NewspaperComponent; + +import java.util.ArrayList; + +public class NewspaperController extends AbstractController { + + private final ArrayList loadedNewspaperComponents = new ArrayList<>(); + private UserSession session = UserSession.getInstance(); + + public NewspaperController(NewspaperModel model) { + super(model); + for (Share share : session.getPlayer().getPortfolio().getShares()) { + NewspaperComponent newspaperComponent = new NewspaperComponent(share); + loadedNewspaperComponents.add(newspaperComponent); + } + model.getNewspaperComponentsList().setAll(loadedNewspaperComponents); + } + +} diff --git a/src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperModel.java b/src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperModel.java new file mode 100644 index 0000000..090db9b --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperModel.java @@ -0,0 +1,14 @@ +package edu.ntnu.idi.idatt.view.primary.newspaper; + +import edu.ntnu.idi.idatt.view.components.Model; +import edu.ntnu.idi.idatt.view.components.elements.NewspaperComponent; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; + +public class NewspaperModel implements Model { + private final ObservableList newspaperComponentsList = FXCollections.observableArrayList(); + + public ObservableList getNewspaperComponentsList() { + return newspaperComponentsList; + } +} diff --git a/src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperView.java b/src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperView.java new file mode 100644 index 0000000..ab1e29b --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt/view/primary/newspaper/NewspaperView.java @@ -0,0 +1,61 @@ +package edu.ntnu.idi.idatt.view.primary.newspaper; + +import edu.ntnu.idi.idatt.view.SceneFactory; +import edu.ntnu.idi.idatt.view.SceneManager; +import edu.ntnu.idi.idatt.view.components.AbstractViewUI; +import edu.ntnu.idi.idatt.view.components.ui.UIFactory; +import javafx.beans.binding.Bindings; +import javafx.geometry.Pos; +import javafx.scene.Parent; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.VBox; + +import java.util.List; + +public class NewspaperView extends AbstractViewUI { + private VBox article; + @Override + public Parent createContent() { + BorderPane root = new BorderPane(); + root.getStyleClass().add("primary"); + article = new VBox(); + article.setFillWidth(false); + article.setAlignment(Pos.TOP_CENTER); + root.setCenter(article); + return root; + } + + @Override + public Parent createNavigation() { + return UIFactory.createNavigation(" Newspaper", + List.of(" • Newspaper"), + () -> SceneManager.switchTo(SceneFactory.createNewspaperView())); + } + + @Override + public Parent createHeader() { + return UIFactory.createHeader("Search", + query -> System.out.println()); + } + + @Override + public Parent createToolbar() { + return UIFactory.createToolbar(() -> this.toggleMenu(), + () -> SceneManager.switchTo(SceneFactory.createStartView())); + } + + @Override + public Parent createMenu() { + return UIFactory.createMenu("Account", + List.of(" • Portfolio", " • Transactions"), + () -> SceneManager.switchTo(SceneFactory.createPortfolioView()), + () -> SceneManager.switchTo(SceneFactory.createTransactionView())); + } + + public void setModel(NewspaperModel model){ + Bindings.bindContent(article.getChildren(), model.getNewspaperComponentsList()); + } + public void setController(NewspaperController controller){ + + } +} diff --git a/src/main/java/edu/ntnu/idi/idatt/view/primary/portfolio/PortfolioView.java b/src/main/java/edu/ntnu/idi/idatt/view/primary/portfolio/PortfolioView.java index 184dd5b..96323f0 100644 --- a/src/main/java/edu/ntnu/idi/idatt/view/primary/portfolio/PortfolioView.java +++ b/src/main/java/edu/ntnu/idi/idatt/view/primary/portfolio/PortfolioView.java @@ -41,8 +41,8 @@ public Parent createContent() { @Override public Parent createNavigation() { return UIFactory.createNavigation("Portfolio", - List.of(" • Title"), - () -> System.out.println("Newspaper clicked")); + List.of(" • Newspaper"), + () -> SceneManager.switchTo(SceneFactory.createNewspaperView())); } @Override @@ -62,8 +62,9 @@ public Parent createMenu() { return UIFactory.createMenu("Account", List.of(" • Portfolio", " • Transactions"), () -> SceneManager.switchTo(SceneFactory.createPortfolioView()), - () -> System.out.println("Transaction clicked!")); + () -> SceneManager.switchTo(SceneFactory.createTransactionView())); } + public void setModel(PortfolioModel model){ userBox.getChildren().clear(); PlayerPortfolioComponent portfolioComponent = new PlayerPortfolioComponent(model.getPortfolio()); diff --git a/src/main/java/edu/ntnu/idi/idatt/view/primary/transactions/TransactionView.java b/src/main/java/edu/ntnu/idi/idatt/view/primary/transactions/TransactionView.java index 932ccec..49e2e50 100644 --- a/src/main/java/edu/ntnu/idi/idatt/view/primary/transactions/TransactionView.java +++ b/src/main/java/edu/ntnu/idi/idatt/view/primary/transactions/TransactionView.java @@ -75,10 +75,9 @@ public Parent createToolbar() { @Override public Parent createMenu() { return UIFactory.createMenu("Account", - List.of(" • Portfolio", " • Transactions"), - () -> SceneManager.switchTo(SceneFactory.createPortfolioView()), - () -> { - }); + List.of(" • Portfolio", " • Transactions"), + () -> SceneManager.switchTo(SceneFactory.createPortfolioView()), + () -> SceneManager.switchTo(SceneFactory.createTransactionView())); } diff --git a/src/main/resources/themes/default.css b/src/main/resources/themes/default.css index 9ae42b7..c64bfcd 100644 --- a/src/main/resources/themes/default.css +++ b/src/main/resources/themes/default.css @@ -111,3 +111,22 @@ -fx-cursor: hand; } +.newspaper-title { + -fx-font-size: 56px; + -fx-font-weight: 700; + -fx-text-fill: #000000; + -fx-padding: 30px; + -fx-effect: dropshadow(gaussian, rgba(0,0,0,0.3), 10, 0.5, 0, 5); +} + +.newspaper-med-text{ + -fx-font-size: 22px; + -fx-font-weight: 700; + -fx-text-fill: #000000; +} + +.newspaper-article{ + -fx-background-color: #EEEEEE; +} + + From 99b78476c2e02adf2643f0b075f9778c66258cea Mon Sep 17 00:00:00 2001 From: danieskj Date: Sat, 16 May 2026 15:29:18 +0200 Subject: [PATCH 2/2] fix(pom.xml): Change javadoc path --- pom.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pom.xml b/pom.xml index b0a2e89..b27cd17 100644 --- a/pom.xml +++ b/pom.xml @@ -68,6 +68,9 @@ org.apache.maven.plugins maven-javadoc-plugin 3.12.0 + + /usr/lib/jvm/java-25-openjdk/bin/javadoc +