From db97121b88542153a05c380f4691b9132cc04e22 Mon Sep 17 00:00:00 2001
From: HSoreide <sofie.scisly@gmail.com>
Date: Sun, 16 Apr 2023 16:30:04 +0200
Subject: [PATCH] Ingredients can be removed from the fridge

---
 .../controller/SuggestRecipesController.java  | 28 +++++++++++++++----
 src/main/resources/view/SuggestRecipes.fxml   | 12 ++++++--
 .../demo/data/recipes/FileHandlerTest.java    |  6 ++--
 3 files changed, 35 insertions(+), 11 deletions(-)

diff --git a/src/main/java/no/ntnu/idatt1002/demo/controller/SuggestRecipesController.java b/src/main/java/no/ntnu/idatt1002/demo/controller/SuggestRecipesController.java
index bae8e780..ba7622a9 100644
--- a/src/main/java/no/ntnu/idatt1002/demo/controller/SuggestRecipesController.java
+++ b/src/main/java/no/ntnu/idatt1002/demo/controller/SuggestRecipesController.java
@@ -9,10 +9,7 @@ import javafx.fxml.Initializable;
 import javafx.scene.Node;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
-import javafx.scene.control.Button;
-import javafx.scene.control.ButtonType;
-import javafx.scene.control.Dialog;
-import javafx.scene.control.DialogPane;
+import javafx.scene.control.*;
 import javafx.stage.Stage;
 import no.ntnu.idatt1002.demo.data.Economics.Expense;
 import no.ntnu.idatt1002.demo.data.Economics.FileHandling;
@@ -22,6 +19,7 @@ import no.ntnu.idatt1002.demo.data.recipes.*;
 
 import java.io.IOException;
 import java.net.URL;
+import java.util.List;
 import java.util.Optional;
 import java.util.ResourceBundle;
 
@@ -37,7 +35,10 @@ public class SuggestRecipesController implements Initializable {
     @FXML
     private Button goBackBtn;
 
-    private ObservableList<FoodItem> fridge;
+    @FXML
+    private ListView<String> fridgeList;
+
+    private ObservableList<String> fridge;
 
     private ObservableList<Recipe> recipes;
 
@@ -61,7 +62,18 @@ public class SuggestRecipesController implements Initializable {
         }else if(clickedButton.get() == ButtonType.CANCEL) {
             System.out.println("Close the dialog");
         }
+    }
+
+    @FXML
+    private void removeIngredient(ActionEvent event) throws IOException {
 
+        System.out.println("Remove the selected from fridge!");
+        String toRemove = fridgeList.getSelectionModel().getSelectedItem();
+        ingredientsAtHand.removeIngredient(FoodItem.valueOf(toRemove.toUpperCase()));
+        //TODO: Remove toUppercase solution above.
+        //TODO: Consider factoring out to a update method.
+        fridge = FXCollections.observableArrayList(ingredientsAtHand.getIngredientsAtHand().stream().map(foodItem -> foodItem.label).toList());
+        fridgeList.setItems(fridge);
 
     }
 
@@ -85,7 +97,11 @@ public class SuggestRecipesController implements Initializable {
     public void initialize(URL url, ResourceBundle resourceBundle) {
 
          ingredientsAtHand = FileHandler.readIngredientsAtHand("Fridge");
-         fridge = FXCollections.observableArrayList(ingredientsAtHand.getIngredientsAtHand());
+         /*fridge = FXCollections.observableArrayList(ingredientsAtHand.getIngredientsAtHand());*/
+        fridge = FXCollections.observableArrayList(ingredientsAtHand.getIngredientsAtHand().stream().map(foodItem -> foodItem.label).toList());
+        List<String> fridgeLabels = fridge;
+        /*List<String> fridgeLabels = fridge.stream().map(foodItem -> foodItem.label).toList();*/
+         fridgeList.setItems(fridge);
 
          recipeRegister = FileHandler.readRecipeRegister("Recipes");
          recipes = FXCollections.observableArrayList(recipeRegister.getRecipes());
diff --git a/src/main/resources/view/SuggestRecipes.fxml b/src/main/resources/view/SuggestRecipes.fxml
index 19bffffa..181d21fe 100644
--- a/src/main/resources/view/SuggestRecipes.fxml
+++ b/src/main/resources/view/SuggestRecipes.fxml
@@ -26,10 +26,18 @@
                         </Label>
                      </children>
                   </Pane>
-                  <ListView prefHeight="472.0" prefWidth="421.0" />
+                  <ListView fx:id="fridgeList" prefHeight="470.0" prefWidth="378.0">
+                     <VBox.margin>
+                        <Insets right="20.0" />
+                     </VBox.margin></ListView>
                   <Pane prefHeight="47.0" prefWidth="421.0">
                      <children>
-                        <Button fx:id="addToFridgeBtn" layoutX="80.0" layoutY="9.0" mnemonicParsing="false" onAction="#addIngredient" text="Add another available ingredient">
+                        <Button fx:id="addToFridgeBtn" layoutX="138.0" layoutY="9.0" mnemonicParsing="false" onAction="#addIngredient" text="Add another available ingredient">
+                           <font>
+                              <Font size="14.0" />
+                           </font>
+                        </Button>
+                        <Button fx:id="removeBtn" layoutX="31.0" layoutY="11.0" mnemonicParsing="false" onAction="#removeIngredient" text="Remove">
                            <font>
                               <Font size="14.0" />
                            </font>
diff --git a/src/test/java/no/ntnu/idatt1002/demo/data/recipes/FileHandlerTest.java b/src/test/java/no/ntnu/idatt1002/demo/data/recipes/FileHandlerTest.java
index 9e3ad51f..40f1718f 100644
--- a/src/test/java/no/ntnu/idatt1002/demo/data/recipes/FileHandlerTest.java
+++ b/src/test/java/no/ntnu/idatt1002/demo/data/recipes/FileHandlerTest.java
@@ -50,7 +50,7 @@ class FileHandlerTest {
     @DisplayName("Write recipe register correctly to file as text.")
     void writeRecipeRegisterToFile() throws FileNotFoundException {
         assertAll(() -> FileHandler.writeRegister(recipeRegister, "RecipeRegister"));
-        FileHandler.readToTerminal("RecipeRegister");
+        //FileHandler.readToTerminal("RecipeRegister");
     }
 
     @Test
@@ -66,7 +66,7 @@ class FileHandlerTest {
         // Write the register object to file and read to terminal:
         FileHandler.writeRegister(registerReadFromTestFile, "ReadAndWrittenRegister");
 
-        FileHandler.readToTerminal("ReadAndWrittenRegister");
+        //FileHandler.readToTerminal("ReadAndWrittenRegister");
 
         // Another iteration to spot accumulating spaces or new lines.
         RecipeRegister secondRegister = FileHandler.readRecipeRegister("ReadAndWrittenRegister");
@@ -82,7 +82,7 @@ class FileHandlerTest {
     @DisplayName("Write ingredients at hand to file.")
     void writeIngredientsAtHandToFile() throws FileNotFoundException {
         assertAll(() -> FileHandler.writeIngredientsAtHand(ingredientsAtHand, "AtHandRegister"));
-        FileHandler.readToTerminal("AtHandRegister");
+        //FileHandler.readToTerminal("AtHandRegister");
     }
 
 
-- 
GitLab