Skip to content

Commit

Permalink
feat: Implement barebone TransactionMVC for TransactionArchive
Browse files Browse the repository at this point in the history
  • Loading branch information
pawelsa committed May 13, 2026
1 parent c151758 commit 2345a7e
Show file tree
Hide file tree
Showing 5 changed files with 129 additions and 1 deletion.
15 changes: 15 additions & 0 deletions src/main/java/edu/ntnu/idi/idatt/view/SceneFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
import edu.ntnu.idi.idatt.view.primary.stock.StockController;
import edu.ntnu.idi.idatt.view.primary.stock.StockModel;
import edu.ntnu.idi.idatt.view.primary.stock.StockView;
import edu.ntnu.idi.idatt.view.primary.transactions.TransactionController;
import edu.ntnu.idi.idatt.view.primary.transactions.TransactionModel;
import edu.ntnu.idi.idatt.view.primary.transactions.TransactionView;
import javafx.scene.Parent;

public class SceneFactory {
Expand Down Expand Up @@ -52,4 +55,16 @@ public static Parent createStockView(Stock stock) {
return view.getInstance();
}

public static Parent createTransactionView() {

TransactionModel model = new TransactionModel();
TransactionView view = new TransactionView();
TransactionController controller = new TransactionController(model);

view.setModel(model);
view.setController(controller);

return view.getInstance();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public Parent createMenu() {
return UIFactory.createMenu("Account",
List.of(" • Portfolio", " • Transactions"),
() -> System.out.println("Portfolio clicked!"),
() -> System.out.println("Transaction clicked!"));
() -> SceneManager.switchTo(SceneFactory.createTransactionView()));

}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package edu.ntnu.idi.idatt.view.primary.transactions;

import java.util.ArrayList;

import edu.ntnu.idi.idatt.model.transaction.Transaction;
import edu.ntnu.idi.idatt.session.UserSession;
import edu.ntnu.idi.idatt.view.components.AbstractController;
import edu.ntnu.idi.idatt.view.components.elements.TransactionComponent;

public class TransactionController extends AbstractController<TransactionModel> {

private UserSession session = UserSession.getInstance();
private final ArrayList<TransactionComponent> loadedTransactionComponents = new ArrayList<>();

public TransactionController(TransactionModel model) {
super(model);
for (Transaction transaction : session.getPlayer().getTransactionArchive().getTransactions(1)) {
TransactionComponent transactionComponent = new TransactionComponent(transaction);
loadedTransactionComponents.add(transactionComponent);
}
model.transactionList.addAll(loadedTransactionComponents);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package edu.ntnu.idi.idatt.view.primary.transactions;

import edu.ntnu.idi.idatt.view.components.Model;
import edu.ntnu.idi.idatt.view.components.elements.TransactionComponent;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;

public class TransactionModel implements Model {

ObservableList<TransactionComponent> transactionList = FXCollections.observableArrayList();

public ObservableList<TransactionComponent> getTransactionList() {
return transactionList;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package edu.ntnu.idi.idatt.view.primary.transactions;

import java.util.List;

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.Insets;
import javafx.geometry.Pos;
import javafx.scene.Parent;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;

public class TransactionView extends AbstractViewUI {

HBox root;

@Override
public Parent createContent() {
root = new HBox();
root.getStyleClass().add("primary");
root.setMinWidth(Region.USE_PREF_SIZE);
root.setAlignment(Pos.CENTER);
root.setSpacing(20.0);

ScrollPane wrapper = new ScrollPane();
wrapper.setContent(root);
wrapper.setPadding(new Insets(20.0, 0, 20.0, 0));
wrapper.setFitToWidth(true);
wrapper.setFitToHeight(true);
wrapper.getStyleClass().add("primary");

return wrapper;
}

@Override
public Parent createNavigation() {
return UIFactory.createNavigation("Transactions", List.of());
}

@Override
public Parent createHeader() {
return UIFactory.createHeader("Search for transactions...",
query -> System.out.println(query));
}

@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"),
() -> System.out.println("Portfolio clicked!"),
() -> System.out.println("Transaction clicked!"));

}

public void setModel(TransactionModel model) {
Bindings.bindContent(root.getChildren(), model.getTransactionList());
}

public void setController(TransactionController controller) {

}

}

0 comments on commit 2345a7e

Please sign in to comment.