Browse Source

Fix some bugs and update to observer:0.4.1

Sam Jaffe 5 years ago
parent
commit
d2a387ae4e

+ 1 - 1
pom.xml

@@ -58,7 +58,7 @@
     <dependency>
       <groupId>org.leumasjaffe</groupId>
       <artifactId>observer</artifactId>
-      <version>0.4.0</version>
+      <version>0.4.1</version>
     </dependency>
     <dependency>
       <groupId>org.leumasjaffe</groupId>

+ 8 - 1
src/main/lombok/org/leumasjaffe/recipe/view/CardPanel.java

@@ -3,6 +3,7 @@ package org.leumasjaffe.recipe.view;
 import javax.swing.JPanel;
 
 import org.leumasjaffe.observer.ForwardingObservableListener;
+import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.recipe.model.Card;
 import org.leumasjaffe.recipe.model.Preparation;
 import org.leumasjaffe.recipe.model.Rest;
@@ -20,7 +21,7 @@ public class CardPanel extends JPanel {
 		card.getPreparation().ifPresent(this::addPrep);
 		card.getCooking().forEach(this::addStep);
 		card.getRest().ifPresent(this::addRest);
-		listener.setObserved(card, card.getCooking().toArray(new Step[0]));
+		listener.setObserved(card, card.getCooking());
 	}
 	
 	void addPrep(final Preparation step) {
@@ -34,5 +35,11 @@ public class CardPanel extends JPanel {
 	void addRest(final Rest rest) {
 		add(new RestPanel(rest));
 	}
+	
+	@Override
+	public void removeNotify() {
+		super.removeNotify();
+		ObserverDispatch.unsubscribeAll(listener);
+	}
 
 }

+ 16 - 1
src/main/lombok/org/leumasjaffe/recipe/view/IngredientPanel.java

@@ -12,6 +12,7 @@ import javax.swing.event.DocumentListener;
 import javax.swing.text.NumberFormatter;
 
 import org.leumasjaffe.event.AnyActionDocumentListener;
+import org.leumasjaffe.observer.ObservableListener;
 import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.recipe.model.Ingredient;
 
@@ -25,6 +26,8 @@ public class IngredientPanel extends JPanel implements AutoGrowPanel.DocumentLis
 	private JTextField txtUnit;
 	private JTextField txtPreparation;
 	
+	private ObservableListener<IngredientPanel, Ingredient> listener;
+	
 	public IngredientPanel(final Ingredient ingredient) {
 		GridBagLayout gridBagLayout = new GridBagLayout();
 		gridBagLayout.columnWidths = new int[]{0, 0, 0, 0, 0, 0};
@@ -88,8 +91,14 @@ public class IngredientPanel extends JPanel implements AutoGrowPanel.DocumentLis
 		
 		addDocumentListener((AnyActionDocumentListener) (e) -> {
 			ingredient.setName(txtName.getText());
-			ObserverDispatch.notifySubscribers(ingredient);
+			listener.notifySubscribers(ingredient);
+		});
+		
+		listener = new ObservableListener<>(this, (c, t) -> {
+			if (txtName.getText().equals(t.getName())) return;
+			txtName.setText(t.getName());
 		});
+		listener.setObserved(ingredient);
 	}
 
 	@Override
@@ -101,5 +110,11 @@ public class IngredientPanel extends JPanel implements AutoGrowPanel.DocumentLis
 	public void removeDocumentListener(DocumentListener dl) {
 		this.txtName.getDocument().removeDocumentListener(dl);
 	}
+	
+	@Override
+	public void removeNotify() {
+		super.removeNotify();
+		ObserverDispatch.unsubscribeAll(listener);
+	}
 
 }

+ 1 - 1
src/main/lombok/org/leumasjaffe/recipe/view/ProductPanel.java

@@ -32,6 +32,6 @@ public class ProductPanel extends JScrollPane {
 			panelViewPort.add(new JSeparator());
 		}
 		
-		listener.setObserved(product, product.getCards().toArray(new Card[0]));
+		listener.setObserved(product, product.getCards());
 	}
 }

+ 7 - 0
src/main/lombok/org/leumasjaffe/recipe/view/ProductSummaryPanel.java

@@ -4,6 +4,7 @@ import javax.swing.JPanel;
 
 import org.jdesktop.swingx.VerticalLayout;
 import org.leumasjaffe.observer.ObservableListener;
+import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.recipe.model.Product;
 import java.awt.GridBagLayout;
 import java.awt.Insets;
@@ -46,4 +47,10 @@ public class ProductSummaryPanel extends JPanel {
 		});
 		listener.setObserved(product);
 	}
+	
+	@Override
+	public void removeNotify() {
+		super.removeNotify();
+		ObserverDispatch.unsubscribeAll(listener);
+	}
 }

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

@@ -4,7 +4,7 @@ import javax.swing.JPanel;
 import javax.swing.event.DocumentListener;
 
 import org.leumasjaffe.observer.ForwardingObservableListener;
-import org.leumasjaffe.recipe.model.Ingredient;
+import org.leumasjaffe.observer.ObserverDispatch;
 import org.leumasjaffe.recipe.model.Step;
 
 import java.awt.GridBagLayout;
@@ -87,7 +87,7 @@ public class StepPanel extends JPanel implements AutoGrowPanel.DocumentListenabl
 		add(txtpnInstructions, gbc_txtpnInstructions);
 		
 		setListPosition(zeroIndex);
-		listener.setObserved(step, step.getIngredients().toArray(new Ingredient[0]));
+		listener.setObserved(step, step.getIngredients());
 	}
 
 	@Override
@@ -105,4 +105,10 @@ public class StepPanel extends JPanel implements AutoGrowPanel.DocumentListenabl
 		this.lblIndex.setText("Step " + Integer.toString(zeroIndex + 1));
 		repaint();
 	}
+	
+	@Override
+	public void removeNotify() {
+		super.removeNotify();
+		ObserverDispatch.unsubscribeAll(listener);
+	}
 }