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