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(actionEvent -> {
  60. String value=(String) jcb.getSelectedItem();
  61. installationNode.setValue(key, value);
  62. installationNode.setValue(key+"_NR", String.valueOf(value));
  63. });
  64. JLabel jl=new JLabel(key);
  65. jl.setLabelFor(jcb);
  66. section.add(jl);
  67. section.add(createHorizontalSpacing());
  68. section.add(jcb);
  69. return section;
  70. }
  71. private Box createInfo() {
  72. Box infoBox = Box.createVerticalBox();
  73. infoBox.setAlignmentX(Component.LEFT_ALIGNMENT);
  74. JTextPane pane = new JTextPane();
  75. pane.setBorder(BorderFactory.createEmptyBorder());
  76. SimpleAttributeSet attributeSet = new SimpleAttributeSet();
  77. StyleConstants.setLineSpacing(attributeSet, 0.5f);
  78. StyleConstants.setLeftIndent(attributeSet, 0f);
  79. pane.setParagraphAttributes(attributeSet, false);
  80. pane.setText("The popup title below is shared between all Hello World program nodes.\nThe title cannot be empty.");
  81. pane.setEditable(false);
  82. pane.setMaximumSize(pane.getPreferredSize());
  83. pane.setBackground(infoBox.getBackground());
  84. infoBox.add(pane);
  85. return infoBox;
  86. }
  87. private JComboBox getCBFromBox(Box b) {
  88. return (JComboBox) b.getComponent(2);
  89. }
  90. private Component createHorizontalSpacing() {
  91. return Box.createRigidArea(new Dimension(style.getHorizontalSpacing(), 0));
  92. }
  93. private Component createVerticalSpacing() {
  94. return Box.createRigidArea(new Dimension(0, style.getVerticalSpacing()));
  95. }
  96. public void setIO(Collection<DigitalIO> ios, DataModel model) {
  97. Vector<String> ioDOUT=new Vector<>();
  98. Vector<String> ioDIN=new Vector<>();
  99. ioDIN.add(IOHandler.NotConnected);
  100. ioDOUT.add(IOHandler.NotConnected);
  101. for(DigitalIO io: ios) {
  102. if(io.isInput())
  103. ioDIN.add(io.getDefaultName());
  104. else
  105. ioDOUT.add(io.getDefaultName());
  106. }
  107. getCBFromBox(ddGripClose).setModel(new DefaultComboBoxModel(ioDOUT));
  108. getCBFromBox(ddGripClose).setSelectedItem(model.get(KEY_GRIP_CLOSE, KEY_GRIP_CLOSE_DEFAULT));
  109. getCBFromBox(ddGripOpen).setModel(new DefaultComboBoxModel(ioDOUT));
  110. getCBFromBox(ddGripOpen).setSelectedItem(model.get(KEY_GRIP_OPEN, KEY_GRIP_OPEN_DEFAULT));
  111. getCBFromBox(ddCoupleClose).setModel(new DefaultComboBoxModel(ioDOUT));
  112. getCBFromBox(ddCoupleClose).setSelectedItem(model.get(KEY_COUPLE_CLOSE, KEY_COUPLE_CLOSE_DEFAULT));
  113. getCBFromBox(ddCoupleOpen).setModel(new DefaultComboBoxModel(ioDOUT));
  114. getCBFromBox(ddCoupleOpen).setSelectedItem(model.get(KEY_COUPLE_OPEN, KEY_COUPLE_OPEN_DEFAULT));
  115. getCBFromBox(ddBlow).setModel(new DefaultComboBoxModel(ioDOUT));
  116. getCBFromBox(ddBlow).setSelectedItem(model.get(KEY_BLOWOUT, KEY_BLOWOUT_DEFAULT));
  117. getCBFromBox(ddWaitFor).setModel(new DefaultComboBoxModel(ioDIN));
  118. getCBFromBox(ddWaitFor).setSelectedItem(model.get(KEY_WAITFOR, KEY_WAITFOR_DEFAULT));
  119. }
  120. }