From 892b0cf38ee7da0b81738e9178ad769dcbc48934 Mon Sep 17 00:00:00 2001
From: Harry Linrui XU <xulr0820@hotmail.com>
Date: Thu, 23 Mar 2023 14:42:08 +0100
Subject: [PATCH] Refactored edit method, such that expenses are not edited if
 cancel button is hit. Delete button will now not do anything unless expense
 is selected

---
 .../demo/controller/AddExpenseController.java | 39 ++++++++++++++-----
 .../demo/controller/ExpensesController.java   |  8 ++--
 2 files changed, 34 insertions(+), 13 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 23682f82..0a0edcfc 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/AddExpenseController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/AddExpenseController.java
@@ -69,22 +69,41 @@ public class AddExpenseController {
   }
 
   public void setExpense(Expense expense) { //TODO NEED CANCEL BUTTON TO REMOVE THE CHANGES IF CANCEL IS PRESSED
-    dateField.textProperty().bindBidirectional(new SimpleStringProperty(expense.getDate().toString()));
-    amountField.textProperty().bindBidirectional(expense.amountProperty(), NumberFormat.getNumberInstance()); //TODO AMOUNT IS STORED WITH COMMA, WHICH IS NOT ALLOWED
+    chosenExpense = new Expense(expense.getDescription(), expense.getAmount(), expense.isRecurring(), expense.getCategory(), expense.getDate());
+    chosenExpense.descriptionProperty().bindBidirectional(expense.descriptionProperty());
+    chosenExpense.amountProperty().bindBidirectional(expense.amountProperty());
+    chosenExpense.recurringProperty().bindBidirectional(expense.recurringProperty());
+    //chosenExpense.().bindBidirectional(expense.descriptionProperty());
+    //chosenExpense.().bindBidirectional(expense.descriptionProperty());
+    descriptionField.textProperty().set(expense.getDescription());
+    amountField.textProperty().setValue(String.valueOf(expense.getAmount()));
+    recurringBox.setValue(expense.isRecurring());
+
+
+    //new SimpleStringProperty(datePicker.getValue().toString()).bindBidirectional(new SimpleStringProperty(expense.getDate().toString()));
+    //Bind this expense's fields with the argument object's fields. If cancel is pressed - do nothing. If ok is pressed, bind the textfields with this expsense
+
+    /*amountField.textProperty().bindBidirectional(expense.amountProperty(), NumberFormat.getNumberInstance()); //TODO AMOUNT IS STORED WITH COMMA, WHICH IS NOT ALLOWED
     descriptionField.textProperty().bindBidirectional(expense.descriptionProperty());
     //categoryBox.valueProperty().bindBidirectional(expense.getCategory());
-    recurringBox.valueProperty().bindBidirectional(expense.recurringProperty());
+    recurringBox.valueProperty().bindBidirectional(expense.recurringProperty());*/
   }
 
   @FXML
   public void pressOkBtn(ActionEvent event) {
-    LocalDate date = LocalDate.parse(dateField.getText());
-    double amount = Double.parseDouble(amountField.getText());
-    String description = descriptionField.getText();
-    ExpenseCategory category = getCategory();
-    boolean recurring = isRecurring();
-    newExpense = new Expense(description, amount, recurring, category, date);
-    System.out.println(date + " " + amount + " " + description + " " + category + " " + recurring);
+    if (newExpense == null) {
+      LocalDate date = datePicker.getValue();
+      double amount = Double.parseDouble(amountField.getText());
+      String description = descriptionField.getText();
+      ExpenseCategory category = getCategory();
+      boolean recurring = isRecurring();
+      newExpense = new Expense(description, amount, recurring, category, date);
+    }
+    if (chosenExpense != null) {
+      chosenExpense.setDescription((descriptionField.getText()));
+      chosenExpense.setAmount(Double.parseDouble(amountField.getText()));
+      chosenExpense.setRecurring(recurringBox.getValue());
+    }
 
     final Node source = (Node) event.getSource();
     ((Stage) source.getScene().getWindow()).close();
diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/ExpensesController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/ExpensesController.java
index 83a74789..9f22b340 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/ExpensesController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/ExpensesController.java
@@ -160,10 +160,12 @@ public class ExpensesController {
 
   @FXML
   public void handleDeleteBtn(ActionEvent event) {
-    Optional<ButtonType> isConfirmed = showConfirmationDialog(
-    );
+    Expense chosenExpense = expenseTableView.getSelectionModel().getSelectedItem();
+    if (chosenExpense == null) {
+      return;
+    }
+    Optional<ButtonType> isConfirmed = showConfirmationDialog();
     if (isConfirmed.isPresent() && isConfirmed.get() == ButtonType.OK) {
-      Expense chosenExpense = expenseTableView.getSelectionModel().getSelectedItem();
       expenseRegister.removeItem(chosenExpense);
       refreshObservableList();
     }
-- 
GitLab