From 8d70e35aead5ea92cbcfa1440dfb5c7bd352d372 Mon Sep 17 00:00:00 2001
From: Harry Linrui XU <xulr0820@hotmail.com>
Date: Wed, 22 Mar 2023 14:50:30 +0100
Subject: [PATCH] Generalised all methods that switch scene in Expenses

---
 .../demo/controller/ExpensesController.java   | 33 ++++++++++---------
 src/main/resources/view/Expenses.fxml         |  8 ++---
 2 files changed, 22 insertions(+), 19 deletions(-)

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 3eedc713..249eb6f4 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/ExpensesController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/ExpensesController.java
@@ -50,6 +50,14 @@ public class ExpensesController {
   @FXML
   private ComboBox<String> show;
 
+  @FXML
+  private Button incomeBtn;
+
+  @FXML
+  private Button overviewBtn;
+
+  @FXML
+  private Button returnBtn;
   @FXML
   private TableColumn<Expense, Double> amountColumn;
 
@@ -183,26 +191,21 @@ public class ExpensesController {
     FileHandling fileHandling = new FileHandling();
     fileHandling.writeItemRegisterToFile(expenseRegister, fileName);
   }
-  @FXML
-  protected void switchIncome(ActionEvent event) throws IOException {
-    saveDataToFile("Expenses");
-    FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/Income.fxml"));
-    Parent root = loader.load();
-    Stage stage = (Stage)((Node)event.getSource()).getScene().getWindow();
-    Scene scene = new Scene(root);
-    stage.setScene(scene);
-    stage.show();
-  }
 
   @FXML
-  public void switchOverview(ActionEvent event) throws IOException {
-    saveDataToFile("Expenses");
-    FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/Overview.fxml"));
+  public void switchScene(ActionEvent event) throws IOException {
+    FXMLLoader loader = new FXMLLoader();
+    if (event.getSource() == incomeBtn) {
+      loader.setLocation(SceneController.class.getResource("/view/Income.fxml"));
+    } else if (event.getSource() == overviewBtn) {
+      loader.setLocation(SceneController.class.getResource("/view/Overview.fxml"));
+    } else if (event.getSource() == returnBtn) {
+      loader.setLocation(SceneController.class.getResource("/view/FirstMenu.fxml"));
+    }
     Parent root = loader.load();
-    Stage stage = (Stage)((Node)event.getSource()).getScene().getWindow();
+    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/Expenses.fxml b/src/main/resources/view/Expenses.fxml
index 7985d641..400e0084 100644
--- a/src/main/resources/view/Expenses.fxml
+++ b/src/main/resources/view/Expenses.fxml
@@ -33,7 +33,7 @@
          <top>
             <HBox BorderPane.alignment="CENTER">
                <children>
-                  <Button mnemonicParsing="false" onAction="#switchIncome" text="Return ">
+                  <Button fx:id="returnBtn" mnemonicParsing="false" onAction="#switchScene" text="Return ">
                      <opaqueInsets>
                         <Insets left="100.0" />
                      </opaqueInsets>
@@ -119,14 +119,14 @@
                   </VBox>
                   <HBox prefHeight="100.0" prefWidth="200.0" GridPane.columnSpan="2" GridPane.rowIndex="2">
                      <children>
-                        <Button mnemonicParsing="false" onAction="#switchOverview" text="Overview">
+                        <Button fx:id="overviewBtn" mnemonicParsing="false" onAction="#switchScene" text="Overview">
                            <HBox.margin>
                               <Insets right="5.0" />
                            </HBox.margin></Button>
-                      <Button mnemonicParsing="false" onAction="#switchIncome" text="Income" />
+                      <Button fx:id="incomeBtn" mnemonicParsing="false" onAction="#switchScene" text="Income" />
                         <Button disable="true" mnemonicParsing="false" text="Expenses" />
                         <Button disable="true" mnemonicParsing="false" text="Savings" />
-                        <Button mnemonicParsing="false" onAction="#switchOverview" text="Next">
+                        <Button disable="true" mnemonicParsing="false" onAction="#switchScene" text="Next">
                            <HBox.margin>
                               <Insets left="170.0" />
                            </HBox.margin></Button>
-- 
GitLab