URGripInstallationNodeView.java 4.7 KB

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