浏览代码

Add hookups to update the Element Name

Sam Jaffe 5 年之前
父节点
当前提交
344fa000a5
共有 1 个文件被更改,包括 10 次插入5 次删除
  1. 10 5
      src/main/lombok/org/leumasjaffe/recipe/view/summary/ElementPanel.java

+ 10 - 5
src/main/lombok/org/leumasjaffe/recipe/view/summary/ElementPanel.java

@@ -20,7 +20,9 @@ import java.awt.GridBagConstraints;
 @SuppressWarnings("serial")
 @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class ElementPanel extends JPanel {
-	ObservableListener<JPanel, Element> listener;
+	ObservableListener<JLabel, Element> nameListener;
+	ObservableListener<JPanel, Element> childListener;
+	
 	@Getter(AccessLevel.PACKAGE) JLabel lblProductName;
 	@Getter(AccessLevel.PACKAGE) JPanel panelIngredients;
 	
@@ -32,7 +34,7 @@ public class ElementPanel extends JPanel {
 		gridBagLayout.rowWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};
 		setLayout(gridBagLayout);
 		
-		lblProductName = new JLabel(element.getName());
+		lblProductName = new JLabel();
 		GridBagConstraints gbc_lblProductName = new GridBagConstraints();
 		gbc_lblProductName.insets = new Insets(0, 0, 0, 5);
 		gbc_lblProductName.gridx = 0;
@@ -49,16 +51,19 @@ public class ElementPanel extends JPanel {
 		gbc_panel.gridy = 1;
 		add(panelIngredients, gbc_panel);
 		
-		listener = new ObservableListener<>(panelIngredients, (c, t) -> {
+		nameListener = new ObservableListener<>(lblProductName, (c, t) -> c.setText(t.getName()));
+		childListener = new ObservableListener<>(panelIngredients, (c, t) -> {
 			c.removeAll();
 			element.getIngredients().stream().map(IngredientPanel::new).forEach(c::add);
 		});
-		listener.setObserved(element);
+		
+		nameListener.setObserved(element);
+		childListener.setObserved(element);
 	}
 	
 	@Override
 	public void removeNotify() {
 		super.removeNotify();
-		ObserverDispatch.unsubscribeAll(listener);
+		ObserverDispatch.unsubscribeAll(childListener);
 	}
 }