ソースを参照

Make Element summary panel appear when ingredient added.

Sam Jaffe 4 年 前
コミット
fbf12af4d0

+ 10 - 2
src/main/lombok/org/leumasjaffe/recipe/controller/AddPhaseAction.java

@@ -6,6 +6,7 @@ import java.awt.event.ActionListener;
 import javax.swing.JPanel;
 import javax.swing.JSeparator;
 
+import org.leumasjaffe.observer.ForwardingObservableListener;
 import org.leumasjaffe.recipe.model.Element;
 import org.leumasjaffe.recipe.model.Phase;
 import org.leumasjaffe.recipe.view.PhasePanel;
@@ -13,16 +14,21 @@ import org.leumasjaffe.recipe.viewmodel.ScaleFactor;
 
 import lombok.AccessLevel;
 import lombok.RequiredArgsConstructor;
-import lombok.Setter;
 import lombok.experimental.FieldDefaults;
 import lombok.experimental.NonFinal;
 
 @RequiredArgsConstructor
 @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class AddPhaseAction implements ActionListener {
+	ForwardingObservableListener<Element> listener = new ForwardingObservableListener<>();
 	JPanel view;
 	ScaleFactor scale;
-	@NonFinal @Setter Element model = null;
+	@NonFinal Element model = null;
+	
+	public void setModel(Element model) {
+		this.model = model;
+		listener.setObserved(this.model, this.model.getPhases());
+	}
 
 	@Override
 	public void actionPerformed(ActionEvent e) {
@@ -31,6 +37,8 @@ public class AddPhaseAction implements ActionListener {
 		view.add(new PhasePanel(newPhase, scale));
 		view.add(new JSeparator());
 		view.revalidate();
+	
+		listener.setObserved(this.model, this.model.getPhases());
 	}
 
 }

+ 0 - 4
src/main/lombok/org/leumasjaffe/recipe/view/ElementPanel.java

@@ -3,7 +3,6 @@ package org.leumasjaffe.recipe.view;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 
-import org.leumasjaffe.observer.ForwardingObservableListener;
 import org.leumasjaffe.observer.ObservableController;
 import org.leumasjaffe.observer.ObservableListener;
 import org.leumasjaffe.observer.ObserverDispatch;
@@ -37,7 +36,6 @@ import javax.swing.JButton;
 @SuppressWarnings("serial")
 @FieldDefaults(level=AccessLevel.PRIVATE)
 public class ElementPanel extends JScrollPane implements AutoGrowPanel.ChildComponent {
-	ForwardingObservableListener<Element> listener = new ForwardingObservableListener<>();
 	ObservableListener<JTextField, Element> nameController;
 	ObservableListener<CollatedDurationPanel, Element> durationListener;
 
@@ -121,7 +119,6 @@ public class ElementPanel extends JScrollPane implements AutoGrowPanel.ChildComp
 			panelViewPort.add(new JSeparator());
 		}
 		
-		listener.setObserved(element, element.getPhases());
 		nameController.setObserved(element);
 		durationListener.setObserved(element);
 	}
@@ -142,7 +139,6 @@ public class ElementPanel extends JScrollPane implements AutoGrowPanel.ChildComp
 	@Override
 	public void removeNotify() {
 		super.removeNotify();
-		ObserverDispatch.unsubscribeAll(listener);
 		ObserverDispatch.unsubscribeAll(nameController);
 		ObserverDispatch.unsubscribeAll(durationListener);
 	}