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