Skip to content
Snippets Groups Projects
Commit 8eb43a5e authored by Harry Linrui XU's avatar Harry Linrui XU
Browse files

Implemented delete functionality using an alert box

parent 2c87ea20
No related branches found
No related tags found
10 merge requests!43Merging frontend-testing into master,!38"Made progressbar dynamic in accordance to spending. Added balance field....,!37Made the sub progress bars respond to changes in expense,!32Added input validation to add dialog boxes.,!30Redesigned scenes,!29Redesigned scenes,!28Redesigned scenes,!26Redesigned Main menu and expense/income windows,!24Merging frontend-testing with master,!23Merging frontend-testing and master
......@@ -3,6 +3,7 @@ package no.ntnu.idatt1002.demo.controller;
import java.io.File;
import java.io.IOException;
import java.util.Optional;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
......@@ -11,7 +12,10 @@ import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Dialog;
import javafx.scene.control.TableColumn;
......@@ -37,15 +41,15 @@ public class ExpensesController {
private DialogMode mode;
@FXML
private Button add;
private Button addBtn;
@FXML
private TextField descriptionField;
@FXML
private Button edit;
private Button editBtn;
@FXML
private Button delete;
private Button deleteBtn;
@FXML
private ComboBox<String> show;
......@@ -77,10 +81,10 @@ public class ExpensesController {
show.setItems(filter);
show.setValue("All");
Expense newExpense = new Expense(99, true, ExpenseCategory.FOOD, "1/1/23");
expenseRegister.addItem(newExpense);
expenses = FXCollections.observableArrayList(expenseRegister.getItems());
dateColumn.setCellValueFactory(new PropertyValueFactory<Expense, String>("date"));
amountColumn.setCellValueFactory(new PropertyValueFactory<Expense, Double>("amount"));
categoryColumn.setCellValueFactory(new PropertyValueFactory<Expense, ExpenseCategory>("category"));
......@@ -116,11 +120,11 @@ public class ExpensesController {
// Get the controller for the loaded FXML file
AddExpenseController dialogController = loader.getController();
if (event.getSource().equals(add)) {
if (event.getSource().equals(addBtn)) {
mode = DialogMode.ADD;
dialogTitle = "Add expense";
} else if (event.getSource().equals(edit) && expenseTableView.getSelectionModel().getSelectedItem() != null) {
} else if (event.getSource().equals(editBtn) && expenseTableView.getSelectionModel().getSelectedItem() != null) {
mode = DialogMode.EDIT;
dialogTitle = "Edit expense";
newExpense = expenseTableView.getSelectionModel().getSelectedItem();
......@@ -151,8 +155,23 @@ public class ExpensesController {
}
public void handleDeleteButton(ActionEvent event) throws IOException {
@FXML
public void handleDeleteBtn(ActionEvent event) {
Optional<ButtonType> isConfirmed = showConfirmationDialog("Confirm Delete", "Delete Confirmation",
"Are you sure you would like to delete the selected expense?");
if (isConfirmed.isPresent() && isConfirmed.get() == ButtonType.OK) {
int selectedIdx = expenseTableView.getSelectionModel().getSelectedIndex();
expenses.remove(selectedIdx);
}
}
private Optional<ButtonType> showConfirmationDialog(String title, String headerText, String contentText) {
Alert alert = new Alert(AlertType.CONFIRMATION);
alert.setTitle(title);
alert.setHeaderText(headerText);
alert.setContentText(contentText);
return alert.showAndWait();
}
public void loadDataFromFile(String fileName) {
......
......@@ -73,7 +73,7 @@
<children>
<HBox alignment="BOTTOM_LEFT" prefWidth="410.0" spacing="5.0">
<children>
<Button fx:id="add" alignment="TOP_CENTER" mnemonicParsing="false" onAction="#handleAddButton" text="Add" textAlignment="CENTER">
<Button fx:id="addBtn" alignment="TOP_CENTER" mnemonicParsing="false" onAction="#handleAddButton" text="Add" textAlignment="CENTER">
<graphic>
<ImageView fitHeight="19.0" fitWidth="16.0" pickOnBounds="true" preserveRatio="true">
<image>
......@@ -81,7 +81,7 @@
</image>
</ImageView>
</graphic></Button>
<Button fx:id="edit" alignment="TOP_CENTER" mnemonicParsing="false" onAction="#handleEditButton" text="Edit" textAlignment="CENTER">
<Button fx:id="editBtn" alignment="TOP_CENTER" mnemonicParsing="false" onAction="#handleEditButton" text="Edit" textAlignment="CENTER">
<graphic>
<ImageView fitHeight="19.0" fitWidth="16.0" pickOnBounds="true" preserveRatio="true">
<image>
......@@ -89,7 +89,7 @@
</image>
</ImageView>
</graphic></Button>
<Button alignment="TOP_CENTER" mnemonicParsing="false" text="Delete" textAlignment="CENTER">
<Button fx:id="deleteBtn" alignment="TOP_CENTER" mnemonicParsing="false" onAction="#handleDeleteBtn" text="Delete" textAlignment="CENTER">
<graphic>
<ImageView fitHeight="19.0" fitWidth="16.0" pickOnBounds="true" preserveRatio="true">
<image>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment