From cc29aeab6e3a38d36d11df55e3d6dc745b5eac46 Mon Sep 17 00:00:00 2001 From: Lukas Karsch <lk224@hdm-stuttgart.de> Date: Thu, 15 Jun 2023 22:13:16 +0200 Subject: [PATCH] UI for creating categories. --- UML/TastyPages_Use-case.drawio | 764 +----------------- .../mi/hdm/components/IngredientLabel.java | 13 +- .../CategoryCreatorController.java | 64 ++ .../mi/hdm/controllers/HeaderController.java | 5 + .../hdm/controllers/RecipeViewController.java | 13 +- src/main/java/mi/hdm/controllers/View.java | 7 +- src/main/java/mi/hdm/recipes/Category.java | 4 +- .../java/mi/hdm/recipes/CategoryManager.java | 4 +- src/main/java/mi/hdm/recipes/Measurement.java | 1 - src/main/resources/data/simple_nutrition.csv | 41 + src/main/resources/fxml/category-creator.fxml | 35 + .../resources/fxml/components/header.fxml | 1 + src/main/resources/log4j2.xml | 2 +- 13 files changed, 169 insertions(+), 785 deletions(-) create mode 100644 src/main/java/mi/hdm/controllers/CategoryCreatorController.java create mode 100644 src/main/resources/data/simple_nutrition.csv create mode 100644 src/main/resources/fxml/category-creator.fxml diff --git a/UML/TastyPages_Use-case.drawio b/UML/TastyPages_Use-case.drawio index e0e5d65..b645a36 100644 --- a/UML/TastyPages_Use-case.drawio +++ b/UML/TastyPages_Use-case.drawio @@ -1,763 +1 @@ -<mxfile host="app.diagrams.net" modified="2023-04-19T11:39:45.984Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" etag="auBj7dBcp4-3Ku1kofR1" version="21.1.7" type="device" pages="2"> - <diagram name="Seite-1" id="guNTSU0fiwR1g74g93dq"> - <mxGraphModel dx="1434" dy="1623" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> - <root> - <mxCell id="0" /> - <mxCell id="1" parent="0" /> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-1" target="4oh4sVMnw9r_FDRqXWCS-5" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="120" y="450" /> - <mxPoint x="120" y="165" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-12" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-1" target="4oh4sVMnw9r_FDRqXWCS-11" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="120" y="450" /> - <mxPoint x="120" y="640" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-14" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-1" target="4oh4sVMnw9r_FDRqXWCS-13" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="90" y="450" /> - <mxPoint x="90" y="450" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-78" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-1" target="4oh4sVMnw9r_FDRqXWCS-15" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="120" y="450" /> - <mxPoint x="120" y="852" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-1" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1"> - <mxGeometry x="30" y="420" width="30" height="60" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-5" value="&lt;subsystem&gt; <b>Recipes</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"> - <mxGeometry x="220" y="-90" width="630" height="370" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-11" value="&lt;subsystem&gt; <b>Shopping List</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"> - <mxGeometry x="220" y="570" width="630" height="140" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-13" value="&lt;subsystem&gt; <b>Ingredients</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"> - <mxGeometry x="220" y="330" width="630" height="180" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-15" value="&lt;subsystem&gt; <b>Meal Plan</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"> - <mxGeometry x="220" y="760" width="630" height="183" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-19" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-18" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="420" y="70" /> - <mxPoint x="420" y="35" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-20" value="<font style="font-size: 8px;">required<br></font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rotation=0;" parent="4oh4sVMnw9r_FDRqXWCS-19" vertex="1" connectable="0"> - <mxGeometry x="0.7825" relative="1" as="geometry"> - <mxPoint x="-18" y="10" as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-25" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-24" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="420" y="70" /> - <mxPoint x="420" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-26" value="<font style="font-size: 8px;">required</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-25" vertex="1" connectable="0"> - <mxGeometry x="0.7095" y="-3" relative="1" as="geometry"> - <mxPoint x="-9" y="7" as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-30" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-29" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="360" y="70" /> - <mxPoint x="360" y="70" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-31" value="<font style="font-size: 8px;">required</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-30" vertex="1" connectable="0"> - <mxGeometry x="0.3444" y="-1" relative="1" as="geometry"> - <mxPoint x="6" y="9" as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-33" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-32" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="420" y="70" /> - <mxPoint x="420" y="100" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-38" value="<font style="font-size: 8px;">includes</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-33" vertex="1" connectable="0"> - <mxGeometry x="0.4723" relative="1" as="geometry"> - <mxPoint x="7" y="10" as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-35" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-34" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="420" y="70" /> - <mxPoint x="420" y="133" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-39" value="<font style="font-size: 8px;">includes</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-35" vertex="1" connectable="0"> - <mxGeometry x="0.5382" y="-2" relative="1" as="geometry"> - <mxPoint x="9" y="5" as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-53" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="310" y="-30" /> - <mxPoint x="760" y="-30" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-17" value="add recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="250" y="55" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-18" value="select components" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="480" y="25" width="140" height="20" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-24" value="Name the recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="480" y="-10" width="140" height="20" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-29" value="add prepare steps" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="480" y="60" width="140" height="20" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-32" value="select categories" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="480" y="90" width="140" height="20" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-34" value="add picture" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="480" y="120" width="140" height="22.5" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-37" value="delete recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="250" y="100" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-42" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-40" edge="1"> - <mxGeometry relative="1" as="geometry"> - <mxPoint x="400" y="70" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-40" value="edit recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="250" y="150" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-45" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-44" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="450" y="215" /> - <mxPoint x="450" y="180" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-47" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-46" edge="1"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-50" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-49" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="450" y="215" /> - <mxPoint x="450" y="250" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-59" value="<font style="font-size: 8px;">includes</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-50" vertex="1" connectable="0"> - <mxGeometry x="-0.5962" y="-1" relative="1" as="geometry"> - <mxPoint y="9" as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-53" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="310" y="270" /> - <mxPoint x="760" y="270" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-43" value="browse recipes" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="250" y="200" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-44" value="full text search" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="490" y="170" width="120" height="20" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-46" target="4oh4sVMnw9r_FDRqXWCS-44" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="630" y="215" /> - <mxPoint x="630" y="180" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-46" value="choose categories" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="490" y="205" width="120" height="20" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-49" value="show favorites" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="490" y="240" width="120" height="20" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-57" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-53" target="4oh4sVMnw9r_FDRqXWCS-37" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="830" y="100" /> - <mxPoint x="830" y="-50" /> - <mxPoint x="230" y="-50" /> - <mxPoint x="230" y="115" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-53" target="4oh4sVMnw9r_FDRqXWCS-40" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="830" y="100" /> - <mxPoint x="830" y="-50" /> - <mxPoint x="230" y="-50" /> - <mxPoint x="230" y="165" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-53" value="Display recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="700" y="75" width="120" height="50" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-64" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-63" edge="1"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-65" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-63" edge="1"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-67" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-66" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="440" y="385" /> - <mxPoint x="440" y="415" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-69" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-68" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="440" y="385" /> - <mxPoint x="440" y="355" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-70" value="<font style="font-size: 8px;">includes</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-69" vertex="1" connectable="0"> - <mxGeometry x="-0.3204" y="-2" relative="1" as="geometry"> - <mxPoint x="-18" y="-17" as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-60" value="add ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="240" y="370" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-61" value="search ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="240" y="414" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-62" value="delete ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="240" y="460" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-63" value="set ingredient name" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="500" y="370" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-66" value="set nutrition values" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="500" y="400" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-68" value="<font style="font-size: 10px;">choose measurement type</font>" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="500" y="340" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-71" value="add to shopping list" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="230" y="600" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-72" value="remove from shopping list" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="230" y="640" width="120" height="40" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-79" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-74" target="4oh4sVMnw9r_FDRqXWCS-43" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="180" y="798" /> - <mxPoint x="180" y="215" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-80" value="includes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-79" vertex="1" connectable="0"> - <mxGeometry x="0.5176" y="-1" relative="1" as="geometry"> - <mxPoint x="-1" y="-15" as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-74" value="add to meal plan" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="280" y="783" width="120" height="30" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-75" value="remove from meal plan" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="280" y="827" width="120" height="40" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-76" value="show this weeks nutrition score" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="280" y="873" width="120" height="60" as="geometry" /> - </mxCell> - <mxCell id="4oh4sVMnw9r_FDRqXWCS-81" value="display meal plan" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="490" y="778" width="120" height="40" as="geometry" /> - </mxCell> - <mxCell id="2" value="display shopping list" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="475" y="595" width="120" height="40" as="geometry" /> - </mxCell> - </root> - </mxGraphModel> - </diagram> - <diagram id="IOxpQtQOinXd_60UH0zV" name="Seite-2"> - <mxGraphModel dx="3218" dy="1964" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> - <root> - <mxCell id="0" /> - <mxCell id="1" parent="0" /> - <mxCell id="4rBL8TMRcDE2g0Xyakx7-3" value="package : recipe" style="swimlane;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1"> - <mxGeometry x="-20" y="43" width="1170" height="740" as="geometry" /> - </mxCell> - <mxCell id="khY43H2GbW4oralui55t-5" value="RecipeEditor" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="340" y="126" width="200" height="116" as="geometry" /> - </mxCell> - <mxCell id="khY43H2GbW4oralui55t-8" value="+ RecipeEditor() : Constructor" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-5" vertex="1"> - <mxGeometry y="26" width="200" height="26" as="geometry" /> - </mxCell> - <mxCell id="I4bFckmwjJYNS_oseT-e-1" value="+ RecipeEditor(Recipe r) : Constructor" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-5" vertex="1"> - <mxGeometry y="52" width="200" height="38" as="geometry" /> - </mxCell> - <mxCell id="ZsNRWflmDDHaKi8fymGh-1" value="+ get() : Recipe" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-5" vertex="1"> - <mxGeometry y="90" width="200" height="26" as="geometry" /> - </mxCell> - <mxCell id="khY43H2GbW4oralui55t-9" value="Singleton : RecipeManager" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="20" y="40" width="220" height="190" as="geometry" /> - </mxCell> - <mxCell id="khY43H2GbW4oralui55t-10" value="- recipes : List&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"> - <mxGeometry y="26" width="220" height="26" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-38" value="- categories : Categories" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"> - <mxGeometry y="52" width="220" height="26" as="geometry" /> - </mxCell> - <mxCell id="qvnAXoucquyjZ7kPEuXb-9" value="- ingredients : IngredientList" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"> - <mxGeometry y="78" width="220" height="26" as="geometry" /> - </mxCell> - <mxCell id="khY43H2GbW4oralui55t-11" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="khY43H2GbW4oralui55t-9" vertex="1"> - <mxGeometry y="104" width="220" height="8" as="geometry" /> - </mxCell> - <mxCell id="khY43H2GbW4oralui55t-12" value="+ addRecipe() : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"> - <mxGeometry y="112" width="220" height="26" as="geometry" /> - </mxCell> - <mxCell id="lNXn1_JIS0mlgrxrveIr-12" value="+ deleteRecipe (int i) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"> - <mxGeometry y="138" width="220" height="26" as="geometry" /> - </mxCell> - <mxCell id="lNXn1_JIS0mlgrxrveIr-13" value="+ editRecipe (int i) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"> - <mxGeometry y="164" width="220" height="26" as="geometry" /> - </mxCell> - <mxCell id="1PDsnecl4zy3zphxMVey-1" value="RecipeSearch" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="860" y="40" width="300" height="154" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-26" value="- recipesToSearch : List&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="1PDsnecl4zy3zphxMVey-1" vertex="1"> - <mxGeometry y="26" width="300" height="26" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-27" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="1PDsnecl4zy3zphxMVey-1" vertex="1"> - <mxGeometry y="52" width="300" height="8" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-28" value="<i>Constructor:</i><br>+ RecipeSearch(List&lt;Recipe&gt; recipesToSearch)&nbsp;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="1PDsnecl4zy3zphxMVey-1" vertex="1"> - <mxGeometry y="60" width="300" height="40" as="geometry" /> - </mxCell> - <mxCell id="1PDsnecl4zy3zphxMVey-4" value="+ searchByQuery(String query) : List&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="1PDsnecl4zy3zphxMVey-1" vertex="1"> - <mxGeometry y="100" width="300" height="26" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-3" value="+ searchByCategory(List&lt;Category&gt;) : List&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="1PDsnecl4zy3zphxMVey-1" vertex="1"> - <mxGeometry y="126" width="300" height="28" as="geometry" /> - </mxCell> - <mxCell id="4db8lyx7makHAff3xmPV-1" value="Category" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="625" y="206" width="245" height="126" as="geometry" /> - </mxCell> - <mxCell id="4db8lyx7makHAff3xmPV-2" value="- name : String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4db8lyx7makHAff3xmPV-1" vertex="1"> - <mxGeometry y="26" width="245" height="26" as="geometry" /> - </mxCell> - <mxCell id="VXFt1rTyLLwseOzf8AC8-2" value="- colorCode : Integer" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="4db8lyx7makHAff3xmPV-1"> - <mxGeometry y="52" width="245" height="26" as="geometry" /> - </mxCell> - <mxCell id="4db8lyx7makHAff3xmPV-3" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="4db8lyx7makHAff3xmPV-1" vertex="1"> - <mxGeometry y="78" width="245" height="8" as="geometry" /> - </mxCell> - <mxCell id="4db8lyx7makHAff3xmPV-4" value="overrides:<br>+ equals(Object o) : boolean" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4db8lyx7makHAff3xmPV-1" vertex="1"> - <mxGeometry y="86" width="245" height="40" as="geometry" /> - </mxCell> - <mxCell id="4db8lyx7makHAff3xmPV-5" value="Singleton : Categories" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="585" y="40" width="245" height="112" as="geometry" /> - </mxCell> - <mxCell id="4db8lyx7makHAff3xmPV-6" value="- allCategories : Set&lt;Category&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4db8lyx7makHAff3xmPV-5" vertex="1"> - <mxGeometry y="26" width="245" height="26" as="geometry" /> - </mxCell> - <mxCell id="4db8lyx7makHAff3xmPV-7" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="4db8lyx7makHAff3xmPV-5" vertex="1"> - <mxGeometry y="52" width="245" height="8" as="geometry" /> - </mxCell> - <mxCell id="4db8lyx7makHAff3xmPV-8" value="+ registerCategory(String name) : boolean" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4db8lyx7makHAff3xmPV-5" vertex="1"> - <mxGeometry y="60" width="245" height="26" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-1" value="+ getAllCategories() : Set&lt;Category&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4db8lyx7makHAff3xmPV-5" vertex="1"> - <mxGeometry y="86" width="245" height="26" as="geometry" /> - </mxCell> - <mxCell id="VXFt1rTyLLwseOzf8AC8-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="4rBL8TMRcDE2g0Xyakx7-3" source="90y9bFiBt-Dw9IB2Oaka-1" target="BmttCFs_K1xAuYzUHSLz-17"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="450" y="437" /> - <mxPoint x="235" y="437" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="90y9bFiBt-Dw9IB2Oaka-1" value="Recipe&nbsp;" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="315" y="502" width="270" height="182" as="geometry"> - <mxRectangle x="20" y="150" width="80" height="30" as="alternateBounds" /> - </mxGeometry> - </mxCell> - <mxCell id="90y9bFiBt-Dw9IB2Oaka-2" value="- ingredients: HashMap&lt;RecipeComponent, Integer&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> - <mxGeometry y="26" width="270" height="34" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-2" value="- description : String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> - <mxGeometry y="60" width="270" height="24" as="geometry" /> - </mxCell> - <mxCell id="Cg_uZv0A1mTYIWKAJ-0d-3" value="- preparation : ArrayList&lt;String&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> - <mxGeometry y="84" width="270" height="24" as="geometry" /> - </mxCell> - <mxCell id="Cg_uZv0A1mTYIWKAJ-0d-4" value="- categories : Set&lt;Category&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> - <mxGeometry y="108" width="270" height="26" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-4" value="- preparationTimeMins : Integer" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> - <mxGeometry y="134" width="270" height="24" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-1" value="- created : LocalDateTime" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"> - <mxGeometry y="158" width="270" height="24" as="geometry" /> - </mxCell> - <mxCell id="VXFt1rTyLLwseOzf8AC8-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="4rBL8TMRcDE2g0Xyakx7-3" source="4LD2Q_2ablrLRUKtAQnm-8" target="BmttCFs_K1xAuYzUHSLz-17"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="155" y="437" /> - <mxPoint x="235" y="437" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="VXFt1rTyLLwseOzf8AC8-8" value="implements" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="VXFt1rTyLLwseOzf8AC8-6"> - <mxGeometry x="0.5309" y="1" relative="1" as="geometry"> - <mxPoint as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-8" value="Ingredient" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="20" y="446" width="270" height="52" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-25" value="- unit : Measurement" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-8" vertex="1"> - <mxGeometry y="26" width="270" height="26" as="geometry" /> - </mxCell> - <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-4" value="&lt;&lt;enum&gt;&gt;<br><b>Measurement</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="55" y="566" width="140" height="142" as="geometry" /> - </mxCell> - <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-5" value="PIECE" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> - <mxGeometry y="26" width="140" height="26" as="geometry" /> - </mxCell> - <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-6" value="GRAM" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> - <mxGeometry y="52" width="140" height="26" as="geometry" /> - </mxCell> - <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-7" value="MILLILITER" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> - <mxGeometry y="78" width="140" height="32" as="geometry" /> - </mxCell> - <mxCell id="WwHfsR9ecwNkWHZ6sJ4B-9" value="PINCH" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"> - <mxGeometry y="110" width="140" height="32" as="geometry" /> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-1" value="&lt;&lt;enum&gt;&gt;<br><b>Nutriton</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="730" y="506" width="140" height="202" as="geometry" /> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-2" value="CALORIES" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> - <mxGeometry y="26" width="140" height="26" as="geometry" /> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-3" value="CARBS" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> - <mxGeometry y="52" width="140" height="26" as="geometry" /> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-4" value="PROTEINS" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> - <mxGeometry y="78" width="140" height="32" as="geometry" /> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-5" value="SALT" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> - <mxGeometry y="110" width="140" height="32" as="geometry" /> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-6" value="FAT" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacingLeft=4;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> - <mxGeometry y="142" width="140" height="30" as="geometry" /> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-7" value="FIBERS" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacingLeft=4;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"> - <mxGeometry y="172" width="140" height="30" as="geometry" /> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-12" value="NutritionTable" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="710" y="346" width="260" height="100" as="geometry" /> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-13" value="- table : HashMap&lt;Nutrition, Double&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"> - <mxGeometry y="26" width="260" height="26" as="geometry" /> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-14" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"> - <mxGeometry y="52" width="260" height="8" as="geometry" /> - </mxCell> - <mxCell id="4LD2Q_2ablrLRUKtAQnm-15" value="+ getNutritionForRecipe (Recipe recipe) : NutritionTable" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"> - <mxGeometry y="60" width="260" height="40" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-17" value="&lt;&lt;interface&gt;&gt;<br><b>RecipeComponent</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="140" y="287" width="190" height="104" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-18" value="+ getName() : String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="BmttCFs_K1xAuYzUHSLz-17" vertex="1"> - <mxGeometry y="26" width="190" height="26" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-6" value="+ getNutritionTable() : NutritionTable" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontSize=11;" parent="BmttCFs_K1xAuYzUHSLz-17" vertex="1"> - <mxGeometry y="52" width="190" height="26" as="geometry" /> - </mxCell> - <mxCell id="VXFt1rTyLLwseOzf8AC8-1" value="+ getID() : Integer" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="BmttCFs_K1xAuYzUHSLz-17"> - <mxGeometry y="78" width="190" height="26" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-11" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.442;exitY=0.985;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.611;entryY=-0.021;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="BmttCFs_K1xAuYzUHSLz-25" target="WwHfsR9ecwNkWHZ6sJ4B-4" edge="1"> - <mxGeometry width="160" relative="1" as="geometry"> - <mxPoint x="138.17999999999984" y="486.004" as="sourcePoint" /> - <mxPoint x="140" y="556" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-12" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.441;exitY=1.067;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.439;entryY=0.005;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="BmttCFs_K1xAuYzUHSLz-1" target="4db8lyx7makHAff3xmPV-1" edge="1"> - <mxGeometry width="160" relative="1" as="geometry"> - <mxPoint x="860" y="186" as="sourcePoint" /> - <mxPoint x="1020" y="186" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-13" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.325;exitY=1.102;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.46;entryY=0.002;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="4LD2Q_2ablrLRUKtAQnm-15" target="4LD2Q_2ablrLRUKtAQnm-1" edge="1"> - <mxGeometry width="160" relative="1" as="geometry"> - <mxPoint x="665" y="532" as="sourcePoint" /> - <mxPoint x="825" y="532" as="targetPoint" /> - <Array as="points" /> - </mxGeometry> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-18" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.425;exitY=1.069;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.093;entryY=0.019;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-13" target="90y9bFiBt-Dw9IB2Oaka-1" edge="1"> - <mxGeometry x="-0.8176" relative="1" as="geometry"> - <mxPoint x="320" y="216" as="sourcePoint" /> - <mxPoint x="340" y="426" as="targetPoint" /> - <Array as="points"> - <mxPoint x="114" y="266" /> - <mxPoint x="340" y="266" /> - </Array> - <mxPoint as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-19" value="0..*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="ev62EXm1IyDULqRkRese-18" vertex="1" connectable="0"> - <mxGeometry x="0.8861" y="-2" relative="1" as="geometry"> - <mxPoint x="2" y="-51" as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-22" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.007;entryY=-0.075;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" target="4LD2Q_2ablrLRUKtAQnm-15" edge="1"> - <mxGeometry x="-1" y="3" relative="1" as="geometry"> - <mxPoint x="290" y="467" as="sourcePoint" /> - <mxPoint x="700" y="376" as="targetPoint" /> - <Array as="points"> - <mxPoint x="290" y="467" /> - <mxPoint x="620" y="467" /> - <mxPoint x="620" y="403" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-40" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.005;entryY=0.355;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-12" target="I4bFckmwjJYNS_oseT-e-1" edge="1"> - <mxGeometry x="-1" y="3" relative="1" as="geometry"> - <mxPoint x="230" y="186" as="sourcePoint" /> - <mxPoint x="400" y="116" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-41" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=1.006;exitY=-0.077;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.02;entryY=0.615;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="qvnAXoucquyjZ7kPEuXb-9" target="4db8lyx7makHAff3xmPV-8" edge="1"> - <mxGeometry x="-1" y="3" relative="1" as="geometry"> - <mxPoint x="270" y="126" as="sourcePoint" /> - <mxPoint x="430" y="126" as="targetPoint" /> - <Array as="points" /> - </mxGeometry> - </mxCell> - <mxCell id="VXFt1rTyLLwseOzf8AC8-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.785;entryY=0.001;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-1" target="4LD2Q_2ablrLRUKtAQnm-12"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="lNXn1_JIS0mlgrxrveIr-1" value="NutritionCalculator" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"> - <mxGeometry x="880" y="224" width="280" height="78" as="geometry" /> - </mxCell> - <mxCell id="lNXn1_JIS0mlgrxrveIr-4" value="+ calculate (Recipe r) : NutritionTable" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-1" vertex="1"> - <mxGeometry y="26" width="280" height="26" as="geometry" /> - </mxCell> - <mxCell id="VXFt1rTyLLwseOzf8AC8-9" value="+ calculate (Recipe r) : NutritionTable" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" vertex="1" parent="lNXn1_JIS0mlgrxrveIr-1"> - <mxGeometry y="52" width="280" height="26" as="geometry" /> - </mxCell> - <mxCell id="VXFt1rTyLLwseOzf8AC8-4" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.161;exitY=1.04;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.131;entryY=-0.043;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-13" target="4LD2Q_2ablrLRUKtAQnm-8"> - <mxGeometry x="-1" y="3" relative="1" as="geometry"> - <mxPoint x="300" y="377" as="sourcePoint" /> - <mxPoint x="80" y="437" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="VXFt1rTyLLwseOzf8AC8-5" value="0..*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="VXFt1rTyLLwseOzf8AC8-4"> - <mxGeometry x="0.7378" y="1" relative="1" as="geometry"> - <mxPoint as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="XnVSaR7xRqF0c78tSIC_-1" value="package : shoppingList" style="swimlane;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="1280" y="-350" width="300" height="290" as="geometry" /> - </mxCell> - <mxCell id="XnVSaR7xRqF0c78tSIC_-2" value="Singleton :ShoppingList" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="XnVSaR7xRqF0c78tSIC_-1" vertex="1"> - <mxGeometry x="30" y="40" width="240" height="164" as="geometry" /> - </mxCell> - <mxCell id="XnVSaR7xRqF0c78tSIC_-3" value="- shoppingList : Map&lt;Ingredient, Boolean&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> - <mxGeometry y="26" width="240" height="26" as="geometry" /> - </mxCell> - <mxCell id="XnVSaR7xRqF0c78tSIC_-4" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> - <mxGeometry y="52" width="240" height="8" as="geometry" /> - </mxCell> - <mxCell id="XnVSaR7xRqF0c78tSIC_-5" value="+ clear() : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> - <mxGeometry y="60" width="240" height="26" as="geometry" /> - </mxCell> - <mxCell id="qvnAXoucquyjZ7kPEuXb-10" value="+ markDone(Ingredient i) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> - <mxGeometry y="86" width="240" height="26" as="geometry" /> - </mxCell> - <mxCell id="qvnAXoucquyjZ7kPEuXb-11" value="+ markUndone(Ingredient i) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> - <mxGeometry y="112" width="240" height="26" as="geometry" /> - </mxCell> - <mxCell id="qvnAXoucquyjZ7kPEuXb-12" value="+ get() : HashMap&lt;Ingredient, Boolean&gt;&nbsp;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"> - <mxGeometry y="138" width="240" height="26" as="geometry" /> - </mxCell> - <mxCell id="xz0VCGe2YetrdaeYra_O-1" value="package : mealPlan" style="swimlane;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="1250" y="414" width="230" height="250" as="geometry" /> - </mxCell> - <mxCell id="xz0VCGe2YetrdaeYra_O-2" value="Sngleton : MealPlan" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="xz0VCGe2YetrdaeYra_O-1" vertex="1"> - <mxGeometry x="20" y="39" width="180" height="190" as="geometry" /> - </mxCell> - <mxCell id="xz0VCGe2YetrdaeYra_O-3" value="- mealPlan : Recipe[7]" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"> - <mxGeometry y="26" width="180" height="26" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-4" value="- weekNutrition : NutritionTable" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"> - <mxGeometry y="52" width="180" height="26" as="geometry" /> - </mxCell> - <mxCell id="xz0VCGe2YetrdaeYra_O-4" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"> - <mxGeometry y="78" width="180" height="8" as="geometry" /> - </mxCell> - <mxCell id="xz0VCGe2YetrdaeYra_O-5" value="+ add(Recipe r, int day)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"> - <mxGeometry y="86" width="180" height="26" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-3" value="+ clear(int day) : Recipe" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"> - <mxGeometry y="112" width="180" height="26" as="geometry" /> - </mxCell> - <mxCell id="qvnAXoucquyjZ7kPEuXb-14" value="+ reset() : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"> - <mxGeometry y="138" width="180" height="26" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-5" value="+ get() : MealPlan" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"> - <mxGeometry y="164" width="180" height="26" as="geometry" /> - </mxCell> - <mxCell id="lNXn1_JIS0mlgrxrveIr-5" value="Singleton : App" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1"> - <mxGeometry x="1232" y="50" width="420" height="294" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-39" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.278;entryY=1.138;entryDx=0;entryDy=0;entryPerimeter=0;" parent="lNXn1_JIS0mlgrxrveIr-5" target="qvnAXoucquyjZ7kPEuXb-12" edge="1"> - <mxGeometry x="-1" y="3" relative="1" as="geometry"> - <mxPoint x="98" as="sourcePoint" /> - <mxPoint x="258" as="targetPoint" /> - <Array as="points"> - <mxPoint x="98" y="-63" /> - <mxPoint x="145" y="-63" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="lNXn1_JIS0mlgrxrveIr-6" value="- recipeManager : RecipeManager" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> - <mxGeometry y="26" width="420" height="26" as="geometry" /> - </mxCell> - <mxCell id="lNXn1_JIS0mlgrxrveIr-10" value="- shoppingList : ShoppingList<br>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> - <mxGeometry y="52" width="420" height="26" as="geometry" /> - </mxCell> - <mxCell id="lNXn1_JIS0mlgrxrveIr-11" value="- mealPlan : MealPlan" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> - <mxGeometry y="78" width="420" height="26" as="geometry" /> - </mxCell> - <mxCell id="h23uL9lWt6JHxaophjVK-1" value="- search : RecipeSearch" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> - <mxGeometry y="104" width="420" height="26" as="geometry" /> - </mxCell> - <mxCell id="h23uL9lWt6JHxaophjVK-3" value="- lastSearchResults : List&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> - <mxGeometry y="130" width="420" height="26" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-15" value="- fileManager : FileManager" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> - <mxGeometry y="156" width="420" height="26" as="geometry" /> - </mxCell> - <mxCell id="lNXn1_JIS0mlgrxrveIr-7" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> - <mxGeometry y="182" width="420" height="8" as="geometry" /> - </mxCell> - <mxCell id="lNXn1_JIS0mlgrxrveIr-8" value="+ start() : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> - <mxGeometry y="190" width="420" height="26" as="geometry" /> - </mxCell> - <mxCell id="h23uL9lWt6JHxaophjVK-2" value="+ search(lastSearchResults, String query) : ArrayList&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> - <mxGeometry y="216" width="420" height="26" as="geometry" /> - </mxCell> - <mxCell id="h23uL9lWt6JHxaophjVK-4" value="+ search(lastSearchResults, Category category) : ArrayList&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> - <mxGeometry y="242" width="420" height="26" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-9" value="+ save(this) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"> - <mxGeometry y="268" width="420" height="26" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-11" value="FileManager" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="1770" y="50" width="360" height="112" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-12" value="- savePath : Path" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> - <mxGeometry y="26" width="360" height="26" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-13" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> - <mxGeometry y="52" width="360" height="8" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-14" value="+ deserializeFromFile() : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> - <mxGeometry y="60" width="360" height="26" as="geometry" /> - </mxCell> - <mxCell id="BmttCFs_K1xAuYzUHSLz-16" value="+ serializeToFile(App app) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="BmttCFs_K1xAuYzUHSLz-11" vertex="1"> - <mxGeometry y="86" width="360" height="26" as="geometry" /> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-32" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=1;entryY=0.11;entryDx=0;entryDy=0;entryPerimeter=0;exitX=-0.004;exitY=0.051;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="h23uL9lWt6JHxaophjVK-1" target="1PDsnecl4zy3zphxMVey-1" edge="1"> - <mxGeometry x="-1" y="3" relative="1" as="geometry"> - <mxPoint x="1210" y="160" as="sourcePoint" /> - <mxPoint x="1360" y="140" as="targetPoint" /> - <Array as="points"> - <mxPoint x="1190" y="155" /> - <mxPoint x="1190" y="100" /> - <mxPoint x="1160" y="100" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-37" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.305;exitY=0.969;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="BmttCFs_K1xAuYzUHSLz-9" target="xz0VCGe2YetrdaeYra_O-2" edge="1"> - <mxGeometry x="-1" y="3" relative="1" as="geometry"> - <mxPoint x="1310" y="370" as="sourcePoint" /> - <mxPoint x="1470" y="370" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-42" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.417;entryY=-0.007;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="lNXn1_JIS0mlgrxrveIr-6" target="khY43H2GbW4oralui55t-9" edge="1"> - <mxGeometry x="-1" y="3" relative="1" as="geometry"> - <mxPoint x="650" y="-50" as="sourcePoint" /> - <mxPoint x="100" y="20" as="targetPoint" /> - <Array as="points"> - <mxPoint x="1210" y="89" /> - <mxPoint x="1210" y="20" /> - <mxPoint x="92" y="20" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-43" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.417;entryY=1.115;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="BmttCFs_K1xAuYzUHSLz-15" target="BmttCFs_K1xAuYzUHSLz-16" edge="1"> - <mxGeometry x="-1" y="3" relative="1" as="geometry"> - <mxPoint x="1690" y="220" as="sourcePoint" /> - <mxPoint x="1850" y="220" as="targetPoint" /> - <Array as="points"> - <mxPoint x="1920" y="219" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="ev62EXm1IyDULqRkRese-44" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="ev62EXm1IyDULqRkRese-43" vertex="1" connectable="0"> - <mxGeometry x="0.7682" y="-1" relative="1" as="geometry"> - <mxPoint y="-10" as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="VXFt1rTyLLwseOzf8AC8-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.614;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="xz0VCGe2YetrdaeYra_O-3" target="VXFt1rTyLLwseOzf8AC8-9"> - <mxGeometry relative="1" as="geometry"> - <mxPoint x="1110" y="400" as="targetPoint" /> - <Array as="points"> - <mxPoint x="1032" y="492" /> - <mxPoint x="1032" y="440" /> - </Array> - </mxGeometry> - </mxCell> - </root> - </mxGraphModel> - </diagram> -</mxfile> +<mxfile host="drawio-plugin" modified="2023-06-14T15:11:39.863Z" agent="5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36" etag="EYkNOtVZkoLyA6l8JKrh" version="20.5.3" type="embed" pages="2"><diagram name="Seite-1" id="guNTSU0fiwR1g74g93dq"><mxGraphModel dx="1340" dy="1585" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="4oh4sVMnw9r_FDRqXWCS-6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-1" target="4oh4sVMnw9r_FDRqXWCS-5" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="120" y="450"/><mxPoint x="120" y="165"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-12" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-1" target="4oh4sVMnw9r_FDRqXWCS-11" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="120" y="450"/><mxPoint x="120" y="640"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-14" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-1" target="4oh4sVMnw9r_FDRqXWCS-13" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="90" y="450"/><mxPoint x="90" y="450"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-78" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-1" target="4oh4sVMnw9r_FDRqXWCS-15" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="120" y="450"/><mxPoint x="120" y="852"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-1" value="Actor" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1"><mxGeometry x="30" y="420" width="30" height="60" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-5" value="&lt;subsystem&gt; <b>Recipes</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"><mxGeometry x="220" y="-90" width="630" height="370" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-11" value="&lt;subsystem&gt; <b>Shopping List</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"><mxGeometry x="220" y="570" width="630" height="140" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-13" value="&lt;subsystem&gt; <b>Ingredients</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"><mxGeometry x="220" y="330" width="630" height="180" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-15" value="&lt;subsystem&gt; <b>Meal Plan</b>" style="whiteSpace=wrap;html=1;verticalAlign=top;align=left;" parent="1" vertex="1"><mxGeometry x="220" y="760" width="630" height="183" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-19" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-18" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="420" y="70"/><mxPoint x="420" y="35"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-20" value="<font style="font-size: 8px;">required<br></font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];rotation=0;" parent="4oh4sVMnw9r_FDRqXWCS-19" vertex="1" connectable="0"><mxGeometry x="0.7825" relative="1" as="geometry"><mxPoint x="-18" y="10" as="offset"/></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-25" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-24" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="420" y="70"/><mxPoint x="420"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-26" value="<font style="font-size: 8px;">required</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-25" vertex="1" connectable="0"><mxGeometry x="0.7095" y="-3" relative="1" as="geometry"><mxPoint x="-9" y="7" as="offset"/></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-30" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-29" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="360" y="70"/><mxPoint x="360" y="70"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-31" value="<font style="font-size: 8px;">required</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-30" vertex="1" connectable="0"><mxGeometry x="0.3444" y="-1" relative="1" as="geometry"><mxPoint x="6" y="9" as="offset"/></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-33" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-32" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="420" y="70"/><mxPoint x="420" y="100"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-38" value="<font style="font-size: 8px;">includes</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-33" vertex="1" connectable="0"><mxGeometry x="0.4723" relative="1" as="geometry"><mxPoint x="7" y="10" as="offset"/></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-35" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-34" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="420" y="70"/><mxPoint x="420" y="133"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-39" value="<font style="font-size: 8px;">includes</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-35" vertex="1" connectable="0"><mxGeometry x="0.5382" y="-2" relative="1" as="geometry"><mxPoint x="9" y="5" as="offset"/></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-17" target="4oh4sVMnw9r_FDRqXWCS-53" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="310" y="-30"/><mxPoint x="760" y="-30"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-17" value="add recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="250" y="55" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-18" value="select components" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="480" y="25" width="140" height="20" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-24" value="Name the recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="480" y="-10" width="140" height="20" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-29" value="add prepare steps" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="480" y="60" width="140" height="20" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-32" value="select categories" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="480" y="90" width="140" height="20" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-34" value="add picture" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="480" y="120" width="140" height="22.5" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-37" value="delete recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="250" y="100" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-42" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-40" edge="1"><mxGeometry relative="1" as="geometry"><mxPoint x="400" y="70" as="targetPoint"/></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-40" value="edit recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="250" y="150" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-45" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-44" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="450" y="215"/><mxPoint x="450" y="180"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-47" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-46" edge="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-50" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-49" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="450" y="215"/><mxPoint x="450" y="250"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-59" value="<font style="font-size: 8px;">includes</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-50" vertex="1" connectable="0"><mxGeometry x="-0.5962" y="-1" relative="1" as="geometry"><mxPoint y="9" as="offset"/></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-56" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-43" target="4oh4sVMnw9r_FDRqXWCS-53" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="310" y="270"/><mxPoint x="760" y="270"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-43" value="browse recipes" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="250" y="200" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-44" value="full text search" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="490" y="170" width="120" height="20" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-46" target="4oh4sVMnw9r_FDRqXWCS-44" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="630" y="215"/><mxPoint x="630" y="180"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-46" value="choose categories" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="490" y="205" width="120" height="20" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-49" value="show favorites" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="490" y="240" width="120" height="20" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-57" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-53" target="4oh4sVMnw9r_FDRqXWCS-37" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="830" y="100"/><mxPoint x="830" y="-50"/><mxPoint x="230" y="-50"/><mxPoint x="230" y="115"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-53" target="4oh4sVMnw9r_FDRqXWCS-40" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="830" y="100"/><mxPoint x="830" y="-50"/><mxPoint x="230" y="-50"/><mxPoint x="230" y="165"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-53" value="Display recipe" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="700" y="75" width="120" height="50" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-64" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-63" edge="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-65" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-63" edge="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-67" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-66" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="440" y="385"/><mxPoint x="440" y="415"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-69" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-60" target="4oh4sVMnw9r_FDRqXWCS-68" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="440" y="385"/><mxPoint x="440" y="355"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-70" value="<font style="font-size: 8px;">includes</font>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-69" vertex="1" connectable="0"><mxGeometry x="-0.3204" y="-2" relative="1" as="geometry"><mxPoint x="-18" y="-17" as="offset"/></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-60" value="add ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="240" y="370" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-61" value="search ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="240" y="414" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-62" value="delete ingredient" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="240" y="460" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-63" value="set ingredient name" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="500" y="370" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-66" value="set nutrition values" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="500" y="400" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-68" value="<font style="font-size: 10px;">choose measurement type</font>" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="500" y="340" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-71" value="add to shopping list" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="230" y="600" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-72" value="remove from shopping list" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="230" y="640" width="120" height="40" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-79" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="4oh4sVMnw9r_FDRqXWCS-74" target="4oh4sVMnw9r_FDRqXWCS-43" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="180" y="798"/><mxPoint x="180" y="215"/></Array></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-80" value="includes" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="4oh4sVMnw9r_FDRqXWCS-79" vertex="1" connectable="0"><mxGeometry x="0.5176" y="-1" relative="1" as="geometry"><mxPoint x="-1" y="-15" as="offset"/></mxGeometry></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-74" value="add to meal plan" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="280" y="783" width="120" height="30" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-75" value="remove from meal plan" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="280" y="827" width="120" height="40" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-76" value="show this weeks nutrition score" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="280" y="873" width="120" height="60" as="geometry"/></mxCell><mxCell id="4oh4sVMnw9r_FDRqXWCS-81" value="display meal plan" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="490" y="778" width="120" height="40" as="geometry"/></mxCell><mxCell id="2" value="display shopping list" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="475" y="595" width="120" height="40" as="geometry"/></mxCell></root></mxGraphModel></diagram><diagram id="IOxpQtQOinXd_60UH0zV" name="Seite-2"><mxGraphModel dx="2509" dy="1585" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="4rBL8TMRcDE2g0Xyakx7-3" value="package : recipe" style="swimlane;whiteSpace=wrap;html=1;rounded=0;" parent="1" vertex="1"><mxGeometry x="-20" y="43" width="1170" height="740" as="geometry"/></mxCell><mxCell id="khY43H2GbW4oralui55t-5" value="RecipeEditor" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="340" y="126" width="200" height="116" as="geometry"/></mxCell><mxCell id="khY43H2GbW4oralui55t-8" value="+ RecipeEditor() : Constructor" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-5" vertex="1"><mxGeometry y="26" width="200" height="26" as="geometry"/></mxCell><mxCell id="I4bFckmwjJYNS_oseT-e-1" value="+ RecipeEditor(Recipe r) : Constructor" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-5" vertex="1"><mxGeometry y="52" width="200" height="38" as="geometry"/></mxCell><mxCell id="ZsNRWflmDDHaKi8fymGh-1" value="+ get() : Recipe" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-5" vertex="1"><mxGeometry y="90" width="200" height="26" as="geometry"/></mxCell><mxCell id="khY43H2GbW4oralui55t-9" value="Singleton : RecipeManager" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="20" y="40" width="220" height="190" as="geometry"/></mxCell><mxCell id="khY43H2GbW4oralui55t-10" value="- recipes : List&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"><mxGeometry y="26" width="220" height="26" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-38" value="- categories : Categories" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"><mxGeometry y="52" width="220" height="26" as="geometry"/></mxCell><mxCell id="qvnAXoucquyjZ7kPEuXb-9" value="- ingredients : IngredientList" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"><mxGeometry y="78" width="220" height="26" as="geometry"/></mxCell><mxCell id="khY43H2GbW4oralui55t-11" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="khY43H2GbW4oralui55t-9" vertex="1"><mxGeometry y="104" width="220" height="8" as="geometry"/></mxCell><mxCell id="khY43H2GbW4oralui55t-12" value="+ addRecipe() : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"><mxGeometry y="112" width="220" height="26" as="geometry"/></mxCell><mxCell id="lNXn1_JIS0mlgrxrveIr-12" value="+ deleteRecipe (int i) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"><mxGeometry y="138" width="220" height="26" as="geometry"/></mxCell><mxCell id="lNXn1_JIS0mlgrxrveIr-13" value="+ editRecipe (int i) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="khY43H2GbW4oralui55t-9" vertex="1"><mxGeometry y="164" width="220" height="26" as="geometry"/></mxCell><mxCell id="1PDsnecl4zy3zphxMVey-1" value="RecipeSearch" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="860" y="40" width="300" height="154" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-26" value="- recipesToSearch : List&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="1PDsnecl4zy3zphxMVey-1" vertex="1"><mxGeometry y="26" width="300" height="26" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-27" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="1PDsnecl4zy3zphxMVey-1" vertex="1"><mxGeometry y="52" width="300" height="8" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-28" value="<i>Constructor:</i><br>+ RecipeSearch(List&lt;Recipe&gt; recipesToSearch)&nbsp;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="1PDsnecl4zy3zphxMVey-1" vertex="1"><mxGeometry y="60" width="300" height="40" as="geometry"/></mxCell><mxCell id="1PDsnecl4zy3zphxMVey-4" value="+ searchByQuery(String query) : List&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="1PDsnecl4zy3zphxMVey-1" vertex="1"><mxGeometry y="100" width="300" height="26" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-3" value="+ searchByCategory(List&lt;Category&gt;) : List&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="1PDsnecl4zy3zphxMVey-1" vertex="1"><mxGeometry y="126" width="300" height="28" as="geometry"/></mxCell><mxCell id="4db8lyx7makHAff3xmPV-1" value="Category" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="625" y="206" width="245" height="126" as="geometry"/></mxCell><mxCell id="4db8lyx7makHAff3xmPV-2" value="- name : String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4db8lyx7makHAff3xmPV-1" vertex="1"><mxGeometry y="26" width="245" height="26" as="geometry"/></mxCell><mxCell id="VXFt1rTyLLwseOzf8AC8-2" value="- colorCode : Integer" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4db8lyx7makHAff3xmPV-1" vertex="1"><mxGeometry y="52" width="245" height="26" as="geometry"/></mxCell><mxCell id="4db8lyx7makHAff3xmPV-3" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="4db8lyx7makHAff3xmPV-1" vertex="1"><mxGeometry y="78" width="245" height="8" as="geometry"/></mxCell><mxCell id="4db8lyx7makHAff3xmPV-4" value="overrides:<br>+ equals(Object o) : boolean" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4db8lyx7makHAff3xmPV-1" vertex="1"><mxGeometry y="86" width="245" height="40" as="geometry"/></mxCell><mxCell id="4db8lyx7makHAff3xmPV-5" value="Singleton : Categories" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="585" y="40" width="245" height="112" as="geometry"/></mxCell><mxCell id="4db8lyx7makHAff3xmPV-6" value="- allCategories : Set&lt;Category&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4db8lyx7makHAff3xmPV-5" vertex="1"><mxGeometry y="26" width="245" height="26" as="geometry"/></mxCell><mxCell id="4db8lyx7makHAff3xmPV-7" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="4db8lyx7makHAff3xmPV-5" vertex="1"><mxGeometry y="52" width="245" height="8" as="geometry"/></mxCell><mxCell id="4db8lyx7makHAff3xmPV-8" value="+ registerCategory(String name) : boolean" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4db8lyx7makHAff3xmPV-5" vertex="1"><mxGeometry y="60" width="245" height="26" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-1" value="+ getAllCategories() : Set&lt;Category&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4db8lyx7makHAff3xmPV-5" vertex="1"><mxGeometry y="86" width="245" height="26" as="geometry"/></mxCell><mxCell id="VXFt1rTyLLwseOzf8AC8-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="90y9bFiBt-Dw9IB2Oaka-1" target="BmttCFs_K1xAuYzUHSLz-17" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="450" y="437"/><mxPoint x="235" y="437"/></Array></mxGeometry></mxCell><mxCell id="90y9bFiBt-Dw9IB2Oaka-1" value="Recipe&nbsp;" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="315" y="502" width="270" height="182" as="geometry"><mxRectangle x="20" y="150" width="80" height="30" as="alternateBounds"/></mxGeometry></mxCell><mxCell id="90y9bFiBt-Dw9IB2Oaka-2" value="- ingredients: HashMap&lt;RecipeComponent, Integer&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"><mxGeometry y="26" width="270" height="34" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-2" value="- description : String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"><mxGeometry y="60" width="270" height="24" as="geometry"/></mxCell><mxCell id="Cg_uZv0A1mTYIWKAJ-0d-3" value="- preparation : ArrayList&lt;String&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"><mxGeometry y="84" width="270" height="24" as="geometry"/></mxCell><mxCell id="Cg_uZv0A1mTYIWKAJ-0d-4" value="- categories : Set&lt;Category&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"><mxGeometry y="108" width="270" height="26" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-4" value="- preparationTimeMins : Integer" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"><mxGeometry y="134" width="270" height="24" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-1" value="- created : LocalDateTime" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="90y9bFiBt-Dw9IB2Oaka-1" vertex="1"><mxGeometry y="158" width="270" height="24" as="geometry"/></mxCell><mxCell id="VXFt1rTyLLwseOzf8AC8-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="4LD2Q_2ablrLRUKtAQnm-8" target="BmttCFs_K1xAuYzUHSLz-17" edge="1"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="155" y="437"/><mxPoint x="235" y="437"/></Array></mxGeometry></mxCell><mxCell id="VXFt1rTyLLwseOzf8AC8-8" value="implements" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="VXFt1rTyLLwseOzf8AC8-6" vertex="1" connectable="0"><mxGeometry x="0.5309" y="1" relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-8" value="Ingredient" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="20" y="446" width="270" height="52" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-25" value="- unit : Measurement" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-8" vertex="1"><mxGeometry y="26" width="270" height="26" as="geometry"/></mxCell><mxCell id="WwHfsR9ecwNkWHZ6sJ4B-4" value="&lt;&lt;enum&gt;&gt;<br><b>Measurement</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="55" y="566" width="140" height="142" as="geometry"/></mxCell><mxCell id="WwHfsR9ecwNkWHZ6sJ4B-5" value="PIECE" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"><mxGeometry y="26" width="140" height="26" as="geometry"/></mxCell><mxCell id="WwHfsR9ecwNkWHZ6sJ4B-6" value="GRAM" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"><mxGeometry y="52" width="140" height="26" as="geometry"/></mxCell><mxCell id="WwHfsR9ecwNkWHZ6sJ4B-7" value="MILLILITER" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"><mxGeometry y="78" width="140" height="32" as="geometry"/></mxCell><mxCell id="WwHfsR9ecwNkWHZ6sJ4B-9" value="PINCH" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="WwHfsR9ecwNkWHZ6sJ4B-4" vertex="1"><mxGeometry y="110" width="140" height="32" as="geometry"/></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-1" value="&lt;&lt;enum&gt;&gt;<br><b>Nutriton</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="730" y="506" width="140" height="202" as="geometry"/></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-2" value="CALORIES" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"><mxGeometry y="26" width="140" height="26" as="geometry"/></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-3" value="CARBS" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"><mxGeometry y="52" width="140" height="26" as="geometry"/></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-4" value="PROTEINS" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"><mxGeometry y="78" width="140" height="32" as="geometry"/></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-5" value="SALT" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"><mxGeometry y="110" width="140" height="32" as="geometry"/></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-6" value="FAT" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacingLeft=4;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"><mxGeometry y="142" width="140" height="30" as="geometry"/></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-7" value="FIBERS" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacingLeft=4;" parent="4LD2Q_2ablrLRUKtAQnm-1" vertex="1"><mxGeometry y="172" width="140" height="30" as="geometry"/></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-12" value="NutritionTable" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="710" y="346" width="260" height="100" as="geometry"/></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-13" value="- table : HashMap&lt;Nutrition, Double&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"><mxGeometry y="26" width="260" height="26" as="geometry"/></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-14" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"><mxGeometry y="52" width="260" height="8" as="geometry"/></mxCell><mxCell id="4LD2Q_2ablrLRUKtAQnm-15" value="+ getNutritionForRecipe (Recipe recipe) : NutritionTable" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="4LD2Q_2ablrLRUKtAQnm-12" vertex="1"><mxGeometry y="60" width="260" height="40" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-17" value="&lt;&lt;interface&gt;&gt;<br><b>RecipeComponent</b>" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="140" y="287" width="190" height="104" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-18" value="+ getName() : String" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="BmttCFs_K1xAuYzUHSLz-17" vertex="1"><mxGeometry y="26" width="190" height="26" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-6" value="+ getNutritionTable() : NutritionTable" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontSize=11;" parent="BmttCFs_K1xAuYzUHSLz-17" vertex="1"><mxGeometry y="52" width="190" height="26" as="geometry"/></mxCell><mxCell id="VXFt1rTyLLwseOzf8AC8-1" value="+ getID() : Integer" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;fontSize=11;" parent="BmttCFs_K1xAuYzUHSLz-17" vertex="1"><mxGeometry y="78" width="190" height="26" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-11" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.442;exitY=0.985;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.611;entryY=-0.021;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="BmttCFs_K1xAuYzUHSLz-25" target="WwHfsR9ecwNkWHZ6sJ4B-4" edge="1"><mxGeometry width="160" relative="1" as="geometry"><mxPoint x="138.17999999999984" y="486.004" as="sourcePoint"/><mxPoint x="140" y="556" as="targetPoint"/></mxGeometry></mxCell><mxCell id="ev62EXm1IyDULqRkRese-12" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.441;exitY=1.067;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.439;entryY=0.005;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="BmttCFs_K1xAuYzUHSLz-1" target="4db8lyx7makHAff3xmPV-1" edge="1"><mxGeometry width="160" relative="1" as="geometry"><mxPoint x="860" y="186" as="sourcePoint"/><mxPoint x="1020" y="186" as="targetPoint"/></mxGeometry></mxCell><mxCell id="ev62EXm1IyDULqRkRese-13" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.325;exitY=1.102;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.46;entryY=0.002;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="4LD2Q_2ablrLRUKtAQnm-15" target="4LD2Q_2ablrLRUKtAQnm-1" edge="1"><mxGeometry width="160" relative="1" as="geometry"><mxPoint x="665" y="532" as="sourcePoint"/><mxPoint x="825" y="532" as="targetPoint"/><Array as="points"/></mxGeometry></mxCell><mxCell id="ev62EXm1IyDULqRkRese-18" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.425;exitY=1.069;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.093;entryY=0.019;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-13" target="90y9bFiBt-Dw9IB2Oaka-1" edge="1"><mxGeometry x="-0.8176" relative="1" as="geometry"><mxPoint x="320" y="216" as="sourcePoint"/><mxPoint x="340" y="426" as="targetPoint"/><Array as="points"><mxPoint x="114" y="266"/><mxPoint x="340" y="266"/></Array><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="ev62EXm1IyDULqRkRese-19" value="0..*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="ev62EXm1IyDULqRkRese-18" vertex="1" connectable="0"><mxGeometry x="0.8861" y="-2" relative="1" as="geometry"><mxPoint x="2" y="-51" as="offset"/></mxGeometry></mxCell><mxCell id="ev62EXm1IyDULqRkRese-22" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.007;entryY=-0.075;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" target="4LD2Q_2ablrLRUKtAQnm-15" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="290" y="467" as="sourcePoint"/><mxPoint x="700" y="376" as="targetPoint"/><Array as="points"><mxPoint x="290" y="467"/><mxPoint x="620" y="467"/><mxPoint x="620" y="403"/></Array></mxGeometry></mxCell><mxCell id="ev62EXm1IyDULqRkRese-40" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.005;entryY=0.355;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-12" target="I4bFckmwjJYNS_oseT-e-1" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="230" y="186" as="sourcePoint"/><mxPoint x="400" y="116" as="targetPoint"/></mxGeometry></mxCell><mxCell id="ev62EXm1IyDULqRkRese-41" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=1.006;exitY=-0.077;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.02;entryY=0.615;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="qvnAXoucquyjZ7kPEuXb-9" target="4db8lyx7makHAff3xmPV-8" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="270" y="126" as="sourcePoint"/><mxPoint x="430" y="126" as="targetPoint"/><Array as="points"/></mxGeometry></mxCell><mxCell id="VXFt1rTyLLwseOzf8AC8-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.785;entryY=0.001;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-1" target="4LD2Q_2ablrLRUKtAQnm-12" edge="1"><mxGeometry relative="1" as="geometry"/></mxCell><mxCell id="lNXn1_JIS0mlgrxrveIr-1" value="NutritionCalculator" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="4rBL8TMRcDE2g0Xyakx7-3" vertex="1"><mxGeometry x="880" y="224" width="280" height="78" as="geometry"/></mxCell><mxCell id="lNXn1_JIS0mlgrxrveIr-4" value="+ calculate (Recipe r) : NutritionTable" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-1" vertex="1"><mxGeometry y="26" width="280" height="26" as="geometry"/></mxCell><mxCell id="VXFt1rTyLLwseOzf8AC8-9" value="+ calculate (Recipe r) : NutritionTable" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-1" vertex="1"><mxGeometry y="52" width="280" height="26" as="geometry"/></mxCell><mxCell id="VXFt1rTyLLwseOzf8AC8-4" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0.161;exitY=1.04;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.131;entryY=-0.043;entryDx=0;entryDy=0;entryPerimeter=0;" parent="4rBL8TMRcDE2g0Xyakx7-3" source="lNXn1_JIS0mlgrxrveIr-13" target="4LD2Q_2ablrLRUKtAQnm-8" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="300" y="377" as="sourcePoint"/><mxPoint x="80" y="437" as="targetPoint"/></mxGeometry></mxCell><mxCell id="VXFt1rTyLLwseOzf8AC8-5" value="0..*" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="VXFt1rTyLLwseOzf8AC8-4" vertex="1" connectable="0"><mxGeometry x="0.7378" y="1" relative="1" as="geometry"><mxPoint as="offset"/></mxGeometry></mxCell><mxCell id="XnVSaR7xRqF0c78tSIC_-1" value="package : shoppingList" style="swimlane;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="1280" y="-350" width="300" height="290" as="geometry"/></mxCell><mxCell id="XnVSaR7xRqF0c78tSIC_-2" value="Singleton :ShoppingList" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="XnVSaR7xRqF0c78tSIC_-1" vertex="1"><mxGeometry x="30" y="40" width="240" height="164" as="geometry"/></mxCell><mxCell id="XnVSaR7xRqF0c78tSIC_-3" value="- shoppingList : Map&lt;Ingredient, Boolean&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"><mxGeometry y="26" width="240" height="26" as="geometry"/></mxCell><mxCell id="XnVSaR7xRqF0c78tSIC_-4" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"><mxGeometry y="52" width="240" height="8" as="geometry"/></mxCell><mxCell id="XnVSaR7xRqF0c78tSIC_-5" value="+ clear() : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"><mxGeometry y="60" width="240" height="26" as="geometry"/></mxCell><mxCell id="qvnAXoucquyjZ7kPEuXb-10" value="+ markDone(Ingredient i) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"><mxGeometry y="86" width="240" height="26" as="geometry"/></mxCell><mxCell id="qvnAXoucquyjZ7kPEuXb-11" value="+ markUndone(Ingredient i) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"><mxGeometry y="112" width="240" height="26" as="geometry"/></mxCell><mxCell id="qvnAXoucquyjZ7kPEuXb-12" value="+ get() : HashMap&lt;Ingredient, Boolean&gt;&nbsp;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="XnVSaR7xRqF0c78tSIC_-2" vertex="1"><mxGeometry y="138" width="240" height="26" as="geometry"/></mxCell><mxCell id="xz0VCGe2YetrdaeYra_O-1" value="package : mealPlan" style="swimlane;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="1250" y="414" width="230" height="250" as="geometry"/></mxCell><mxCell id="xz0VCGe2YetrdaeYra_O-2" value="Sngleton : MealPlan" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="xz0VCGe2YetrdaeYra_O-1" vertex="1"><mxGeometry x="20" y="39" width="180" height="190" as="geometry"/></mxCell><mxCell id="xz0VCGe2YetrdaeYra_O-3" value="- mealPlan : Recipe[7]" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"><mxGeometry y="26" width="180" height="26" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-4" value="- weekNutrition : NutritionTable" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"><mxGeometry y="52" width="180" height="26" as="geometry"/></mxCell><mxCell id="xz0VCGe2YetrdaeYra_O-4" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"><mxGeometry y="78" width="180" height="8" as="geometry"/></mxCell><mxCell id="xz0VCGe2YetrdaeYra_O-5" value="+ add(Recipe r, int day)" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"><mxGeometry y="86" width="180" height="26" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-3" value="+ clear(int day) : Recipe" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"><mxGeometry y="112" width="180" height="26" as="geometry"/></mxCell><mxCell id="qvnAXoucquyjZ7kPEuXb-14" value="+ reset() : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"><mxGeometry y="138" width="180" height="26" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-5" value="+ get() : MealPlan" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="xz0VCGe2YetrdaeYra_O-2" vertex="1"><mxGeometry y="164" width="180" height="26" as="geometry"/></mxCell><mxCell id="lNXn1_JIS0mlgrxrveIr-5" value="Singleton : App" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1"><mxGeometry x="1232" y="50" width="420" height="294" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-39" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.278;entryY=1.138;entryDx=0;entryDy=0;entryPerimeter=0;" parent="lNXn1_JIS0mlgrxrveIr-5" target="qvnAXoucquyjZ7kPEuXb-12" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="98" as="sourcePoint"/><mxPoint x="258" as="targetPoint"/><Array as="points"><mxPoint x="98" y="-63"/><mxPoint x="145" y="-63"/></Array></mxGeometry></mxCell><mxCell id="lNXn1_JIS0mlgrxrveIr-6" value="- recipeManager : RecipeManager" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"><mxGeometry y="26" width="420" height="26" as="geometry"/></mxCell><mxCell id="lNXn1_JIS0mlgrxrveIr-10" value="- shoppingList : ShoppingList<br>" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"><mxGeometry y="52" width="420" height="26" as="geometry"/></mxCell><mxCell id="lNXn1_JIS0mlgrxrveIr-11" value="- mealPlan : MealPlan" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"><mxGeometry y="78" width="420" height="26" as="geometry"/></mxCell><mxCell id="h23uL9lWt6JHxaophjVK-1" value="- search : RecipeSearch" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"><mxGeometry y="104" width="420" height="26" as="geometry"/></mxCell><mxCell id="h23uL9lWt6JHxaophjVK-3" value="- lastSearchResults : List&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"><mxGeometry y="130" width="420" height="26" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-15" value="- fileManager : FileManager" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"><mxGeometry y="156" width="420" height="26" as="geometry"/></mxCell><mxCell id="lNXn1_JIS0mlgrxrveIr-7" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"><mxGeometry y="182" width="420" height="8" as="geometry"/></mxCell><mxCell id="lNXn1_JIS0mlgrxrveIr-8" value="+ start() : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"><mxGeometry y="190" width="420" height="26" as="geometry"/></mxCell><mxCell id="h23uL9lWt6JHxaophjVK-2" value="+ search(lastSearchResults, String query) : ArrayList&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"><mxGeometry y="216" width="420" height="26" as="geometry"/></mxCell><mxCell id="h23uL9lWt6JHxaophjVK-4" value="+ search(lastSearchResults, Category category) : ArrayList&lt;Recipe&gt;" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"><mxGeometry y="242" width="420" height="26" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-9" value="+ save(this) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="lNXn1_JIS0mlgrxrveIr-5" vertex="1"><mxGeometry y="268" width="420" height="26" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-11" value="FileManager" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="1" vertex="1"><mxGeometry x="1770" y="50" width="360" height="112" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-12" value="- savePath : Path" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="BmttCFs_K1xAuYzUHSLz-11" vertex="1"><mxGeometry y="26" width="360" height="26" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-13" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="BmttCFs_K1xAuYzUHSLz-11" vertex="1"><mxGeometry y="52" width="360" height="8" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-14" value="+ deserializeFromFile() : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="BmttCFs_K1xAuYzUHSLz-11" vertex="1"><mxGeometry y="60" width="360" height="26" as="geometry"/></mxCell><mxCell id="BmttCFs_K1xAuYzUHSLz-16" value="+ serializeToFile(App app) : void" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;" parent="BmttCFs_K1xAuYzUHSLz-11" vertex="1"><mxGeometry y="86" width="360" height="26" as="geometry"/></mxCell><mxCell id="ev62EXm1IyDULqRkRese-32" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=1;entryY=0.11;entryDx=0;entryDy=0;entryPerimeter=0;exitX=-0.004;exitY=0.051;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="h23uL9lWt6JHxaophjVK-1" target="1PDsnecl4zy3zphxMVey-1" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="1210" y="160" as="sourcePoint"/><mxPoint x="1360" y="140" as="targetPoint"/><Array as="points"><mxPoint x="1190" y="155"/><mxPoint x="1190" y="100"/><mxPoint x="1160" y="100"/></Array></mxGeometry></mxCell><mxCell id="ev62EXm1IyDULqRkRese-37" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.305;exitY=0.969;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="BmttCFs_K1xAuYzUHSLz-9" target="xz0VCGe2YetrdaeYra_O-2" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="1310" y="370" as="sourcePoint"/><mxPoint x="1470" y="370" as="targetPoint"/></mxGeometry></mxCell><mxCell id="ev62EXm1IyDULqRkRese-42" value="" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.417;entryY=-0.007;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="lNXn1_JIS0mlgrxrveIr-6" target="khY43H2GbW4oralui55t-9" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="650" y="-50" as="sourcePoint"/><mxPoint x="100" y="20" as="targetPoint"/><Array as="points"><mxPoint x="1210" y="89"/><mxPoint x="1210" y="20"/><mxPoint x="92" y="20"/></Array></mxGeometry></mxCell><mxCell id="ev62EXm1IyDULqRkRese-43" value="1" style="endArrow=open;html=1;endSize=12;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=orthogonalEdgeStyle;align=left;verticalAlign=bottom;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.417;entryY=1.115;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="BmttCFs_K1xAuYzUHSLz-15" target="BmttCFs_K1xAuYzUHSLz-16" edge="1"><mxGeometry x="-1" y="3" relative="1" as="geometry"><mxPoint x="1690" y="220" as="sourcePoint"/><mxPoint x="1850" y="220" as="targetPoint"/><Array as="points"><mxPoint x="1920" y="219"/></Array></mxGeometry></mxCell><mxCell id="ev62EXm1IyDULqRkRese-44" value="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="ev62EXm1IyDULqRkRese-43" vertex="1" connectable="0"><mxGeometry x="0.7682" y="-1" relative="1" as="geometry"><mxPoint y="-10" as="offset"/></mxGeometry></mxCell><mxCell id="VXFt1rTyLLwseOzf8AC8-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.614;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="xz0VCGe2YetrdaeYra_O-3" target="VXFt1rTyLLwseOzf8AC8-9" edge="1"><mxGeometry relative="1" as="geometry"><mxPoint x="1110" y="400" as="targetPoint"/><Array as="points"><mxPoint x="1032" y="492"/><mxPoint x="1032" y="440"/></Array></mxGeometry></mxCell></root></mxGraphModel></diagram></mxfile> \ No newline at end of file diff --git a/src/main/java/mi/hdm/components/IngredientLabel.java b/src/main/java/mi/hdm/components/IngredientLabel.java index 84a3bae..6ecf4e8 100644 --- a/src/main/java/mi/hdm/components/IngredientLabel.java +++ b/src/main/java/mi/hdm/components/IngredientLabel.java @@ -1,12 +1,9 @@ package mi.hdm.components; -import javafx.geometry.Pos; import javafx.scene.control.Label; import javafx.scene.layout.HBox; import mi.hdm.recipes.Measurement; -import java.util.Map; - public class IngredientLabel extends HBox { private final String name; @@ -17,15 +14,17 @@ public class IngredientLabel extends HBox { super(); this.name = name; this.amount = amount; - this.measurement =measurement; + this.measurement = measurement; - Label labelAmount = new Label(String.valueOf(amount) + " " + String.valueOf(measurement)); - Label labelName = new Label (name); + Label labelAmount = new Label(amount + " " + measurement); + labelAmount.prefWidth(100); + Label labelName = new Label(name); + labelName.prefWidth(300); getChildren().addAll(labelAmount, labelName); //setAlignment(Pos.BASELINE_LEFT); - //setSpacing(5.0); + setSpacing(5.0); //setStyle("-fx-padding: 5px"); } } diff --git a/src/main/java/mi/hdm/controllers/CategoryCreatorController.java b/src/main/java/mi/hdm/controllers/CategoryCreatorController.java new file mode 100644 index 0000000..8fc2d42 --- /dev/null +++ b/src/main/java/mi/hdm/controllers/CategoryCreatorController.java @@ -0,0 +1,64 @@ +package mi.hdm.controllers; + +import javafx.fxml.FXML; +import javafx.scene.control.ColorPicker; +import javafx.scene.control.TextField; +import javafx.scene.layout.AnchorPane; +import javafx.scene.paint.Color; +import mi.hdm.exceptions.InvalidCategoryException; +import mi.hdm.recipes.CategoryManager; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class CategoryCreatorController extends BaseController { + private final static Logger log = LogManager.getLogger(CategoryCreatorController.class); + + private final CategoryManager categoryManager; + + @FXML + private AnchorPane parent; + @FXML + private TextField nameTextField; + @FXML + private ColorPicker colorPicker; + + public CategoryCreatorController(CategoryManager categoryManager) { + this.categoryManager = categoryManager; + } + + @FXML + public void initialize() { + loadHeader(parent); + } + + @FXML + public void handleAddCategory() { + log.debug("User submitted category"); + String name = nameTextField.getText(); + int colorCode = colorToHexInt(colorPicker.getValue()); + try { + categoryManager.addCategory(name, colorCode); + log.info("Created new category '{}'.", name); + changeScene(View.MAIN); + } catch (InvalidCategoryException e) { + //TODO: display an error message + log.error("Category '{}' was not created;", name); + log.error(e.getMessage()); + } + } + + @FXML + public void handleCancel() { + log.info("User canceled category creation"); + changeScene(View.MAIN); + } + + private String format(double val) { + String in = Integer.toHexString((int) Math.round(val * 255)); + return in.length() == 1 ? "0" + in : in; + } + + private int colorToHexInt(Color value) { + return Integer.parseInt(format(value.getRed()) + format(value.getGreen()) + format(value.getBlue()), 16); + } +} diff --git a/src/main/java/mi/hdm/controllers/HeaderController.java b/src/main/java/mi/hdm/controllers/HeaderController.java index eebd46b..e42e972 100644 --- a/src/main/java/mi/hdm/controllers/HeaderController.java +++ b/src/main/java/mi/hdm/controllers/HeaderController.java @@ -12,6 +12,7 @@ import org.apache.logging.log4j.Logger; import java.util.Collection; public class HeaderController extends BaseController { + //TODO: searching needs to update the view! private final static Logger log = LogManager.getLogger(HeaderController.class); @FXML @@ -57,4 +58,8 @@ public class HeaderController extends BaseController { public void changeSceneToIngredientCreator() { changeScene(View.INGREDIENT_CREATOR); } + + public void changeSceneToCategoryCreator() { + changeScene(View.CATEGORY_CREATOR); + } } diff --git a/src/main/java/mi/hdm/controllers/RecipeViewController.java b/src/main/java/mi/hdm/controllers/RecipeViewController.java index 842de59..3e161f7 100644 --- a/src/main/java/mi/hdm/controllers/RecipeViewController.java +++ b/src/main/java/mi/hdm/controllers/RecipeViewController.java @@ -2,9 +2,6 @@ package mi.hdm.controllers; import javafx.fxml.FXML; import javafx.scene.control.Label; -import javafx.scene.control.TableColumn; -import javafx.scene.control.TableView; -import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; @@ -14,17 +11,13 @@ import mi.hdm.recipes.*; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - public class RecipeViewController extends BaseController { private static final Logger log = LogManager.getLogger(RecipeViewController.class); private final Recipe recipe; - private RecipeManager recipeManager; - private IngredientManager ingredientManager; + private final RecipeManager recipeManager; + private final IngredientManager ingredientManager; @FXML private AnchorPane parent; @FXML @@ -70,6 +63,7 @@ public class RecipeViewController extends BaseController { String name = i.getName(); Measurement measurement = i.getMeasurement(); IngredientLabel ingredientLabel = new IngredientLabel(name, amount, measurement); + log.debug("Added ingredient label with the following values: {}, {}, {}", name, amount, measurement); ingredientVBox.getChildren().add(ingredientLabel); }); @@ -86,6 +80,7 @@ public class RecipeViewController extends BaseController { log.info("User is trying to edit recipe"); changeScene(View.RECIPE_CREATOR); } + @FXML public void handleDeleteRecipe() { log.info("User is trying to delete recipe"); diff --git a/src/main/java/mi/hdm/controllers/View.java b/src/main/java/mi/hdm/controllers/View.java index a7652cc..f913521 100644 --- a/src/main/java/mi/hdm/controllers/View.java +++ b/src/main/java/mi/hdm/controllers/View.java @@ -17,7 +17,8 @@ public enum View { SHOPPINGLIST_VIEW("/fxml/shoppingList-view.fxml", "Tasty Pages - Shopping List"), MEALPLAN_VIEW("/fxml/Meal_Plan.fxml", "Tasty Pages - Meal Plan"), RECIPE_CREATOR("/fxml/recipe-creator.fxml", "Tasty Pages - Recipe Creator"), - INGREDIENT_CREATOR("/fxml/ingredient-creator.fxml", "Tasty Pages - Ingredient Creator"); + INGREDIENT_CREATOR("/fxml/ingredient-creator.fxml", "Tasty Pages - Ingredient Creator"), + CATEGORY_CREATOR("/fxml/category-creator.fxml", "Tasty Pages - Categoy Creator"); private static final Logger log = LogManager.getLogger(View.class); @@ -64,6 +65,10 @@ public enum View { case INGREDIENT_CREATOR -> loader.setControllerFactory((callback) -> new IngredientCreatorController(model.getIngredientManager()) ); + + case CATEGORY_CREATOR -> loader.setControllerFactory((callback) -> + new CategoryCreatorController(model.getCategoryManager()) + ); } log.debug("Set controller factory for {}", windowTitle); diff --git a/src/main/java/mi/hdm/recipes/Category.java b/src/main/java/mi/hdm/recipes/Category.java index 71dd4fd..d41bb63 100644 --- a/src/main/java/mi/hdm/recipes/Category.java +++ b/src/main/java/mi/hdm/recipes/Category.java @@ -11,10 +11,10 @@ public class Category { public Category(String name, int colourCode) { if (name == null || name.equals("")) { - throw new InvalidCategoryException("Can not add category with name " + name); + throw new InvalidCategoryException("Can not add category with name: '" + name + "'"); } if (colourCode < 0 || colourCode > 0xFFFFFF) { - throw new InvalidCategoryException("Can not add category with color code " + colourCode); + throw new InvalidCategoryException("Can not add category with color code: '" + colourCode + "'"); } this.name = name; this.colourCode = CategoryManager.numberToColorCodeString(colourCode); diff --git a/src/main/java/mi/hdm/recipes/CategoryManager.java b/src/main/java/mi/hdm/recipes/CategoryManager.java index addeb22..9510b86 100644 --- a/src/main/java/mi/hdm/recipes/CategoryManager.java +++ b/src/main/java/mi/hdm/recipes/CategoryManager.java @@ -103,7 +103,9 @@ public class CategoryManager { public static String numberToColorCodeString(int colourCode) { String intToHex = Integer.toHexString(colourCode); - intToHex = intToHex.indent(6 - intToHex.length()).replace(" ", "0"); + intToHex = intToHex + .indent(6 - intToHex.length()) + .replace(" ", "0"); return ("#" + intToHex).strip(); } diff --git a/src/main/java/mi/hdm/recipes/Measurement.java b/src/main/java/mi/hdm/recipes/Measurement.java index 4a6a318..d67cd4b 100644 --- a/src/main/java/mi/hdm/recipes/Measurement.java +++ b/src/main/java/mi/hdm/recipes/Measurement.java @@ -1,7 +1,6 @@ package mi.hdm.recipes; public enum Measurement { - PIECE, GRAM, MILLILITER, diff --git a/src/main/resources/data/simple_nutrition.csv b/src/main/resources/data/simple_nutrition.csv new file mode 100644 index 0000000..bce9c7d --- /dev/null +++ b/src/main/resources/data/simple_nutrition.csv @@ -0,0 +1,41 @@ +"name", "calories", "carbohydrate", "fat", "protein", "fiber", "sodium" +"Chicken Breast", 165, 0, 3.6, 31, 0, 0.69 +"Salmon", 206, 0, 13, 22, 0, 0.59 +"Broccoli", 55, 11, 0.6, 3.7, 5.2, 0.033 +"Quinoa", 120, 21.3, 2, 4.4, 2.8, 0.005 +"Avocado", 160, 9, 15, 2, 7, 0.007 +"Spinach", 23, 3.6, 0.4, 2.9, 2.2, 0.079 +"Olive Oil", 119, 0, 13.5, 0, 0, 0 +"Sweet Potato", 86, 20, 0.2, 1.6, 3, 0.041 +"Eggs", 78, 0.6, 5, 6, 0, 0.062 +"Greek Yogurt", 59, 3.6, 0.4, 10, 0, 0.036 +"Brown Rice", 216, 45, 1.8, 5, 3.5, 0.002 +"Ground Beef (85% lean)", 250, 0, 20, 17, 0, 0.075 +"Garlic", 42, 9, 0.9, 1.8, 0.9, 0.001 +"Chickpeas", 269, 45, 4.2, 14.5, 12.5, 0.935 +"Parmesan Cheese", 431, 3.2, 29, 38, 0, 1.397 +"Onion", 40, 9, 0.1, 1.1, 1.7, 0.004 +"Mushrooms", 22, 3.3, 0.3, 3.1, 1, 0.005 +"Whole Wheat Bread", 79, 14, 1, 4, 3, 0.150 +"Almonds", 579, 22, 50, 21, 12, 0.001 +"Lentils", 353, 63, 1.1, 25, 10.7, 0.006 +"Salad Greens", 5, 1, 0.1, 0.5, 0.5, 0.010 +"Tomato", 18, 4, 0.2, 0.9, 1.2, 0.005 +"Banana", 96, 25, 0.2, 1.1, 2.6, 0.001 +"Pasta (cooked)", 158, 31, 1.3, 5.5, 2.1, 1.7 +"Honey", 64, 17.3, 0, 0, 0.2, 0.001 +"Cauliflower", 25, 5, 0.3, 2, 2, 0.030 +"Shrimp", 84, 0.2, 0.9, 18, 0, 0.111 +"Oatmeal (cooked)", 143, 25, 2.3, 6, 4, 0.002 +"Cheddar Cheese", 403, 1.3, 33.1, 25, 0, 0.621 +"Green Peas", 81, 14, 0.4, 5, 5, 0.002 +"Oats", 389, 66.3, 6.9, 16.9, 10.6, 0.02 +"Greek Salad Dressing", 234, 3, 25, 0, 0, 1.273 +"Cucumber", 16, 3.6, 0.1, 0.7, 0.5, 0.02 +"Peanut Butter", 588, 20, 50, 25, 6, 1.27 +"Cottage Cheese", 103, 3.4, 4.3, 11, 0, 0.664 +"Lemon Juice", 4, 1.1, 0, 0.1, 0.1, 0.005 +"Ground Turkey", 189, 0, 10, 22, 0, 0.70 +"Cilantro", 1, 0.2, 0.1, 0.1, 0.2, 0.003 +"Red Bell Pepper", 31, 7.6, 0.3, 0.9, 2.5, 0.002 +"Yogurt (plain, low-fat)", 59, 3.6, 0.4, 10, 0, 0.24 \ No newline at end of file diff --git a/src/main/resources/fxml/category-creator.fxml b/src/main/resources/fxml/category-creator.fxml new file mode 100644 index 0000000..8366ebc --- /dev/null +++ b/src/main/resources/fxml/category-creator.fxml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.Insets?> +<?import javafx.scene.control.*?> +<?import javafx.scene.layout.*?> +<?import javafx.scene.text.Font?> +<AnchorPane fx:id="parent" prefHeight="700.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/17.0.2-ea" + xmlns:fx="http://javafx.com/fxml/1" fx:controller="mi.hdm.controllers.CategoryCreatorController"> + <padding> + <Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/> + </padding> + <VBox prefHeight="200.0" prefWidth="100.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="50.0" + AnchorPane.rightAnchor="50.0" AnchorPane.topAnchor="50.0"> + <Label text="Create a category"> + <font> + <Font name="System Bold" size="24.0"/> + </font> + </Label> + <Label text="Name for your category"/> + <HBox prefWidth="200.0" spacing="20.0"> + <VBox.margin> + <Insets top="5.0"/> + </VBox.margin> + <TextField fx:id="nameTextField" maxWidth="500.0" prefWidth="400.0" promptText="Enter a name..."/> + <ColorPicker fx:id="colorPicker" editable="true" promptText="Choose a color..."/> + </HBox> + <HBox spacing="30.0"> + <Button mnemonicParsing="false" onAction="#handleCancel" text="Cancel"/> + <Button mnemonicParsing="false" onAction="#handleAddCategory" text="Create category"/> + <VBox.margin> + <Insets top="15.0"/> + </VBox.margin> + </HBox> + </VBox> +</AnchorPane> diff --git a/src/main/resources/fxml/components/header.fxml b/src/main/resources/fxml/components/header.fxml index 24d0691..5aecb21 100644 --- a/src/main/resources/fxml/components/header.fxml +++ b/src/main/resources/fxml/components/header.fxml @@ -14,6 +14,7 @@ <MenuItem mnemonicParsing="false" onAction="#changeSceneToMealPlan" text="Meal Plan" /> <MenuItem mnemonicParsing="false" onAction="#changeSceneToShoppingList" text="Shopping List" /> <MenuItem mnemonicParsing="false" onAction="#changeSceneToIngredientCreator" text="Ingredient Creator"/> + <MenuItem mnemonicParsing="false" onAction="#changeSceneToCategoryCreator" text="Category Creator"/> </items> <graphic> <ImageView fitHeight="36.0" fitWidth="47.0" pickOnBounds="true" preserveRatio="true"> diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index b75fabd..5e7e35c 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -14,7 +14,7 @@ <Logger name="mi.hdm.GuiDriver" level="info"> <AppenderRef ref="A1"/> </Logger> - <Root level="debug"> + <Root level="info"> <AppenderRef ref="STDOUT"/> </Root> </Loggers> -- GitLab