|
|
@@ -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);
|
|
|
}
|
|
|
}
|