From db5b273ccf8720446eb6f3f9e83d5aa974336f49 Mon Sep 17 00:00:00 2001
From: Harry Linrui XU <xulr0820@hotmail.com>
Date: Fri, 17 Mar 2023 14:05:50 +0100
Subject: [PATCH] Made addExpense comboboxes offer options to choose from

---
 .../demo/controller/AddExpenseController.java | 34 ++++++++++++++++++-
 src/main/resources/view/AddExpense.fxml       | 28 +++++++--------
 2 files changed, 46 insertions(+), 16 deletions(-)

diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/AddExpenseController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/AddExpenseController.java
index 3a59ab48..ebdf0451 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/AddExpenseController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/AddExpenseController.java
@@ -1,8 +1,11 @@
 package no.ntnu.idatt1002.demo.controller;
 
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
 import javafx.fxml.FXML;
+import javafx.scene.control.ComboBox;
 import javafx.scene.control.TextField;
-import no.ntnu.idatt1002.demo.data.Economics.Expense;
+import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory;
 
 public class AddExpenseController {
 
@@ -15,9 +18,38 @@ public class AddExpenseController {
   @FXML
   private TextField amountField;
 
+  @FXML
+  private ComboBox<ExpenseCategory> categoryBox;
+
+  @FXML
+  private ComboBox<String> recurringBox;
 
   @FXML
   public void initialize() {
+    ObservableList<ExpenseCategory> expenseCategories = FXCollections.observableArrayList(ExpenseCategory.values());
+    categoryBox.setItems(expenseCategories);
+
+    ObservableList<String> recurring = FXCollections.observableArrayList("Yes", "No");
+    recurringBox.setItems(recurring);
+  }
+
+  public String getDate() {
+    return dateField.getText();
+  }
+
+  public String getDescription() {
+    return descriptionField.getText();
+  }
+
+  public double getAmount() {
+    return Double.parseDouble(amountField.getText());
+  }
+
+  public ExpenseCategory getCategory() {
+    return categoryBox.getValue();
+  }
 
+  public boolean isRecurring() {
+    return recurringBox.getValue().equals("Yes");
   }
 }
diff --git a/src/main/resources/view/AddExpense.fxml b/src/main/resources/view/AddExpense.fxml
index 40d0d50a..72ec14ca 100644
--- a/src/main/resources/view/AddExpense.fxml
+++ b/src/main/resources/view/AddExpense.fxml
@@ -4,28 +4,26 @@
 <?import javafx.scene.control.DialogPane?>
 <?import javafx.scene.control.Label?>
 <?import javafx.scene.control.TextField?>
-<?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.ColumnConstraints?>
 <?import javafx.scene.layout.GridPane?>
 <?import javafx.scene.layout.RowConstraints?>
 
-<DialogPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="480.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1">
-    <expandableContent>
-      <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="200.0" prefWidth="320.0" />
-    </expandableContent>
+
+<DialogPane xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="no.ntnu.idatt1002.demo.controller.AddExpenseController">
    <content>
       <GridPane>
-        <columnConstraints>
-          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
-          <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
-        </columnConstraints>
-        <rowConstraints>
+         <columnConstraints>
+            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+            <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
+         </columnConstraints>
+         <rowConstraints>
+            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
+            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
             <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
             <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
-          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
-          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
-          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
-        </rowConstraints>
+         </rowConstraints>
          <children>
             <Label text="Date:" />
             <Label text="Amount:" GridPane.rowIndex="1" />
@@ -36,7 +34,7 @@
             <TextField fx:id="amountField" promptText="100" GridPane.columnIndex="1" GridPane.rowIndex="1" />
             <TextField fx:id="descriptionField" promptText="(optional)" GridPane.columnIndex="1" GridPane.rowIndex="2" />
             <ComboBox fx:id="categoryBox" prefWidth="150.0" promptText="Food" GridPane.columnIndex="1" GridPane.rowIndex="3" />
-            <ComboBox fx:id="recurringBox" prefWidth="150.0" promptText="True" GridPane.columnIndex="1" GridPane.rowIndex="4" />
+            <ComboBox fx:id="recurringBox" prefWidth="150.0" promptText="No" GridPane.columnIndex="1" GridPane.rowIndex="4" />
          </children>
       </GridPane>
    </content>
-- 
GitLab