Skip to content
Snippets Groups Projects
Commit 94c03500 authored by HSoreide's avatar HSoreide
Browse files

Ingredients can be added to the fridge

parent db97121b
No related branches found
No related tags found
2 merge requests!42Hs frontend recipes,!41Hs frontend recipes
......@@ -3,11 +3,15 @@ package no.ntnu.idatt1002.demo.controller;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.DialogPane;
import javafx.scene.control.ListView;
import javafx.event.ActionEvent;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
......@@ -18,7 +22,9 @@ import java.util.stream.Collectors;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import no.ntnu.idatt1002.demo.data.recipes.FileHandler;
import no.ntnu.idatt1002.demo.data.recipes.FoodItem;
import no.ntnu.idatt1002.demo.data.recipes.IngredientsAtHand;
public class AddIngredientController implements Initializable {
......@@ -28,14 +34,14 @@ public class AddIngredientController implements Initializable {
);*/
/*List<String> testIngredients = Arrays.asList("Tester words", "Another tester word", "tomatoes that are canned", "minced meat", "blueberries");*/
/*
String[] testIngredients = {"Tester words", "Another tester word", "tomatoes that are canned", "minced meat", "blueberries"};
*/
private List<String> stringIngredients = Arrays.stream(FoodItem.values()).toList().stream().map(value -> value.label).toList();
private int noLengthOfList = stringIngredients.size();
String[] arrayIngredients = stringIngredients.stream().toArray(String[] ::new);
//private String[] arrayIngredients
private ObservableList<String> ingredients = FXCollections.observableArrayList(stringIngredients);
private ObservableList<String> ingredients;
private String[] ingredientsList;
private IngredientsAtHand ingredientsAtHand;
@FXML
private Button addBtn;
......@@ -49,12 +55,24 @@ public class AddIngredientController implements Initializable {
@FXML
private Button searchBtn;
@FXML
void addToFridge(ActionEvent event) {
void addToFridge(ActionEvent event) throws IOException {
System.out.printf("Add ingredient to fridge");
String item = listView.getSelectionModel().getSelectedItem();
System.out.printf("The item was: %s", item);
ingredientsAtHand.addIngredient(FoodItem.valueOf(item.replace(" ", "_").toUpperCase()));
FileHandler.writeIngredientsAtHand(ingredientsAtHand, "Fridge");
/* FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/view/SuggestRecipesController.fxml"));
loader.load();
// Location is not set.
SuggestRecipesController suggestRecipesController = loader.getController();
suggestRecipesController.addToFridge(item);*/
// Add to existing at hand and write to file. if not null/blank
}
......@@ -63,19 +81,25 @@ public class AddIngredientController implements Initializable {
void search(ActionEvent event) {
System.out.printf("Searching for ingredient to fridge");
listView.getItems().clear();
listView.getItems().addAll(searchList(searchBar.getText(), arrayIngredients));
listView.getItems().addAll(searchList(searchBar.getText(), ingredientsList));
}
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
/* ObservableList ingredients = FXCollections.observableArrayList(testIngredients);*/
ingredientsAtHand = FileHandler.readIngredientsAtHand("AtHandRegister");
/* ObservableList ingredients = FXCollections.observableArrayList(testIngredients);*/
/* ObservableList<FoodItem> ingredients = FXCollections.observableArrayList(
FoodItem.values());*/
//TODO: Move into initializer? - Tidy up!
List<String> stringIngredients = Arrays.stream(FoodItem.values()).toList().stream().map(value -> value.label).toList();
int noLengthOfList = stringIngredients.size();
ingredientsList = stringIngredients.stream().toArray(String[] ::new);
//private String[] arrayIngredients
ingredients = FXCollections.observableArrayList(stringIngredients);
// Fill list with ingredients
listView.setItems(ingredients);
......
......@@ -32,6 +32,9 @@ public class SuggestRecipesController implements Initializable {
@FXML
private Button addToFridgeBtn;
@FXML
private Button removeBtn;
@FXML
private Button goBackBtn;
......@@ -57,7 +60,14 @@ public class SuggestRecipesController implements Initializable {
dialog.setTitle("Add ingredient to fridge");
Optional<ButtonType> clickedButton = dialog.showAndWait();
if (clickedButton.get() == ButtonType.OK) {
if (clickedButton.get() == ButtonType.APPLY) {
// Refresh ingredientsAtHand.
ingredientsAtHand = FileHandler.readIngredientsAtHand("Fridge");
//TODO: Duplicate
fridge = FXCollections.observableArrayList(ingredientsAtHand.getIngredientsAtHand().stream().map(foodItem -> foodItem.label).toList());
fridgeList.setItems(fridge);
System.out.println("Clickecked OK!");
}else if(clickedButton.get() == ButtonType.CANCEL) {
System.out.println("Close the dialog");
......@@ -65,11 +75,21 @@ public class SuggestRecipesController implements Initializable {
}
@FXML
private void removeIngredient(ActionEvent event) throws IOException {
private void removeFromFridge(ActionEvent event) throws IOException {
System.out.println("Remove the selected from fridge!");
String toRemove = fridgeList.getSelectionModel().getSelectedItem();
ingredientsAtHand.removeIngredient(FoodItem.valueOf(toRemove.toUpperCase()));
ingredientsAtHand.removeIngredient(FoodItem.valueOf(toRemove.replace(" ", "_").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);
}
public void addToFridge(String ingredient) {
System.out.println("Add to fridge!");
String toRemove = fridgeList.getSelectionModel().getSelectedItem();
ingredientsAtHand.addIngredient(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());
......@@ -77,6 +97,7 @@ public class SuggestRecipesController implements Initializable {
}
@FXML
private void goBack(ActionEvent event) throws IOException {
FXMLLoader loader = new FXMLLoader();
......
......@@ -21,7 +21,9 @@ public class IngredientsAtHand {
* @param ingredient The ingredient object to add to the collection of ingredients at hand.
*/
public void addIngredient(FoodItem ingredient) {
this.ingredientsAtHand.add(ingredient);
if(!this.atHand(ingredient)) {
this.ingredientsAtHand.add(ingredient);
}
}
//TODO: Unit tests and javadoc
......
POTATO
MILK
LEMON
MINCED_MEAT
\ No newline at end of file
MINCED_MEAT
YELLOW_CHEESE
ORANGE
SALSA_SAUCE
ONION
......@@ -24,7 +24,7 @@
<Insets />
</HBox.margin>
</TextField>
<Button fx:id="searchBtn" alignment="CENTER" contentDisplay="CENTER" defaultButton="true" mnemonicParsing="false" onAction="#search" text="Search" textAlignment="CENTER">
<Button fx:id="searchBtn" alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" onAction="#search" text="Search" textAlignment="CENTER">
<font>
<Font size="14.0" />
</font>
......@@ -47,7 +47,7 @@
</ListView>
<Pane prefHeight="81.0" prefWidth="600.0">
<children>
<Button fx:id="addBtn" layoutX="275.0" layoutY="7.0" mnemonicParsing="false" onAction="#addToFridge" text="ADD">
<Button fx:id="addBtn" defaultButton="true" layoutX="275.0" layoutY="7.0" mnemonicParsing="false" onAction="#addToFridge" text="ADD">
<font>
<Font size="14.0" />
</font>
......@@ -69,7 +69,7 @@
</Label>
</header>
<buttonTypes>
<ButtonType fx:constant="OK" />
<ButtonType fx:constant="APPLY" />
<ButtonType fx:constant="CANCEL" />
</buttonTypes>
</DialogPane>
......@@ -37,7 +37,7 @@
<Font size="14.0" />
</font>
</Button>
<Button fx:id="removeBtn" layoutX="31.0" layoutY="11.0" mnemonicParsing="false" onAction="#removeIngredient" text="Remove">
<Button fx:id="removeBtn" layoutX="31.0" layoutY="11.0" mnemonicParsing="false" onAction="#removeFromFridge" text="Remove">
<font>
<Font size="14.0" />
</font>
......
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