|
|
@@ -3,6 +3,8 @@ package org.leumasjaffe.recipe.view;
|
|
|
import javax.swing.JPanel;
|
|
|
import javax.swing.JScrollPane;
|
|
|
|
|
|
+import org.leumasjaffe.observer.IndirectObservableListener;
|
|
|
+import org.leumasjaffe.observer.ObserverDispatch;
|
|
|
import org.leumasjaffe.recipe.model.Card;
|
|
|
import org.leumasjaffe.recipe.model.Product;
|
|
|
import org.jdesktop.swingx.VerticalLayout;
|
|
|
@@ -13,6 +15,8 @@ import javax.swing.JSeparator;
|
|
|
@SuppressWarnings("serial")
|
|
|
public class ProductPanel extends JScrollPane {
|
|
|
private JPanel panelViewPort;
|
|
|
+ private final IndirectObservableListener<ProductPanel, Product> listener;
|
|
|
+
|
|
|
public ProductPanel(Product product) {
|
|
|
JPanel panelColumnHeader = new JPanel();
|
|
|
setColumnHeaderView(panelColumnHeader);
|
|
|
@@ -23,10 +27,15 @@ public class ProductPanel extends JScrollPane {
|
|
|
panelViewPort = new JPanel();
|
|
|
setViewportView(panelViewPort);
|
|
|
panelViewPort.setLayout(new VerticalLayout(5));
|
|
|
-
|
|
|
+
|
|
|
for (final Card card : product.getCards()) {
|
|
|
panelViewPort.add(new CardPanel(card));
|
|
|
panelViewPort.add(new JSeparator());
|
|
|
}
|
|
|
+
|
|
|
+ listener = new IndirectObservableListener<>(this, (c, t) -> {
|
|
|
+ ObserverDispatch.notifySubscribers(t);
|
|
|
+ });
|
|
|
+ listener.setObserved(product, product.getCards().toArray(new Card[0]));
|
|
|
}
|
|
|
}
|