Skip to content

Commit

Permalink
Merge branch 'dev' into ui-portfolio-logic
Browse files Browse the repository at this point in the history
  • Loading branch information
pawelsa authored May 16, 2026
2 parents e8e80fa + c2b9790 commit 88d5eec
Show file tree
Hide file tree
Showing 10 changed files with 175 additions and 6 deletions.
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 @@ -100,4 +100,5 @@ public void setController(PortfolioController controller) {
searchQueryHandler = (query) -> controller.handleSearchQuery(query);
sortHandle = (sortAction) -> controller.sortSharesBy(sortAction);
}

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


0 comments on commit 88d5eec

Please sign in to comment.