HelloWorldProgramNodeView.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package at.acdp.opcur.ur;
  2. import com.ur.urcap.api.contribution.ContributionProvider;
  3. import com.ur.urcap.api.contribution.program.swing.SwingProgramNodeView;
  4. import com.ur.urcap.api.domain.userinteraction.keyboard.KeyboardTextInput;
  5. import javax.swing.Box;
  6. import javax.swing.BoxLayout;
  7. import javax.swing.JLabel;
  8. import javax.swing.JPanel;
  9. import javax.swing.JTextField;
  10. import java.awt.Component;
  11. import java.awt.Dimension;
  12. import java.awt.Font;
  13. import java.awt.event.MouseAdapter;
  14. import java.awt.event.MouseEvent;
  15. public class HelloWorldProgramNodeView implements SwingProgramNodeView<HelloWorldProgramNodeContribution>{
  16. private final Style style;
  17. private JTextField jTextField;
  18. private JLabel previewTitle;
  19. private JLabel previewMessage;
  20. public HelloWorldProgramNodeView(Style style) {
  21. this.style = style;
  22. }
  23. @Override
  24. public void buildUI(JPanel jPanel, final ContributionProvider<HelloWorldProgramNodeContribution> provider) {
  25. jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
  26. jPanel.add(createInfo());
  27. jPanel.add(createVerticalSpacing(style.getVerticalSpacing()));
  28. jPanel.add(createInput(provider));
  29. jPanel.add(createVerticalSpacing(style.getExtraLargeVerticalSpacing()));
  30. jPanel.add(createPreview());
  31. }
  32. private Box createInfo() {
  33. Box infoBox = Box.createHorizontalBox();
  34. infoBox.setAlignmentX(Component.LEFT_ALIGNMENT);
  35. infoBox.add(new JLabel("This program node will open a popup on execution."));
  36. return infoBox;
  37. }
  38. private Box createInput(final ContributionProvider<HelloWorldProgramNodeContribution> provider) {
  39. Box inputBox = Box.createHorizontalBox();
  40. inputBox.setAlignmentX(Component.LEFT_ALIGNMENT);
  41. inputBox.add(new JLabel("Enter your name:"));
  42. inputBox.add(createHorizontalSpacing());
  43. jTextField = new JTextField();
  44. jTextField.setFocusable(false);
  45. jTextField.setPreferredSize(style.getInputfieldSize());
  46. jTextField.setMaximumSize(jTextField.getPreferredSize());
  47. jTextField.addMouseListener(new MouseAdapter() {
  48. @Override
  49. public void mousePressed(MouseEvent e) {
  50. KeyboardTextInput keyboardInput = provider.get().getKeyboardForTextField();
  51. keyboardInput.show(jTextField, provider.get().getCallbackForTextField());
  52. }
  53. });
  54. inputBox.add(jTextField);
  55. return inputBox;
  56. }
  57. private Box createPreview() {
  58. Box previewBox = Box.createVerticalBox();
  59. JLabel preview = new JLabel("Preview");
  60. preview.setFont(preview.getFont().deriveFont(Font.BOLD, style.getSmallHeaderFontSize()));
  61. Box titleBox = Box.createHorizontalBox();
  62. titleBox.setAlignmentX(Component.LEFT_ALIGNMENT);
  63. titleBox.add(new JLabel("Title:"));
  64. titleBox.add(createHorizontalSpacing());
  65. previewTitle = new JLabel("my title");
  66. titleBox.add(previewTitle);
  67. Box messageBox = Box.createHorizontalBox();
  68. messageBox.setAlignmentX(Component.LEFT_ALIGNMENT);
  69. messageBox.add(new JLabel("Message:"));
  70. messageBox.add(createHorizontalSpacing());
  71. previewMessage = new JLabel("my message");
  72. messageBox.add(previewMessage);
  73. previewBox.add(preview);
  74. previewBox.add(createVerticalSpacing(style.getLargeVerticalSpacing()));
  75. previewBox.add(titleBox);
  76. previewBox.add(createVerticalSpacing(style.getVerticalSpacing()));
  77. previewBox.add(messageBox);
  78. return previewBox;
  79. }
  80. private Component createVerticalSpacing(int height) {
  81. return Box.createRigidArea(new Dimension(0, height));
  82. }
  83. private Component createHorizontalSpacing() {
  84. return Box.createRigidArea(new Dimension(style.getHorizontalSpacing(), 0));
  85. }
  86. public void setPopupText(String popupText) {
  87. jTextField.setText(popupText);
  88. }
  89. public void setMessagePreview(String message) {
  90. previewMessage.setText(message);
  91. }
  92. public void setTitlePreview(String title) {
  93. previewTitle.setText(title);
  94. }
  95. }