Bladeren bron

Fix a handful of update bugs with observers.

Sam Jaffe 5 jaren geleden
bovenliggende
commit
8a6a7410db

+ 1 - 1
pom.xml

@@ -75,7 +75,7 @@
     <dependency>
       <groupId>org.leumasjaffe</groupId>
       <artifactId>observer</artifactId>
-      <version>0.5.0</version>
+      <version>0.5.1</version>
     </dependency>
     <dependency>
       <groupId>org.leumasjaffe</groupId>

+ 2 - 2
src/main/lombok/org/leumasjaffe/recipe/model/CompoundRecipeComponent.java

@@ -1,8 +1,8 @@
 package org.leumasjaffe.recipe.model;
 
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.Map;
+import java.util.TreeMap;
 import java.util.stream.Stream;
 
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@@ -23,7 +23,7 @@ interface CompoundRecipeComponent extends RecipeComponent {
 	
 	@Override
 	default Collection<Ingredient> getIngredients() {
-		final Map<String, Ingredient> map = new HashMap<>();
+		final Map<String, Ingredient> map = new TreeMap<>();
 		getIngredientsAsStream().forEach(value -> {
         	final String key = value.key();
             map.computeIfPresent(key, (k, v) -> value.plus(v));

+ 13 - 3
src/main/lombok/org/leumasjaffe/recipe/view/AutoGrowPanel.java

@@ -38,9 +38,9 @@ public class AutoGrowPanel extends JPanel {
 					members.get(index).setListPosition(index);
 				}
 				remove((Component) content);
-				getParent().getParent().validate();
+				validateNthParent(4);
 			}
-		}
+		}		
 	}
 	
 	@AllArgsConstructor
@@ -64,7 +64,7 @@ public class AutoGrowPanel extends JPanel {
 			members.add(object);
 			add(object);
 
-			getParent().getParent().validate();
+			validateNthParent(4);
 		}
 		
 	}
@@ -100,4 +100,14 @@ public class AutoGrowPanel extends JPanel {
 		return members.get(members.size() - 1);
 	}
 	
+	private void validateNthParent(int i) {
+		Component current = getParent();
+		Component next = current;
+		while (i --> 0 && next != null) {
+			current = next;
+			next = current.getParent();
+		}
+		current.validate();
+	}
+	
 }

+ 8 - 3
src/main/lombok/org/leumasjaffe/recipe/view/StepPanel.java

@@ -78,8 +78,13 @@ public class StepPanel extends JPanel implements AutoGrowPanel.DocumentListenabl
 		
 		final List<Ingredient> ingredients = step.getIngredients();
 		panelIngredients = new AutoGrowPanel(IngredientPanel::new,
-				Ingredient::new, ingredients::add, i -> {
-					ingredients.remove((int) i);
+				Ingredient::new, ing -> {
+					ingredients.add(ing);
+					listener.setObserved(step, ingredients);
+					ObserverDispatch.notifySubscribers(step);
+				}, i -> {
+					ingredients.remove(i);
+					listener.setObserved(step, ingredients);
 					ObserverDispatch.notifySubscribers(step);
 				}, ingredients.toArray(new Ingredient[0]));
 		GridBagConstraints gbc_panelIngredients = new GridBagConstraints();
@@ -100,7 +105,7 @@ public class StepPanel extends JPanel implements AutoGrowPanel.DocumentListenabl
 		add(txtpnInstructions, gbc_txtpnInstructions);
 		
 		setListPosition(zeroIndex);
-		listener.setObserved(step, step.getIngredients());
+		listener.setObserved(step, ingredients);
 	}
 
 	@Override