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 6f290f8..4c8f571 100644 --- a/src/main/java/edu/ntnu/idi/idatt/view/SceneFactory.java +++ b/src/main/java/edu/ntnu/idi/idatt/view/SceneFactory.java @@ -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 { @@ -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(); + } + } 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 88268c0..86df130 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 @@ -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())); } diff --git a/src/main/java/edu/ntnu/idi/idatt/view/primary/transactions/TransactionController.java b/src/main/java/edu/ntnu/idi/idatt/view/primary/transactions/TransactionController.java new file mode 100644 index 0000000..d402ccc --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt/view/primary/transactions/TransactionController.java @@ -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 { + + private UserSession session = UserSession.getInstance(); + private final ArrayList 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); + } + +} diff --git a/src/main/java/edu/ntnu/idi/idatt/view/primary/transactions/TransactionModel.java b/src/main/java/edu/ntnu/idi/idatt/view/primary/transactions/TransactionModel.java new file mode 100644 index 0000000..30d51ee --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt/view/primary/transactions/TransactionModel.java @@ -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 transactionList = FXCollections.observableArrayList(); + + public ObservableList getTransactionList() { + return transactionList; + } + +} 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 new file mode 100644 index 0000000..6ee7cac --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt/view/primary/transactions/TransactionView.java @@ -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) { + + } + +}