URGripInstallationNodeView.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package urgrip.installation;
  2. import com.ur.urcap.api.contribution.installation.swing.SwingInstallationNodeView;
  3. import com.ur.urcap.api.domain.data.DataModel;
  4. import com.ur.urcap.api.domain.io.IO;
  5. import urgrip.programnodes.Style;
  6. import javax.swing.*;
  7. import javax.swing.text.SimpleAttributeSet;
  8. import javax.swing.text.StyleConstants;
  9. import java.awt.Component;
  10. import java.awt.Dimension;
  11. import java.awt.event.ActionEvent;
  12. import java.awt.event.ActionListener;
  13. import java.util.Collection;
  14. import java.util.Vector;
  15. import static urgrip.installation.URGripInstallationNodeContribution.*;
  16. public class URGripInstallationNodeView implements SwingInstallationNodeView<URGripInstallationNodeContribution> {
  17. private final Style style;
  18. private Box ddGripOpen;
  19. private Box ddGripClose;
  20. private Box ddBlow;
  21. private Box ddCoupleOpen;
  22. private Box ddCoupleClose;
  23. private Box ddWaitFor;
  24. private URGripInstallationNodeContribution installationNode;
  25. public URGripInstallationNodeView(Style style) {
  26. this.style = style;
  27. }
  28. @Override
  29. public void buildUI(JPanel jPanel, final URGripInstallationNodeContribution installationNode) {
  30. this.installationNode=installationNode;
  31. Box.createVerticalBox();
  32. jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
  33. // jPanel.add(createInfo());
  34. // jPanel.add(createVerticalSpacing());
  35. // jPanel.add(createInput(installationNode));
  36. ddGripOpen = createDropdown(KEY_GRIP_OPEN);
  37. jPanel.add(ddGripOpen);
  38. ddGripClose = createDropdown(KEY_GRIP_CLOSE);
  39. jPanel.add(ddGripClose);
  40. ddCoupleOpen = createDropdown(KEY_COUPLE_OPEN);
  41. jPanel.add(ddCoupleOpen);
  42. ddCoupleClose = createDropdown(KEY_COUPLE_CLOSE);
  43. jPanel.add(ddCoupleClose);
  44. ddBlow = createDropdown(KEY_BLOWOUT);
  45. jPanel.add(ddBlow);
  46. ddWaitFor = createDropdown(KEY_WAITFOR);
  47. jPanel.add(ddWaitFor);
  48. }
  49. private Box createDropdown(String key) {
  50. Box section = Box.createHorizontalBox();
  51. section.setAlignmentX(Component.LEFT_ALIGNMENT);
  52. JComboBox jcb = new JComboBox();
  53. jcb.setPreferredSize(style.getInputfieldSize());
  54. jcb.setMaximumSize(style.getInputfieldSize());
  55. jcb.setMinimumSize(style.getInputfieldSize());
  56. jcb.addActionListener(new ActionListener() {
  57. @Override
  58. public void actionPerformed(ActionEvent actionEvent) {
  59. installationNode.setValue(key, (String) jcb.getSelectedItem());
  60. }
  61. });
  62. JLabel jl=new JLabel(key);
  63. jl.setLabelFor(jcb);
  64. section.add(jl);
  65. section.add(createHorizontalSpacing());
  66. section.add(jcb);
  67. return section;
  68. }
  69. private Box createInfo() {
  70. Box infoBox = Box.createVerticalBox();
  71. infoBox.setAlignmentX(Component.LEFT_ALIGNMENT);
  72. JTextPane pane = new JTextPane();
  73. pane.setBorder(BorderFactory.createEmptyBorder());
  74. SimpleAttributeSet attributeSet = new SimpleAttributeSet();
  75. StyleConstants.setLineSpacing(attributeSet, 0.5f);
  76. StyleConstants.setLeftIndent(attributeSet, 0f);
  77. pane.setParagraphAttributes(attributeSet, false);
  78. pane.setText("The popup title below is shared between all Hello World program nodes.\nThe title cannot be empty.");
  79. pane.setEditable(false);
  80. pane.setMaximumSize(pane.getPreferredSize());
  81. pane.setBackground(infoBox.getBackground());
  82. infoBox.add(pane);
  83. return infoBox;
  84. }
  85. private JComboBox getCBFromBox(Box b) {
  86. return (JComboBox) b.getComponent(2);
  87. }
  88. private Component createHorizontalSpacing() {
  89. return Box.createRigidArea(new Dimension(style.getHorizontalSpacing(), 0));
  90. }
  91. private Component createVerticalSpacing() {
  92. return Box.createRigidArea(new Dimension(0, style.getVerticalSpacing()));
  93. }
  94. public void setIO(Collection<IO> ios, DataModel model) {
  95. Vector<String> iov=new Vector<>();
  96. for(IO io: ios)
  97. iov.add(io.getName());
  98. getCBFromBox(ddGripClose).setModel(new DefaultComboBoxModel(iov));
  99. getCBFromBox(ddGripClose).setSelectedItem(model.get(KEY_GRIP_CLOSE, KEY_GRIP_CLOSE_DEFAULT));
  100. getCBFromBox(ddGripOpen).setModel(new DefaultComboBoxModel(iov));
  101. getCBFromBox(ddGripOpen).setSelectedItem(model.get(KEY_GRIP_OPEN, KEY_GRIP_OPEN_DEFAULT));
  102. getCBFromBox(ddCoupleClose).setModel(new DefaultComboBoxModel(iov));
  103. getCBFromBox(ddCoupleClose).setSelectedItem(model.get(KEY_COUPLE_CLOSE, KEY_COUPLE_CLOSE_DEFAULT));
  104. getCBFromBox(ddCoupleOpen).setModel(new DefaultComboBoxModel(iov));
  105. getCBFromBox(ddCoupleOpen).setSelectedItem(model.get(KEY_COUPLE_OPEN, KEY_COUPLE_OPEN_DEFAULT));
  106. getCBFromBox(ddBlow).setModel(new DefaultComboBoxModel(iov));
  107. getCBFromBox(ddBlow).setSelectedItem(model.get(KEY_BLOWOUT, KEY_BLOWOUT_DEFAULT));
  108. getCBFromBox(ddWaitFor).setModel(new DefaultComboBoxModel(iov));
  109. getCBFromBox(ddWaitFor).setSelectedItem(model.get(KEY_WAITFOR, KEY_WAITFOR_DEFAULT));
  110. }
  111. }