|
|
@@ -4,6 +4,7 @@ import javax.swing.JPanel;
|
|
|
import javax.swing.JScrollPane;
|
|
|
|
|
|
import org.leumasjaffe.observer.ForwardingObservableListener;
|
|
|
+import org.leumasjaffe.observer.ObservableListener;
|
|
|
import org.leumasjaffe.observer.ObserverDispatch;
|
|
|
import org.leumasjaffe.recipe.model.Phase;
|
|
|
import org.leumasjaffe.recipe.model.Element;
|
|
|
@@ -28,10 +29,13 @@ import javax.swing.Box;
|
|
|
@SuppressWarnings("serial")
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
public class ElementPanel extends JScrollPane {
|
|
|
- JPanel panelViewPort;
|
|
|
+ ObservableListener<CollatedDurationPanel, Element> durationListener;
|
|
|
ForwardingObservableListener<Element> listener = new ForwardingObservableListener<>();
|
|
|
|
|
|
- public ElementPanel(Element element) {
|
|
|
+ JLabel lblName;
|
|
|
+ JPanel panelViewPort;
|
|
|
+
|
|
|
+ public ElementPanel() {
|
|
|
setPreferredSize(new Dimension(500, 450));
|
|
|
|
|
|
setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
|
|
@@ -46,7 +50,7 @@ public class ElementPanel extends JScrollPane {
|
|
|
gbl_panelColumnHeader.rowWeights = new double[]{0.0, Double.MIN_VALUE};
|
|
|
panelColumnHeader.setLayout(gbl_panelColumnHeader);
|
|
|
|
|
|
- JLabel lblName = new JLabel(element.getName());
|
|
|
+ lblName = new JLabel();
|
|
|
GridBagConstraints gbc_lblName = new GridBagConstraints();
|
|
|
gbc_lblName.insets = new Insets(0, 0, 0, 5);
|
|
|
gbc_lblName.gridx = 0;
|
|
|
@@ -60,8 +64,7 @@ public class ElementPanel extends JScrollPane {
|
|
|
gbc_horizontalGlue.gridy = 0;
|
|
|
panelColumnHeader.add(horizontalGlue, gbc_horizontalGlue);
|
|
|
|
|
|
- CollatedDurationPanel panelDuration =
|
|
|
- new CollatedDurationPanel(element.getCollatedDuration());
|
|
|
+ CollatedDurationPanel panelDuration = new CollatedDurationPanel();
|
|
|
GridBagConstraints gbc_panelDuration = new GridBagConstraints();
|
|
|
gbc_panelDuration.gridx = 2;
|
|
|
gbc_panelDuration.gridy = 0;
|
|
|
@@ -71,12 +74,26 @@ public class ElementPanel extends JScrollPane {
|
|
|
setViewportView(panelViewPort);
|
|
|
panelViewPort.setLayout(new VerticalLayout(5));
|
|
|
|
|
|
+ durationListener = new ObservableListener<>(panelDuration,
|
|
|
+ (c, v) -> c.setModel(v.getCollatedDuration()));
|
|
|
+ }
|
|
|
+
|
|
|
+ public ElementPanel(final Element element) {
|
|
|
+ this();
|
|
|
+ setModel(element);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setModel(final Element element) {
|
|
|
+ lblName.setText(element.getName());
|
|
|
+
|
|
|
+ panelViewPort.removeAll();
|
|
|
for (final Phase phase : element.getPhases()) {
|
|
|
panelViewPort.add(new PhasePanel(phase));
|
|
|
panelViewPort.add(new JSeparator());
|
|
|
}
|
|
|
|
|
|
listener.setObserved(element, element.getPhases());
|
|
|
+ durationListener.setObserved(element);
|
|
|
}
|
|
|
|
|
|
@Override
|