HelloWorldInstallationNodeContribution.java 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package at.acdp.opcur.ur;
  2. import com.ur.urcap.api.contribution.InstallationNodeContribution;
  3. import com.ur.urcap.api.contribution.installation.InstallationAPIProvider;
  4. import com.ur.urcap.api.domain.data.DataModel;
  5. import com.ur.urcap.api.domain.script.ScriptWriter;
  6. import com.ur.urcap.api.domain.userinteraction.keyboard.KeyboardInputCallback;
  7. import com.ur.urcap.api.domain.userinteraction.keyboard.KeyboardInputFactory;
  8. import com.ur.urcap.api.domain.userinteraction.keyboard.KeyboardTextInput;
  9. public class HelloWorldInstallationNodeContribution implements InstallationNodeContribution {
  10. private static final String POPUPTITLE_KEY = "popuptitle";
  11. private static final String DEFAULT_VALUE = "Hello World Swing";
  12. private final HelloWorldInstallationNodeView view;
  13. private final KeyboardInputFactory keyboardFactory;
  14. private DataModel model;
  15. public HelloWorldInstallationNodeContribution(InstallationAPIProvider apiProvider, DataModel model, HelloWorldInstallationNodeView view) {
  16. this.keyboardFactory = apiProvider.getUserInterfaceAPI().getUserInteraction().getKeyboardInputFactory();
  17. this.model = model;
  18. this.view = view;
  19. }
  20. @Override
  21. public void openView() {
  22. view.setPopupText(getPopupTitle());
  23. }
  24. @Override
  25. public void closeView() {
  26. }
  27. public boolean isDefined() {
  28. return !getPopupTitle().isEmpty();
  29. }
  30. @Override
  31. public void generateScript(ScriptWriter writer) {
  32. // Store the popup title in a global variable so it is globally available to all Hello World Swing program nodes.
  33. writer.assign("hello_world_swing_popup_title", "\"" + getPopupTitle() + "\"");
  34. }
  35. public String getPopupTitle() {
  36. return model.get(POPUPTITLE_KEY, DEFAULT_VALUE);
  37. }
  38. public void setPopupTitle(String message) {
  39. if ("".equals(message)) {
  40. resetToDefaultValue();
  41. } else {
  42. model.set(POPUPTITLE_KEY, message);
  43. }
  44. }
  45. private void resetToDefaultValue() {
  46. view.setPopupText(DEFAULT_VALUE);
  47. model.set(POPUPTITLE_KEY, DEFAULT_VALUE);
  48. }
  49. public KeyboardTextInput getInputForTextField() {
  50. KeyboardTextInput keyboardInput = keyboardFactory.createStringKeyboardInput();
  51. keyboardInput.setInitialValue(getPopupTitle());
  52. return keyboardInput;
  53. }
  54. public KeyboardInputCallback<String> getCallbackForTextField() {
  55. return new KeyboardInputCallback<String>() {
  56. @Override
  57. public void onOk(String value) {
  58. setPopupTitle(value);
  59. view.setPopupText(value);
  60. }
  61. };
  62. }
  63. }