From 12c506eaf7209c13759518dda911bdca20f57a5d Mon Sep 17 00:00:00 2001 From: Lukas Karsch <lk224@hdm-stuttgart.de> Date: Wed, 10 May 2023 12:09:46 +0200 Subject: [PATCH] added BaseController that stores FXML files for all views, started bugfixing for equals methods, started working on recipe view fxml file --- src/main/java/mi/hdm/FxmlGuiDriver.java | 2 -- src/main/java/mi/hdm/TastyPages.java | 17 +++++++--- .../mi/hdm/controllers/BaseController.java | 9 +++++ .../hdm/controllers/RecipeViewController.java | 4 +++ src/main/java/mi/hdm/controllers/Views.java | 6 ++++ .../java/mi/hdm/filesystem/CSVParser.java | 1 + src/main/java/mi/hdm/recipes/Category.java | 2 +- src/main/java/mi/hdm/recipes/Ingredient.java | 5 ++- src/main/java/mi/hdm/recipes/Recipe.java | 8 ++--- .../mi/hdm/shoppingList/ShoppingList.java | 2 +- src/main/java/module-info.java | 1 + src/main/resources/fxml/recipe-view.fxml | 33 +++++++++++++++++++ .../mi/hdm/shoppingList/ShoppingListTest.java | 2 +- 13 files changed, 75 insertions(+), 17 deletions(-) create mode 100644 src/main/java/mi/hdm/controllers/BaseController.java create mode 100644 src/main/java/mi/hdm/controllers/RecipeViewController.java create mode 100644 src/main/java/mi/hdm/controllers/Views.java create mode 100644 src/main/resources/fxml/recipe-view.fxml diff --git a/src/main/java/mi/hdm/FxmlGuiDriver.java b/src/main/java/mi/hdm/FxmlGuiDriver.java index a270426..b3c0a2d 100644 --- a/src/main/java/mi/hdm/FxmlGuiDriver.java +++ b/src/main/java/mi/hdm/FxmlGuiDriver.java @@ -5,7 +5,6 @@ import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -26,7 +25,6 @@ public class FxmlGuiDriver extends Application { } public void start(Stage stage) throws Exception { - log.info("Starting Hello JavaFX and Maven demonstration application"); final String fxmlFile = "/fxml/hello.fxml"; diff --git a/src/main/java/mi/hdm/TastyPages.java b/src/main/java/mi/hdm/TastyPages.java index 6172eb3..b2e9966 100644 --- a/src/main/java/mi/hdm/TastyPages.java +++ b/src/main/java/mi/hdm/TastyPages.java @@ -1,12 +1,15 @@ package mi.hdm; import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; import javafx.scene.Scene; -import javafx.scene.layout.GridPane; import javafx.stage.Stage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.io.IOException; + public class TastyPages extends Application { private final static Logger log = LogManager.getLogger(TastyPages.class); @@ -19,12 +22,16 @@ public class TastyPages extends Application { public void save() {} @Override - public void start(Stage stage) { - final GridPane gridPane = new GridPane(); - final Scene scene = new Scene(gridPane, 1400, 800); + public void start(Stage stage) throws IOException { + final String fxmlFile = "/fxml/recipe-view.fxml"; + log.debug("Loading FXML for main view from: {}", fxmlFile); + final FXMLLoader loader = new FXMLLoader(); + final Parent rootNode = (Parent) loader.load(getClass().getResourceAsStream(fxmlFile)); + + final Scene scene = new Scene(rootNode, 1400, 800); //scene.getStylesheets().add("/styles/styles.css"); - stage.setTitle("Start page"); + stage.setTitle("View Recipe"); stage.setMaximized(true); //open scene in full screen stage.setScene(scene); stage.show(); diff --git a/src/main/java/mi/hdm/controllers/BaseController.java b/src/main/java/mi/hdm/controllers/BaseController.java new file mode 100644 index 0000000..d7a6ea7 --- /dev/null +++ b/src/main/java/mi/hdm/controllers/BaseController.java @@ -0,0 +1,9 @@ +package mi.hdm.controllers; + +import java.util.Map; + +public class BaseController { + protected final static Map<Views, String> VIEWS = Map.of( + Views.MAIN, "/fxml/main.fxml", + Views.RECIPE_VIEW, "fxml/recipe-view.fxml"); +} diff --git a/src/main/java/mi/hdm/controllers/RecipeViewController.java b/src/main/java/mi/hdm/controllers/RecipeViewController.java new file mode 100644 index 0000000..edd3d95 --- /dev/null +++ b/src/main/java/mi/hdm/controllers/RecipeViewController.java @@ -0,0 +1,4 @@ +package mi.hdm.controllers; + +public class RecipeViewController extends BaseController { +} diff --git a/src/main/java/mi/hdm/controllers/Views.java b/src/main/java/mi/hdm/controllers/Views.java new file mode 100644 index 0000000..e877605 --- /dev/null +++ b/src/main/java/mi/hdm/controllers/Views.java @@ -0,0 +1,6 @@ +package mi.hdm.controllers; + +public enum Views { + MAIN, + RECIPE_VIEW +} diff --git a/src/main/java/mi/hdm/filesystem/CSVParser.java b/src/main/java/mi/hdm/filesystem/CSVParser.java index 59fa405..ed4bca7 100644 --- a/src/main/java/mi/hdm/filesystem/CSVParser.java +++ b/src/main/java/mi/hdm/filesystem/CSVParser.java @@ -102,6 +102,7 @@ public class CSVParser { } private double parseNumberFromString(String candidate) { + //TODO check unit before returning if (candidate.isBlank()) return 0.0; StringBuilder numValue = new StringBuilder(); diff --git a/src/main/java/mi/hdm/recipes/Category.java b/src/main/java/mi/hdm/recipes/Category.java index 1932640..d66b371 100644 --- a/src/main/java/mi/hdm/recipes/Category.java +++ b/src/main/java/mi/hdm/recipes/Category.java @@ -31,7 +31,7 @@ public class Category { @Override public boolean equals(Object o){ if (o instanceof Category c) { - return this.name.equals(c.getName()) || this.colourCode == c.getColourCode(); + return this.name.equals(c.getName()) && this.colourCode == c.getColourCode(); } return false; } diff --git a/src/main/java/mi/hdm/recipes/Ingredient.java b/src/main/java/mi/hdm/recipes/Ingredient.java index 7fabd02..d07cc2e 100644 --- a/src/main/java/mi/hdm/recipes/Ingredient.java +++ b/src/main/java/mi/hdm/recipes/Ingredient.java @@ -35,9 +35,8 @@ public class Ingredient implements RecipeComponent { @Override public boolean equals(Object o) { - if (o instanceof Ingredient) { - Ingredient in = (Ingredient) o; - return this.name.equals(in.getName()); + if (o instanceof Ingredient in) { + return this.name.equals(in.getName()) && this.unit.equals(in.getMeasurement()) && this.nutritionTable.equals(in.getNutritionTable()); } return false; } diff --git a/src/main/java/mi/hdm/recipes/Recipe.java b/src/main/java/mi/hdm/recipes/Recipe.java index bc7523d..4d1d548 100644 --- a/src/main/java/mi/hdm/recipes/Recipe.java +++ b/src/main/java/mi/hdm/recipes/Recipe.java @@ -8,12 +8,12 @@ import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; public class Recipe implements RecipeComponent { //TODO: Add filepath for image private static final Logger log = LogManager.getLogger(Recipe.class); - private Map<RecipeComponent, Integer> ingredients; private String name; private String description; @@ -172,9 +172,9 @@ public class Recipe implements RecipeComponent { @Override public boolean equals(Object o) { - if (o instanceof Recipe r) { - return r.getName().equals(this.name); - } + if (this == o) return true; + if (o instanceof Recipe recipe) + return preparationTimeMins == recipe.preparationTimeMins && Objects.equals(ingredients, recipe.ingredients) && Objects.equals(name, recipe.name) && Objects.equals(description, recipe.description) && Objects.equals(preparation, recipe.preparation) && Objects.equals(categories, recipe.categories) && Objects.equals(nutritionTable, recipe.nutritionTable) && Objects.equals(creationTime, recipe.creationTime); return false; } diff --git a/src/main/java/mi/hdm/shoppingList/ShoppingList.java b/src/main/java/mi/hdm/shoppingList/ShoppingList.java index 0ad8c90..a0c4534 100644 --- a/src/main/java/mi/hdm/shoppingList/ShoppingList.java +++ b/src/main/java/mi/hdm/shoppingList/ShoppingList.java @@ -40,7 +40,7 @@ public class ShoppingList { log.info("Added {} to shopping list.", ingredient.getName()); } - public void addAllToShppingList(Recipe recipe) { + public void addAllToShoppingList(Recipe recipe) { recipe.getIngredients().keySet() .forEach(element -> { if (element instanceof Ingredient i) diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index f3b1e62..80f4d7b 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -5,4 +5,5 @@ module gui { opens mi.hdm to javafx.fxml; exports mi.hdm; + exports mi.hdm.controllers; } \ No newline at end of file diff --git a/src/main/resources/fxml/recipe-view.fxml b/src/main/resources/fxml/recipe-view.fxml new file mode 100644 index 0000000..95a176c --- /dev/null +++ b/src/main/resources/fxml/recipe-view.fxml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.Insets?> +<?import javafx.scene.control.*?> +<?import javafx.scene.layout.*?> +<AnchorPane prefHeight="400.0" prefWidth="677.0" xmlns="http://javafx.com/javafx/17.0.2-ea" + xmlns:fx="http://javafx.com/fxml/1" fx:controller="mi.hdm.controllers.RecipeViewController"> + <SplitPane dividerPositions="0.15" orientation="VERTICAL" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" + AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> + <GridPane alignment="CENTER" prefHeight="100.0" prefWidth="675.0" style="-fx-background-color: D91C1C;"> + <columnConstraints> + <ColumnConstraints percentWidth="15"/> + <ColumnConstraints percentWidth="50"/> + <ColumnConstraints percentWidth="35"/> + </columnConstraints> + <MenuButton mnemonicParsing="false" text="MENU"> + <items> + <MenuItem mnemonicParsing="false" text="Action 1"/> + <MenuItem mnemonicParsing="false" text="Action 2"/> + </items> + </MenuButton> + <Label alignment="CENTER" prefHeight="17.0" prefWidth="352.0" GridPane.columnIndex="1">LOGO</Label> + <TextField GridPane.columnIndex="2"/> + <rowConstraints> + <RowConstraints/> + </rowConstraints> + <padding> + <Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/> + </padding> + </GridPane> + <TilePane prefHeight="333.0" prefWidth="675.0"/> + </SplitPane> +</AnchorPane> diff --git a/src/test/java/mi/hdm/shoppingList/ShoppingListTest.java b/src/test/java/mi/hdm/shoppingList/ShoppingListTest.java index 5b2b4c5..b2756c6 100644 --- a/src/test/java/mi/hdm/shoppingList/ShoppingListTest.java +++ b/src/test/java/mi/hdm/shoppingList/ShoppingListTest.java @@ -42,7 +42,7 @@ class ShoppingListTest { Map<Ingredient, Boolean> expected = Map.of(ing1, false, ing2, false); //when - underTest.addAllToShppingList(r1); + underTest.addAllToShoppingList(r1); //expect assertEquals(expected, underTest.getList()); -- GitLab