From 367cbacc2cda30598115e50de958c0149eb6fbfe Mon Sep 17 00:00:00 2001
From: Harry Linrui XU <xulr0820@hotmail.com>
Date: Wed, 15 Mar 2023 15:18:38 +0100
Subject: [PATCH] Tried to create new controllers

---
 .../demo/controller/ExpenseController.java    | 83 +++++++++++++++++++
 .../demo/controller/MenuController.java       | 62 ++++++++++++++
 .../view/monthly_budget_overview.fxml         | 15 ++--
 3 files changed, 152 insertions(+), 8 deletions(-)
 create mode 100644 src/main/java/no/ntnu/idatt1002/demo/controller/ExpenseController.java
 create mode 100644 src/main/java/no/ntnu/idatt1002/demo/controller/MenuController.java

diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/ExpenseController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/ExpenseController.java
new file mode 100644
index 00000000..06c46ca7
--- /dev/null
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/ExpenseController.java
@@ -0,0 +1,83 @@
+package no.ntnu.idatt1002.demo.controller;
+
+import java.io.IOException;
+import java.io.Serializable;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.cell.PropertyValueFactory;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import no.ntnu.idatt1002.demo.data.Economics.Expense;
+import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory;
+
+public class ExpenseController implements Initializable {
+
+  @FXML
+  private Button add;
+
+  @FXML
+  private ComboBox<?> show;
+
+  @FXML
+  private TableColumn<Expense, Double> amount;
+
+  @FXML
+  private TableColumn<Expense, ExpenseCategory> category;
+
+  @FXML
+  private TableColumn<Expense, String> date;
+
+  @FXML
+  private TableColumn<Expense, String> description;
+
+  @FXML
+  private TableView<Expense> expenseTableView;
+
+  ObservableList<Expense> expenses = FXCollections.observableArrayList(
+      new Expense("", 1000.00, true, ExpenseCategory.FOOD, "1/1/23")
+  );
+
+  @Override
+  public void initialize(URL url, ResourceBundle resourceBundle) {
+    amount.setCellValueFactory(new PropertyValueFactory<Expense, Double>("amount"));
+    category.setCellValueFactory(new PropertyValueFactory<Expense, ExpenseCategory>("category"));
+    date.setCellValueFactory(new PropertyValueFactory<Expense, String>("date"));
+    description.setCellValueFactory(new PropertyValueFactory<Expense, String>("description"));
+
+    expenseTableView.setItems(expenses);
+  }
+
+  public void addExpense(ActionEvent event) throws IOException {
+    FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/addExpense.fxml"));
+    Scene newScene = new Scene(loader.load());
+    Stage newStage = new Stage();
+    newStage.setScene(newScene);
+    newStage.setResizable(false);
+    newStage.initModality(Modality.APPLICATION_MODAL);
+
+    newStage.show();
+  }
+
+  public void editExpense(ActionEvent event) throws  IOException {
+
+  }
+
+  public void deleteExpense(ActionEvent event) throws  IOException {
+
+  }
+
+  public void switchIncome(ActionEvent event) {
+  }
+}
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/MenuController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/MenuController.java
new file mode 100644
index 00000000..87469182
--- /dev/null
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/MenuController.java
@@ -0,0 +1,62 @@
+package no.ntnu.idatt1002.demo.controller;
+
+import java.awt.Menu;
+import java.awt.event.ActionEvent;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ResourceBundle;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.fxml.FXML;
+import javafx.scene.Node;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.DatePicker;
+import javafx.scene.control.ProgressBar;
+import javafx.stage.Stage;
+
+public class MenuController implements Initializable {
+
+    @FXML
+    private Button addExpense;
+
+    @FXML
+    private DatePicker date;
+
+    @FXML
+    private Button food;
+
+    @FXML
+    private Button overview;
+
+    @FXML
+    private ProgressBar progressbar;
+
+
+
+  @Override
+  public void initialize(URL url, ResourceBundle resourceBundle) {
+
+  }
+
+  @FXML
+  public void switchStartMenu(ActionEvent event) throws IOException {
+      FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/FirstMenu.fxml"));
+      Parent root = loader.load();
+      Stage stage = (Stage)((Node)event.getSource()).getScene().getWindow();
+      Scene scene = new Scene(root);
+      stage.setScene(scene);
+      stage.show();
+  }
+
+
+  public void switchExpenses(ActionEvent event) throws IOException {
+      FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/Expenses.fxml"));
+      Parent root = loader.load();
+      Stage stage = (Stage)((Node)event.getSource()).getScene().getWindow();
+      Scene scene = new Scene(root);
+      stage.setScene(scene);
+      stage.show();
+  }
+}
diff --git a/src/main/resources/view/monthly_budget_overview.fxml b/src/main/resources/view/monthly_budget_overview.fxml
index 042c1f19..e3c5d422 100644
--- a/src/main/resources/view/monthly_budget_overview.fxml
+++ b/src/main/resources/view/monthly_budget_overview.fxml
@@ -19,8 +19,7 @@
 <?import javafx.scene.text.Font?>
 <?import javafx.scene.text.Text?>
 
-
-<AnchorPane xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1">
+<AnchorPane xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="no.ntnu.idatt1002.demo.controller.MenuController">
    <children>
       <ImageView fitHeight="400.0" fitWidth="600.0" pickOnBounds="true">
          <cursor>
@@ -45,7 +44,7 @@
                <children>
                   <VBox alignment="BOTTOM_RIGHT" GridPane.columnSpan="2">
                      <children>
-                        <DatePicker />
+                        <DatePicker fx:id="date" />
                         <HBox alignment="BOTTOM_CENTER" prefHeight="28.0" prefWidth="574.0">
                            <children>
                               <Label text="5000kr left" />
@@ -55,12 +54,12 @@
                   </VBox>
                   <AnchorPane GridPane.columnSpan="2" GridPane.rowIndex="1">
                      <children>
-                        <ProgressBar layoutX="10.0" layoutY="14.0" prefHeight="40.0" prefWidth="554.0" progress="0.72" />
+                        <ProgressBar fx:id="progressbar" layoutX="10.0" layoutY="14.0" prefHeight="40.0" prefWidth="554.0" progress="0.72" />
                      </children>
                   </AnchorPane>
                   <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="50.0" GridPane.columnSpan="2" GridPane.rowIndex="2">
                      <children>
-                        <Button contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Food">
+                        <Button fx:id="food" contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Food">
                            <graphic>
                               <ImageView fitHeight="63.0" fitWidth="87.0" pickOnBounds="true">
                                  <cursor>
@@ -72,7 +71,7 @@
                               </ImageView>
                            </graphic>
                         </Button>
-                        <Button contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Add expense">
+                        <Button fx:id="addExpense" contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Add expense">
                            <graphic>
                               <ImageView fitHeight="79.0" fitWidth="87.0" pickOnBounds="true">
                                  <cursor>
@@ -84,7 +83,7 @@
                               </ImageView>
                            </graphic>
                         </Button>
-                        <Button contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Overview">
+                        <Button fx:id="overview" contentDisplay="TOP" mnemonicParsing="false" prefHeight="125.0" prefWidth="125.0" text="Overview">
                            <graphic>
                               <ImageView fitHeight="63.0" fitWidth="87.0" pickOnBounds="true">
                                  <cursor>
@@ -119,7 +118,7 @@
          <top>
             <HBox prefHeight="51.0" prefWidth="600.0" BorderPane.alignment="CENTER">
                <children>
-                  <Button mnemonicParsing="false" onAction="#switchIncome" text="Return ">
+                  <Button mnemonicParsing="false" text="Return ">
                      <opaqueInsets>
                         <Insets left="100.0" />
                      </opaqueInsets>
-- 
GitLab