| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package org.leumasjaffe.recipe.view;
- import javax.swing.JPanel;
- import javax.swing.JScrollPane;
- import org.leumasjaffe.observer.ForwardingObservableListener;
- import org.leumasjaffe.observer.ObserverDispatch;
- import org.leumasjaffe.recipe.model.Phase;
- import org.leumasjaffe.recipe.model.Element;
- import lombok.AccessLevel;
- import lombok.experimental.FieldDefaults;
- import org.jdesktop.swingx.VerticalLayout;
- import javax.swing.JSeparator;
- import javax.swing.ScrollPaneConstants;
- import java.awt.GridBagLayout;
- import javax.swing.JLabel;
- import java.awt.GridBagConstraints;
- import java.awt.Insets;
- import java.awt.Component;
- import java.awt.Dimension;
- import javax.swing.Box;
- @SuppressWarnings("serial")
- @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
- public class ElementPanel extends JScrollPane {
- JPanel panelViewPort;
- ForwardingObservableListener<Element> listener = new ForwardingObservableListener<>();
- public ElementPanel(Element element) {
- setPreferredSize(new Dimension(500, 450));
- setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
- setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
- JPanel panelColumnHeader = new JPanel();
- setColumnHeaderView(panelColumnHeader);
- GridBagLayout gbl_panelColumnHeader = new GridBagLayout();
- gbl_panelColumnHeader.columnWidths = new int[]{0, 0, 0, 0};
- gbl_panelColumnHeader.rowHeights = new int[]{0, 0};
- gbl_panelColumnHeader.columnWeights = new double[]{0.0, 1.0, 0.0, Double.MIN_VALUE};
- gbl_panelColumnHeader.rowWeights = new double[]{0.0, Double.MIN_VALUE};
- panelColumnHeader.setLayout(gbl_panelColumnHeader);
-
- JLabel lblName = new JLabel(element.getName());
- GridBagConstraints gbc_lblName = new GridBagConstraints();
- gbc_lblName.insets = new Insets(0, 0, 0, 5);
- gbc_lblName.gridx = 0;
- gbc_lblName.gridy = 0;
- panelColumnHeader.add(lblName, gbc_lblName);
-
- Component horizontalGlue = Box.createHorizontalGlue();
- GridBagConstraints gbc_horizontalGlue = new GridBagConstraints();
- gbc_horizontalGlue.insets = new Insets(0, 0, 0, 5);
- gbc_horizontalGlue.gridx = 1;
- gbc_horizontalGlue.gridy = 0;
- panelColumnHeader.add(horizontalGlue, gbc_horizontalGlue);
-
- CollatedDurationPanel panelDuration =
- new CollatedDurationPanel(element.getCollatedDuration());
- GridBagConstraints gbc_panelDuration = new GridBagConstraints();
- gbc_panelDuration.gridx = 2;
- gbc_panelDuration.gridy = 0;
- panelColumnHeader.add(panelDuration, gbc_panelDuration);
- panelViewPort = new JPanel();
- setViewportView(panelViewPort);
- panelViewPort.setLayout(new VerticalLayout(5));
-
- for (final Phase phase : element.getPhases()) {
- panelViewPort.add(new PhasePanel(phase));
- panelViewPort.add(new JSeparator());
- }
-
- listener.setObserved(element, element.getPhases());
- }
-
- @Override
- public void removeNotify() {
- super.removeNotify();
- ObserverDispatch.unsubscribeAll(listener);
- }
- }
|