AbsoluteNodeView.java 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package uraxis.programnodes;
  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.KeyboardNumberInput;
  5. import com.ur.urcap.api.domain.userinteraction.keyboard.KeyboardTextInput;
  6. import javax.swing.Box;
  7. import javax.swing.BoxLayout;
  8. import javax.swing.JLabel;
  9. import javax.swing.JPanel;
  10. import javax.swing.JTextField;
  11. import java.awt.Component;
  12. import java.awt.Dimension;
  13. import java.awt.Font;
  14. import java.awt.event.MouseAdapter;
  15. import java.awt.event.MouseEvent;
  16. public class AbsoluteNodeView implements SwingProgramNodeView<AbsoluteNodeContribution>{
  17. private final Style style;
  18. private JTextField jTextField;
  19. public AbsoluteNodeView(Style style) {
  20. this.style = style;
  21. }
  22. @Override
  23. public void buildUI(JPanel jPanel, final ContributionProvider<AbsoluteNodeContribution> provider) {
  24. jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
  25. jPanel.add(createVerticalSpacing(style.getVerticalSpacing()));
  26. jPanel.add(createInput(provider));
  27. jPanel.add(createVerticalSpacing(style.getExtraLargeVerticalSpacing()));
  28. }
  29. private Box createInput(final ContributionProvider<AbsoluteNodeContribution> provider) {
  30. Box inputBox = Box.createHorizontalBox();
  31. inputBox.setAlignmentX(Component.LEFT_ALIGNMENT);
  32. inputBox.add(new JLabel("Move by:"));
  33. inputBox.add(createHorizontalSpacing());
  34. jTextField = new JTextField();
  35. jTextField.setFocusable(false);
  36. jTextField.setPreferredSize(style.getInputfieldSize());
  37. jTextField.setMaximumSize(jTextField.getPreferredSize());
  38. jTextField.addMouseListener(new MouseAdapter() {
  39. @Override
  40. public void mousePressed(MouseEvent e) {
  41. KeyboardNumberInput keyboardInput = provider.get().getKeyboardForTextField();
  42. keyboardInput.show(jTextField, provider.get().getCallbackForTextField());
  43. }
  44. });
  45. inputBox.add(jTextField);
  46. return inputBox;
  47. }
  48. private Component createVerticalSpacing(int height) {
  49. return Box.createRigidArea(new Dimension(0, height));
  50. }
  51. private Component createHorizontalSpacing() {
  52. return Box.createRigidArea(new Dimension(style.getHorizontalSpacing(), 0));
  53. }
  54. public void setPopupText(Integer popupText) {
  55. jTextField.setText(popupText.toString());
  56. }
  57. }