URGripInstallationNodeView.java 4.9 KB

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