MyToolbarContribution.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package urgrip.toolbar;
  2. import com.ur.urcap.api.contribution.toolbar.ToolbarAPIProvider;
  3. import com.ur.urcap.api.contribution.toolbar.ToolbarContext;
  4. import com.ur.urcap.api.contribution.toolbar.swing.SwingToolbarContribution;
  5. import com.ur.urcap.api.domain.io.DigitalIO;
  6. import urgrip.installation.URGripInstallationNodeContribution;
  7. import javax.swing.*;
  8. import java.awt.*;
  9. import java.util.*;
  10. class MyToolbarContribution implements SwingToolbarContribution {
  11. private static final int VERTICAL_SPACE = 10;
  12. private static final int HEADER_FONT_SIZE = 24;
  13. private final ToolbarContext context;
  14. private final ToolbarAPIProvider apiProvider;
  15. private final IOHandler ioHandler;
  16. private final URGripInstallationNodeContribution installationNode;
  17. private JLabel demoToolStatus;
  18. private HashMap<String, JCheckBox> boxes=new HashMap<>();
  19. private DigitalIO ioGripClose, ioGripOpen, ioCoupleClose, ioCoupleOpen, blowout, waitfor;
  20. private JButton bGrip;
  21. private JButton bRelease;
  22. private JButton bBlow;
  23. private JButton bCouple;
  24. private JButton bDecouple;
  25. MyToolbarContribution(ToolbarContext context) {
  26. this.context = context;
  27. this.apiProvider = context.getAPIProvider();
  28. this.ioHandler = new IOHandler(this.apiProvider.getApplicationAPI().getIOModel());
  29. this.installationNode = apiProvider.getApplicationAPI().getInstallationNode(URGripInstallationNodeContribution.class);
  30. }
  31. @Override
  32. public void openView() {
  33. initializeIO();
  34. }
  35. @Override
  36. public void closeView() {
  37. }
  38. private void initializeIO() {
  39. ioGripClose = ioHandler.getDigitalIO(installationNode.getGripCloseIO());
  40. ioGripOpen = ioHandler.getDigitalIO(installationNode.getGripOpenIO());
  41. ioCoupleClose = ioHandler.getDigitalIO(installationNode.getCoupleCloseIO());
  42. ioCoupleOpen = ioHandler.getDigitalIO(installationNode.getCoupleOpenIO());
  43. blowout = ioHandler.getDigitalIO(installationNode.getBlowoutIO());
  44. waitfor = ioHandler.getDigitalIO(installationNode.getWaitforIO());
  45. }
  46. private void setIO(DigitalIO io, boolean b) {
  47. if(io!=null) {
  48. ioCoupleOpen.setValue(b);
  49. }
  50. }
  51. public void buildUI(JPanel jPanel) {
  52. jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
  53. jPanel.add(createHeader());
  54. jPanel.add(createVerticalSpace());
  55. jPanel.add(createButtons());
  56. jPanel.add(createInfo());
  57. }
  58. private Box createHeader() {
  59. Box headerBox = Box.createHorizontalBox();
  60. headerBox.setAlignmentX(Component.CENTER_ALIGNMENT);
  61. JLabel header = new JLabel("Gripper");
  62. header.setFont(header.getFont().deriveFont(Font.BOLD, HEADER_FONT_SIZE));
  63. headerBox.add(header);
  64. return headerBox;
  65. }
  66. private Box createButtons() {
  67. Box box = Box.createHorizontalBox();
  68. bGrip = new JButton("grip");
  69. box.add(bGrip);
  70. new MyButton(bGrip, new HandleButton() {
  71. @Override public void action() {
  72. setIO(ioCoupleOpen,true);
  73. setIO(ioGripClose,false);
  74. }
  75. });
  76. bRelease = new JButton("release");
  77. box.add(bRelease);
  78. new MyButton(bRelease, new HandleButton() {
  79. @Override public void action() {
  80. setIO(ioGripOpen, false);
  81. setIO(ioGripClose, true);
  82. }
  83. });
  84. bBlow = new JButton("blow out");
  85. box.add(bBlow);
  86. new MyButton(bBlow, new HandleButton() {
  87. @Override
  88. public void down() {
  89. setIO(blowout, true);
  90. }
  91. @Override
  92. public void up() {
  93. setIO(blowout, false);
  94. }
  95. });
  96. bCouple = new JButton("couple");
  97. box.add(bCouple);
  98. new MyButton(bCouple, new HandleButton() {
  99. @Override public void action() {
  100. setIO(ioCoupleClose, false);
  101. setIO(ioCoupleOpen, true);
  102. }
  103. });
  104. bDecouple = new JButton("decouple");
  105. box.add(bDecouple);
  106. new MyButton(bDecouple, new HandleButton() {
  107. @Override public void action() {
  108. setIO(ioCoupleClose, true);
  109. setIO(ioCoupleOpen, false);
  110. }
  111. });
  112. return box;
  113. }
  114. private Box createInfo() {
  115. Box infoBox = Box.createVerticalBox();
  116. infoBox.setAlignmentX(Component.CENTER_ALIGNMENT);
  117. demoToolStatus = new JLabel();
  118. demoToolStatus.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
  119. infoBox.add(demoToolStatus);
  120. return infoBox;
  121. }
  122. private Component createVerticalSpace() {
  123. return Box.createRigidArea(new Dimension(0, VERTICAL_SPACE));
  124. }
  125. private void updateText(String text) {
  126. SwingUtilities.invokeLater(() -> demoToolStatus.setText("<HTML>" + text +"</HTML>"));
  127. }
  128. }