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
+
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;
+}
+
+