From 6cfd6ab82cd73ceb4edaf751b21e0a66356b70a2 Mon Sep 17 00:00:00 2001 From: Natalia Cholewa Date: Thu, 22 Jan 2026 17:21:40 +0100 Subject: [PATCH] feat: shopping list view --- .../client/scenes/FoodpalApplicationCtrl.java | 13 ++++ .../scenes/shopping/ShoppingListCtrl.java | 66 +++++++++++++++++++ .../client/scenes/FoodpalApplication.fxml | 3 + .../client/scenes/shopping/ShoppingList.fxml | 15 +++++ .../main/resources/locale/lang_en.properties | 2 + .../main/resources/locale/lang_nl.properties | 2 + .../main/resources/locale/lang_pl.properties | 2 + .../main/resources/locale/lang_tok.properties | 2 + .../main/resources/locale/lang_tr.properties | 2 + 9 files changed, 107 insertions(+) create mode 100644 client/src/main/java/client/scenes/shopping/ShoppingListCtrl.java create mode 100644 client/src/main/resources/client/scenes/shopping/ShoppingList.fxml diff --git a/client/src/main/java/client/scenes/FoodpalApplicationCtrl.java b/client/src/main/java/client/scenes/FoodpalApplicationCtrl.java index 3242d21..327941c 100644 --- a/client/src/main/java/client/scenes/FoodpalApplicationCtrl.java +++ b/client/src/main/java/client/scenes/FoodpalApplicationCtrl.java @@ -33,6 +33,9 @@ import commons.ws.messages.UpdateRecipeMessage; import jakarta.inject.Inject; import javafx.application.Platform; import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.Label; @@ -41,6 +44,7 @@ import javafx.scene.control.ListView; import javafx.scene.control.TextInputDialog; import javafx.scene.control.ToggleButton; import javafx.scene.paint.Color; +import javafx.stage.Stage; import org.apache.commons.lang3.NotImplementedException; import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; @@ -611,6 +615,15 @@ public class FoodpalApplicationCtrl implements LocaleAware { updatedBadgeTimer.playFromStart(); } + public void openShoppingListWindow() throws IOException { + FXMLLoader loader = new FXMLLoader(getClass().getResource("shopping/ShoppingList.fxml")); + Parent root = (Parent)loader.load(); + Stage stage = new Stage(); + stage.setTitle(this.getLocaleString("menu.shopping.title")); + stage.setScene(new Scene(root)); + stage.show(); + } + } diff --git a/client/src/main/java/client/scenes/shopping/ShoppingListCtrl.java b/client/src/main/java/client/scenes/shopping/ShoppingListCtrl.java new file mode 100644 index 0000000..b73ec9d --- /dev/null +++ b/client/src/main/java/client/scenes/shopping/ShoppingListCtrl.java @@ -0,0 +1,66 @@ +package client.scenes.shopping; + +import client.service.ShoppingListService; +import client.utils.LocaleAware; +import client.utils.LocaleManager; +import com.google.inject.Inject; +import commons.FormalIngredient; +import javafx.fxml.FXML; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.util.Pair; + +import java.util.Optional; + +public class ShoppingListCtrl implements LocaleAware { + ShoppingListService shopping; + + LocaleManager localeManager; + + @FXML + private ListView>> shoppingListView; + + @Inject + public ShoppingListCtrl( + ShoppingListService shopping, + LocaleManager localeManager + ) { + this.shopping = shopping; + this.localeManager = localeManager; + } + + @Override + public void updateText() { + + } + + @Override + public LocaleManager getLocaleManager() { + return this.localeManager; + } + + public void initializeComponents() { + this.shoppingListView.setCellFactory(l -> new ListCell<>() { + @Override + protected void updateItem(Pair> item, boolean empty) { + super.updateItem(item, empty); + + if (empty) { + this.setText(""); + return; + } + + String display = item.getKey().toString() + + item.getValue().map(recipe -> { + return " (" + recipe + ")"; + }).orElse(""); + + this.setText(display); + } + }); + + this.shoppingListView.getItems().setAll( + this.shopping.getItems() + ); + } +} diff --git a/client/src/main/resources/client/scenes/FoodpalApplication.fxml b/client/src/main/resources/client/scenes/FoodpalApplication.fxml index c777543..adfffba 100644 --- a/client/src/main/resources/client/scenes/FoodpalApplication.fxml +++ b/client/src/main/resources/client/scenes/FoodpalApplication.fxml @@ -70,6 +70,9 @@ +