Skip to content

UI newspaper view #56

Merged
merged 2 commits into from
May 16, 2026
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.12.0</version>
<configuration>
<javadocExecutable>/usr/lib/jvm/java-25-openjdk/bin/javadoc</javadocExecutable>
</configuration>
</plugin>


Expand Down
17 changes: 16 additions & 1 deletion src/main/java/edu/ntnu/idi/idatt/view/SceneFactory.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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();
}

}
Original file line number Diff line number Diff line change
@@ -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());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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<NewspaperModel> {

private final ArrayList<NewspaperComponent> 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);
}

}
Original file line number Diff line number Diff line change
@@ -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<NewspaperComponent> newspaperComponentsList = FXCollections.observableArrayList();

public ObservableList<NewspaperComponent> getNewspaperComponentsList() {
return newspaperComponentsList;
}
}
Original file line number Diff line number Diff line change
@@ -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){

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()));

}

Expand Down
19 changes: 19 additions & 0 deletions src/main/resources/themes/default.css
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}