Browse Source

swing program node wip

Martin Kunz 4 years ago
parent
commit
e26b6b0b4f

+ 5 - 0
src/main/java/uraxis/Activator.java

@@ -1,11 +1,14 @@
 package uraxis;
 
+import com.ur.urcap.api.contribution.program.swing.SwingProgramNodeService;
 import com.ur.urcap.api.contribution.toolbar.swing.SwingToolbarService;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import com.ur.urcap.api.contribution.InstallationNodeService;
 import com.ur.urcap.api.contribution.ProgramNodeService;
 import com.ur.urcap.api.contribution.DaemonService;
+import uraxis.programnodes.AbsoluteNodeService;
+import uraxis.programnodes.AbsoluteNodeView;
 import uraxis.toolbar.MyToolbarService;
 
 /**
@@ -25,6 +28,8 @@ public class Activator implements BundleActivator {
 		context.registerService(ProgramNodeService.class, new MyDaemonProgramNodeService(), null);
 		context.registerService(DaemonService.class, daemonService, null);
 		context.registerService(SwingToolbarService.class, new MyToolbarService(), null);
+		context.registerService(SwingProgramNodeService.class, new AbsoluteNodeService(), null);
+
 
 	}
 

+ 14 - 44
src/main/java/uraxis/programnodes/AbsoluteNodeContribution.java

@@ -9,11 +9,11 @@ import com.ur.urcap.api.domain.undoredo.UndoRedoManager;
 import com.ur.urcap.api.domain.undoredo.UndoableChanges;
 import com.ur.urcap.api.domain.userinteraction.keyboard.KeyboardInputCallback;
 import com.ur.urcap.api.domain.userinteraction.keyboard.KeyboardInputFactory;
+import com.ur.urcap.api.domain.userinteraction.keyboard.KeyboardNumberInput;
 import com.ur.urcap.api.domain.userinteraction.keyboard.KeyboardTextInput;
 import uraxis.MyDaemonInstallationNodeContribution;
 
 public class AbsoluteNodeContribution implements ProgramNodeContribution {
-    private static final String NAME = "name";
 
     private final ProgramAPI programAPI;
     private final UndoRedoManager undoRedoManager;
@@ -33,8 +33,7 @@ public class AbsoluteNodeContribution implements ProgramNodeContribution {
 
     @Override
     public void openView() {
-        view.setPopupText(getName());
-        updatePopupMessageAndPreview();
+        view.setPopupText(0);
     }
 
     @Override
@@ -43,67 +42,38 @@ public class AbsoluteNodeContribution implements ProgramNodeContribution {
 
     @Override
     public String getTitle() {
-        return "Hello World Swing: " + (model.isSet(NAME) ? getName() : "");
+        return "Hello World Swing: ";
     }
 
-    @Override
-    public boolean isDefined() {
-        return getInstallation().isDefined() && !getName().isEmpty();
-    }
 
     @Override
     public void generateScript(ScriptWriter writer) {
         // Directly generate this Program Node's popup message + access the popup title through a global variable
-        writer.appendLine("popup(\"" + generatePopupMessage() + "\", hello_world_swing_popup_title, False, False, blocking=True)");
+        writer.appendLine("popup(\"" + "generatePopupMessage()" + "\", hello_world_swing_popup_title, False, False, blocking=True)");
         writer.writeChildren();
     }
 
-    public KeyboardTextInput getKeyboardForTextField() {
-        KeyboardTextInput keyboardInput = keyboardFactory.createStringKeyboardInput();
-        keyboardInput.setInitialValue(getName());
+    public KeyboardNumberInput getKeyboardForTextField() {
+        KeyboardNumberInput<Integer> keyboardInput = keyboardFactory.createIntegerKeypadInput();
+        keyboardInput.setInitialValue(0);
         return keyboardInput;
     }
 
-    public KeyboardInputCallback<String> getCallbackForTextField() {
-        return new KeyboardInputCallback<String>() {
+    public KeyboardInputCallback<Integer> getCallbackForTextField() {
+        return new KeyboardInputCallback<Integer>() {
             @Override
-            public void onOk(String value) {
-                setPopupTitle(value);
+            public void onOk(Integer value) {
                 view.setPopupText(value);
             }
         };
     }
 
-    public void setPopupTitle(final String value) {
-        undoRedoManager.recordChanges(new UndoableChanges() {
-            @Override
-            public void executeChanges() {
-                if ("".equals(value)) {
-                    model.remove(NAME);
-                } else {
-                    model.set(NAME, value);
-                }
-            }
-        });
-
-        updatePopupMessageAndPreview();
-    }
-
-    private String generatePopupMessage() {
-        return model.isSet(NAME) ? "Hello " + getName() + ", welcome to PolyScope!" : "No name set";
-    }
-
-    private void updatePopupMessageAndPreview() {
-        view.setMessagePreview(generatePopupMessage());
-        view.setTitlePreview(getInstallation().isDefined() ? getInstallation().getPopupTitle() : "No title set");
-    }
-
-    private String getName() {
-        return model.get(NAME, "");
-    }
-
     private MyDaemonInstallationNodeContribution getInstallation() {
         return programAPI.getInstallationNode(MyDaemonInstallationNodeContribution.class);
     }
 
+    @Override
+    public boolean isDefined() {
+        return true;
+    }
 }

+ 45 - 0
src/main/java/uraxis/programnodes/AbsoluteNodeService.java

@@ -0,0 +1,45 @@
+package uraxis.programnodes;
+
+import com.ur.urcap.api.contribution.ViewAPIProvider;
+import com.ur.urcap.api.contribution.program.ContributionConfiguration;
+import com.ur.urcap.api.contribution.program.CreationContext;
+import com.ur.urcap.api.contribution.program.ProgramAPIProvider;
+import com.ur.urcap.api.contribution.program.swing.SwingProgramNodeService;
+import com.ur.urcap.api.domain.SystemAPI;
+import com.ur.urcap.api.domain.data.DataModel;
+
+import java.util.Locale;
+
+public class AbsoluteNodeService implements SwingProgramNodeService<AbsoluteNodeContribution, AbsoluteNodeView> {
+
+    @Override
+    public String getId() {
+        return "AbsoluteNodeService";
+    }
+
+    @Override
+    public void configureContribution(ContributionConfiguration configuration) {
+        configuration.setChildrenAllowed(false);
+    }
+
+    @Override
+    public String getTitle(Locale locale) {
+        return "AbsoluteNodeService";
+    }
+
+    @Override
+    public AbsoluteNodeView createView(ViewAPIProvider apiProvider) {
+        SystemAPI systemAPI = apiProvider.getSystemAPI();
+        Style style =  new V5Style();
+        return new AbsoluteNodeView(style);
+    }
+
+    @Override
+    public AbsoluteNodeContribution createNode(
+            ProgramAPIProvider apiProvider,
+            AbsoluteNodeView view,
+            DataModel model,
+            CreationContext context) {
+        return new AbsoluteNodeContribution(apiProvider, view, model);
+    }
+}

+ 5 - 51
src/main/java/uraxis/programnodes/AbsoluteNodeView.java

@@ -2,6 +2,7 @@ package uraxis.programnodes;
 
 import com.ur.urcap.api.contribution.ContributionProvider;
 import com.ur.urcap.api.contribution.program.swing.SwingProgramNodeView;
+import com.ur.urcap.api.domain.userinteraction.keyboard.KeyboardNumberInput;
 import com.ur.urcap.api.domain.userinteraction.keyboard.KeyboardTextInput;
 
 import javax.swing.Box;
@@ -19,8 +20,6 @@ public class AbsoluteNodeView implements SwingProgramNodeView<AbsoluteNodeContri
 
     private final Style style;
     private JTextField jTextField;
-    private JLabel previewTitle;
-    private JLabel previewMessage;
 
     public AbsoluteNodeView(Style style) {
         this.style = style;
@@ -30,24 +29,15 @@ public class AbsoluteNodeView implements SwingProgramNodeView<AbsoluteNodeContri
     public void buildUI(JPanel jPanel, final ContributionProvider<AbsoluteNodeContribution> provider) {
         jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
 
-        jPanel.add(createInfo());
         jPanel.add(createVerticalSpacing(style.getVerticalSpacing()));
         jPanel.add(createInput(provider));
         jPanel.add(createVerticalSpacing(style.getExtraLargeVerticalSpacing()));
-        jPanel.add(createPreview());
-    }
-
-    private Box createInfo() {
-        Box infoBox = Box.createHorizontalBox();
-        infoBox.setAlignmentX(Component.LEFT_ALIGNMENT);
-        infoBox.add(new JLabel("This program node will open a popup on execution."));
-        return infoBox;
     }
 
     private Box createInput(final ContributionProvider<AbsoluteNodeContribution> provider) {
         Box inputBox = Box.createHorizontalBox();
         inputBox.setAlignmentX(Component.LEFT_ALIGNMENT);
-        inputBox.add(new JLabel("Enter your name:"));
+        inputBox.add(new JLabel("Move by:"));
         inputBox.add(createHorizontalSpacing());
 
         jTextField = new JTextField();
@@ -57,7 +47,7 @@ public class AbsoluteNodeView implements SwingProgramNodeView<AbsoluteNodeContri
         jTextField.addMouseListener(new MouseAdapter() {
             @Override
             public void mousePressed(MouseEvent e) {
-                KeyboardTextInput keyboardInput = provider.get().getKeyboardForTextField();
+                KeyboardNumberInput keyboardInput = provider.get().getKeyboardForTextField();
                 keyboardInput.show(jTextField, provider.get().getCallbackForTextField());
             }
         });
@@ -66,34 +56,6 @@ public class AbsoluteNodeView implements SwingProgramNodeView<AbsoluteNodeContri
         return inputBox;
     }
 
-    private Box createPreview() {
-        Box previewBox = Box.createVerticalBox();
-        JLabel preview = new JLabel("Preview");
-        preview.setFont(preview.getFont().deriveFont(Font.BOLD, style.getSmallHeaderFontSize()));
-
-        Box titleBox = Box.createHorizontalBox();
-        titleBox.setAlignmentX(Component.LEFT_ALIGNMENT);
-        titleBox.add(new JLabel("Title:"));
-        titleBox.add(createHorizontalSpacing());
-        previewTitle = new JLabel("my title");
-        titleBox.add(previewTitle);
-
-        Box messageBox = Box.createHorizontalBox();
-        messageBox.setAlignmentX(Component.LEFT_ALIGNMENT);
-        messageBox.add(new JLabel("Message:"));
-        messageBox.add(createHorizontalSpacing());
-        previewMessage = new JLabel("my message");
-        messageBox.add(previewMessage);
-
-        previewBox.add(preview);
-        previewBox.add(createVerticalSpacing(style.getLargeVerticalSpacing()));
-        previewBox.add(titleBox);
-        previewBox.add(createVerticalSpacing(style.getVerticalSpacing()));
-        previewBox.add(messageBox);
-
-        return previewBox;
-    }
-
     private Component createVerticalSpacing(int height) {
         return Box.createRigidArea(new Dimension(0, height));
     }
@@ -102,15 +64,7 @@ public class AbsoluteNodeView implements SwingProgramNodeView<AbsoluteNodeContri
         return Box.createRigidArea(new Dimension(style.getHorizontalSpacing(), 0));
     }
 
-    public void setPopupText(String popupText) {
-        jTextField.setText(popupText);
-    }
-
-    public void setMessagePreview(String message) {
-        previewMessage.setText(message);
-    }
-
-    public void setTitlePreview(String title) {
-        previewTitle.setText(title);
+    public void setPopupText(Integer popupText) {
+        jTextField.setText(popupText.toString());
     }
 }

+ 12 - 0
src/main/java/uraxis/programnodes/V5Style.java

@@ -0,0 +1,12 @@
+package uraxis.programnodes;
+
+import java.awt.*;
+
+public class V5Style extends Style {
+	private static final Dimension INPUTFIELD_SIZE = new Dimension(200, 30);
+
+	@Override
+	public Dimension getInputfieldSize() {
+		return INPUTFIELD_SIZE;
+	}
+}