ElementPanel.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package org.leumasjaffe.recipe.view;
  2. import javax.swing.JPanel;
  3. import javax.swing.JScrollPane;
  4. import org.leumasjaffe.observer.ForwardingObservableListener;
  5. import org.leumasjaffe.observer.ObserverDispatch;
  6. import org.leumasjaffe.recipe.model.Phase;
  7. import org.leumasjaffe.recipe.model.Element;
  8. import lombok.AccessLevel;
  9. import lombok.experimental.FieldDefaults;
  10. import org.jdesktop.swingx.VerticalLayout;
  11. import javax.swing.JSeparator;
  12. import java.awt.GridBagLayout;
  13. import javax.swing.JLabel;
  14. import java.awt.GridBagConstraints;
  15. import java.awt.Insets;
  16. import java.awt.Component;
  17. import javax.swing.Box;
  18. @SuppressWarnings("serial")
  19. @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
  20. public class ElementPanel extends JScrollPane {
  21. JPanel panelViewPort;
  22. ForwardingObservableListener<Element> listener = new ForwardingObservableListener<>();
  23. public ElementPanel(Element element) {
  24. JPanel panelColumnHeader = new JPanel();
  25. setColumnHeaderView(panelColumnHeader);
  26. GridBagLayout gbl_panelColumnHeader = new GridBagLayout();
  27. gbl_panelColumnHeader.columnWidths = new int[]{0, 0, 0, 0};
  28. gbl_panelColumnHeader.rowHeights = new int[]{0, 0};
  29. gbl_panelColumnHeader.columnWeights = new double[]{0.0, 1.0, 0.0, Double.MIN_VALUE};
  30. gbl_panelColumnHeader.rowWeights = new double[]{0.0, Double.MIN_VALUE};
  31. panelColumnHeader.setLayout(gbl_panelColumnHeader);
  32. JLabel lblName = new JLabel(element.getName());
  33. GridBagConstraints gbc_lblName = new GridBagConstraints();
  34. gbc_lblName.insets = new Insets(0, 0, 0, 5);
  35. gbc_lblName.gridx = 0;
  36. gbc_lblName.gridy = 0;
  37. panelColumnHeader.add(lblName, gbc_lblName);
  38. Component horizontalGlue = Box.createHorizontalGlue();
  39. GridBagConstraints gbc_horizontalGlue = new GridBagConstraints();
  40. gbc_horizontalGlue.insets = new Insets(0, 0, 0, 5);
  41. gbc_horizontalGlue.gridx = 1;
  42. gbc_horizontalGlue.gridy = 0;
  43. panelColumnHeader.add(horizontalGlue, gbc_horizontalGlue);
  44. CollatedDurationPanel panelDuration =
  45. new CollatedDurationPanel(element.getCollatedDuration());
  46. GridBagConstraints gbc_panelDuration = new GridBagConstraints();
  47. gbc_panelDuration.gridx = 2;
  48. gbc_panelDuration.gridy = 0;
  49. panelColumnHeader.add(panelDuration, gbc_panelDuration);
  50. panelViewPort = new JPanel();
  51. setViewportView(panelViewPort);
  52. panelViewPort.setLayout(new VerticalLayout(5));
  53. for (final Phase phase : element.getPhases()) {
  54. panelViewPort.add(new PhasePanel(phase));
  55. panelViewPort.add(new JSeparator());
  56. }
  57. listener.setObserved(element, element.getPhases());
  58. }
  59. @Override
  60. public void removeNotify() {
  61. super.removeNotify();
  62. ObserverDispatch.unsubscribeAll(listener);
  63. }
  64. }