|
@@ -2,19 +2,19 @@ package org.leumasjaffe.recipe.view;
|
|
|
|
|
|
|
|
import javax.swing.JSplitPane;
|
|
import javax.swing.JSplitPane;
|
|
|
|
|
|
|
|
-import org.jdesktop.swingx.VerticalLayout;
|
|
|
|
|
import org.leumasjaffe.observer.ForwardingObservableListener;
|
|
import org.leumasjaffe.observer.ForwardingObservableListener;
|
|
|
import org.leumasjaffe.observer.ObservableListener;
|
|
import org.leumasjaffe.observer.ObservableListener;
|
|
|
import org.leumasjaffe.observer.ObserverDispatch;
|
|
import org.leumasjaffe.observer.ObserverDispatch;
|
|
|
|
|
+import org.leumasjaffe.recipe.model.Element;
|
|
|
import org.leumasjaffe.recipe.model.RecipeCard;
|
|
import org.leumasjaffe.recipe.model.RecipeCard;
|
|
|
import org.leumasjaffe.recipe.view.summary.SummaryPanel;
|
|
import org.leumasjaffe.recipe.view.summary.SummaryPanel;
|
|
|
|
|
|
|
|
import lombok.AccessLevel;
|
|
import lombok.AccessLevel;
|
|
|
|
|
+import lombok.Getter;
|
|
|
import lombok.experimental.FieldDefaults;
|
|
import lombok.experimental.FieldDefaults;
|
|
|
|
|
|
|
|
import java.awt.Dimension;
|
|
import java.awt.Dimension;
|
|
|
|
|
|
|
|
-import javax.swing.JPanel;
|
|
|
|
|
import javax.swing.JScrollPane;
|
|
import javax.swing.JScrollPane;
|
|
|
import javax.swing.ScrollPaneConstants;
|
|
import javax.swing.ScrollPaneConstants;
|
|
|
|
|
|
|
@@ -25,16 +25,16 @@ public class RecipeCardPanel extends JSplitPane {
|
|
|
ForwardingObservableListener<RecipeCard> listener;
|
|
ForwardingObservableListener<RecipeCard> listener;
|
|
|
|
|
|
|
|
SummaryPanel summaryPanel;
|
|
SummaryPanel summaryPanel;
|
|
|
- JPanel rightPanel;
|
|
|
|
|
|
|
+ @Getter(AccessLevel.PACKAGE) AutoGrowPanel<ElementPanel, Element> panelElements;
|
|
|
|
|
|
|
|
public RecipeCardPanel() {
|
|
public RecipeCardPanel() {
|
|
|
setPreferredSize(new Dimension(1050, 600));
|
|
setPreferredSize(new Dimension(1050, 600));
|
|
|
|
|
|
|
|
summaryPanel = new SummaryPanel();
|
|
summaryPanel = new SummaryPanel();
|
|
|
- rightPanel = new JPanel();
|
|
|
|
|
- rightPanel.setLayout(new VerticalLayout(5));
|
|
|
|
|
|
|
+ panelElements = new AutoGrowPanel<>(Element::new, ElementPanel::new);
|
|
|
|
|
+ panelElements.setGap(5);
|
|
|
|
|
|
|
|
- final JScrollPane scrollPane = new JScrollPane(rightPanel);
|
|
|
|
|
|
|
+ final JScrollPane scrollPane = new JScrollPane(panelElements);
|
|
|
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
|
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
|
|
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
|
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
|
|
setRightComponent(scrollPane);
|
|
setRightComponent(scrollPane);
|
|
@@ -51,7 +51,12 @@ public class RecipeCardPanel extends JSplitPane {
|
|
|
|
|
|
|
|
public void setModel(final RecipeCard card) {
|
|
public void setModel(final RecipeCard card) {
|
|
|
summaryPanel.setModel(card);
|
|
summaryPanel.setModel(card);
|
|
|
- card.getComponents().map(ElementPanel::new).forEach(rightPanel::add);
|
|
|
|
|
|
|
+ panelElements.setModel(card.getElements(), added -> {
|
|
|
|
|
+ listener.setObserved(card, card.getElements());
|
|
|
|
|
+ if (!added) {
|
|
|
|
|
+ ObserverDispatch.notifySubscribers(card);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
|
|
|
listener.setObserved(card, card.getElements());
|
|
listener.setObserved(card, card.getElements());
|
|
|
updateUI.setObserved(card);
|
|
updateUI.setObserved(card);
|