Browse Source

add program nodes for grip/couple/blowout

Martin Kunz 4 years ago
parent
commit
b89ccdfa93

+ 6 - 2
src/main/java/urgrip/Activator.java

@@ -6,7 +6,9 @@ import com.ur.urcap.api.contribution.toolbar.swing.SwingToolbarService;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import urgrip.installation.URGripInstallationNodeService;
-import urgrip.programnodes.GripperNodeService;
+import urgrip.programnodes.GripperBlowoutNodeService;
+import urgrip.programnodes.GripperCoupleNodeService;
+import urgrip.programnodes.GripperGripNodeService;
 import urgrip.toolbar.MyToolbarService;
 
 public class Activator implements BundleActivator {
@@ -15,7 +17,9 @@ public class Activator implements BundleActivator {
 	public void start(BundleContext context) throws Exception {
 		System.out.println("Gripper Activator says Hello World!");
 		context.registerService(SwingToolbarService.class, new MyToolbarService(), null);
-		context.registerService(SwingProgramNodeService.class, new GripperNodeService(), null);
+		context.registerService(SwingProgramNodeService.class, new GripperBlowoutNodeService(), null);
+		context.registerService(SwingProgramNodeService.class, new GripperCoupleNodeService(), null);
+		context.registerService(SwingProgramNodeService.class, new GripperGripNodeService(), null);
 		context.registerService(SwingInstallationNodeService.class, new URGripInstallationNodeService(), null);
 	}
 

+ 10 - 17
src/main/java/urgrip/programnodes/GripperNodeContribution.java

@@ -10,37 +10,30 @@ 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;
 
-public class GripperNodeContribution implements ProgramNodeContribution {
-    private final String POSITION="POSITION";
-    private final String SPEED="SPEED";
-
+public class GripperBlowoutNodeContribution implements ProgramNodeContribution {
+    private static final String KEY_DELAY = "KEY_DELAY";
     private final ProgramAPI programAPI;
     private final UndoRedoManager undoRedoManager;
     private final KeyboardInputFactory keyboardFactory;
-
-    private final GripperNodeView view;
+    private final GripperBlowoutNodeView view;
     private final DataModel model;
 
-
-    public GripperNodeContribution(ProgramAPIProvider apiProvider, GripperNodeView view, DataModel model) {
+    public GripperBlowoutNodeContribution(ProgramAPIProvider apiProvider, GripperBlowoutNodeView view, DataModel model) {
         this.programAPI = apiProvider.getProgramAPI();
         this.undoRedoManager = apiProvider.getProgramAPI().getUndoRedoManager();
         this.keyboardFactory = apiProvider.getUserInterfaceAPI().getUserInteraction().getKeyboardInputFactory();
-
         this.view = view;
         this.model = model;
     }
 
     @Override
     public void openView() {
-        view.setPosition(model.get(POSITION, 0));
-        view.setSpeed(model.get(SPEED, 20));
+        view.setSpeed(model.get(KEY_DELAY, 20));
     }
 
     @Override
     public void closeView() {
-        model.set(POSITION, view.getPosition());
-        model.set(SPEED, view.getSpeed());
+        model.set(KEY_DELAY, view.getSpeed());
     }
 
     @Override
@@ -56,7 +49,7 @@ public class GripperNodeContribution implements ProgramNodeContribution {
 
     public KeyboardNumberInput getKeyboardForPositionField() {
         KeyboardNumberInput<Integer> keyboardInput = keyboardFactory.createIntegerKeypadInput();
-        keyboardInput.setInitialValue(model.get(POSITION, 0));
+        keyboardInput.setInitialValue(model.get(KEY_DELAY, 0));
         return keyboardInput;
     }
 
@@ -64,7 +57,7 @@ public class GripperNodeContribution implements ProgramNodeContribution {
         return new KeyboardInputCallback<Integer>() {
             @Override
             public void onOk(Integer value) {
-                model.set(POSITION, value);
+                model.set(KEY_DELAY, value);
                 view.setPosition(value);
             }
         };
@@ -72,7 +65,7 @@ public class GripperNodeContribution implements ProgramNodeContribution {
 
     public KeyboardNumberInput getKeyboardForSpeedField() {
         KeyboardNumberInput<Integer> keyboardInput = keyboardFactory.createIntegerKeypadInput();
-        keyboardInput.setInitialValue(model.get(SPEED, 0));
+        keyboardInput.setInitialValue(model.get(KEY_DELAY, 0));
         return keyboardInput;
     }
 
@@ -80,7 +73,7 @@ public class GripperNodeContribution implements ProgramNodeContribution {
         return new KeyboardInputCallback<Integer>() {
             @Override
             public void onOk(Integer value) {
-                model.set(SPEED, value);
+                model.set(KEY_DELAY, value);
                 view.setSpeed(value);
             }
         };

+ 9 - 9
src/main/java/urgrip/programnodes/GripperNodeService.java

@@ -9,12 +9,12 @@ import com.ur.urcap.api.domain.data.DataModel;
 
 import java.util.Locale;
 
-public class GripperNodeService implements SwingProgramNodeService<GripperNodeContribution, GripperNodeView> {
+public class GripperBlowoutNodeService implements SwingProgramNodeService<GripperBlowoutNodeContribution, GripperBlowoutNodeView> {
 
 
     @Override
     public String getId() {
-        return "Grip";
+        return "GripperBlowout";
     }
 
     @Override
@@ -24,24 +24,24 @@ public class GripperNodeService implements SwingProgramNodeService<GripperNodeCo
 
     @Override
     public String getTitle(Locale locale) {
-        return "Grip";
+        return "Gripper: Blowout";
     }
 
     @Override
-    public GripperNodeView createView(ViewAPIProvider apiProvider) {
-        return new GripperNodeView(new V5Style());
+    public GripperBlowoutNodeView createView(ViewAPIProvider apiProvider) {
+        return new GripperBlowoutNodeView(new V5Style());
     }
 
     @Override
-    public GripperNodeContribution createNode(
+    public GripperBlowoutNodeContribution createNode(
             ProgramAPIProvider apiProvider,
-            GripperNodeView view,
+            GripperBlowoutNodeView view,
             DataModel model,
             CreationContext context) {
-        return new GripperNodeContribution(apiProvider, view, model);
+        return new GripperBlowoutNodeContribution(apiProvider, view, model);
     }
 
-    public GripperNodeService() {
+    public GripperBlowoutNodeService() {
 
     }
 }

+ 5 - 28
src/main/java/urgrip/programnodes/GripperNodeView.java

@@ -14,47 +14,24 @@ import java.awt.Dimension;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 
-public class GripperNodeView implements SwingProgramNodeView<GripperNodeContribution>{
+public class GripperBlowoutNodeView implements SwingProgramNodeView<GripperBlowoutNodeContribution>{
 
     private final Style style;
     private JTextField jtfPosition, jtfSpeed;
 
-    public GripperNodeView(Style style) {
+    public GripperBlowoutNodeView(Style style) {
         this.style = style;
     }
 
     @Override
-    public void buildUI(JPanel jPanel, final ContributionProvider<GripperNodeContribution> provider) {
+    public void buildUI(JPanel jPanel, final ContributionProvider<GripperBlowoutNodeContribution> provider) {
         jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
         jPanel.add(createVerticalSpacing(style.getVerticalSpacing()));
-        jPanel.add(createInputPosition(provider));
         jPanel.add(createInputSpeed(provider));
         jPanel.add(createVerticalSpacing(style.getExtraLargeVerticalSpacing()));
     }
 
-    private Box createInputPosition(final ContributionProvider<GripperNodeContribution> provider) {
-        Box inputBox = Box.createHorizontalBox();
-        inputBox.setAlignmentX(Component.LEFT_ALIGNMENT);
-        inputBox.add(new JLabel("Move by:"));
-        inputBox.add(createHorizontalSpacing());
-
-        jtfPosition = new JTextField();
-        jtfPosition.setFocusable(false);
-        jtfPosition.setPreferredSize(style.getInputfieldSize());
-        jtfPosition.setMaximumSize(jtfPosition.getPreferredSize());
-        jtfPosition.addMouseListener(new MouseAdapter() {
-            @Override
-            public void mousePressed(MouseEvent e) {
-                KeyboardNumberInput keyboardInput = provider.get().getKeyboardForPositionField();
-                keyboardInput.show(jtfPosition, provider.get().getCallbackForPositionField());
-            }
-        });
-        inputBox.add(jtfPosition);
-
-        return inputBox;
-    }
-
-    private Box createInputSpeed(final ContributionProvider<GripperNodeContribution> provider) {
+    private Box createInputSpeed(final ContributionProvider<GripperBlowoutNodeContribution> provider) {
         Box inputBox = Box.createHorizontalBox();
         inputBox.setAlignmentX(Component.LEFT_ALIGNMENT);
         inputBox.add(new JLabel("Speed %:"));
@@ -75,7 +52,7 @@ public class GripperNodeView implements SwingProgramNodeView<GripperNodeContribu
         return inputBox;
     }
 
-        private Component createVerticalSpacing(int height) {
+    private Component createVerticalSpacing(int height) {
         return Box.createRigidArea(new Dimension(0, height));
     }
 

+ 52 - 0
src/main/java/urgrip/programnodes/GripperCoupleNodeContribution.java

@@ -0,0 +1,52 @@
+package urgrip.programnodes;
+
+import com.ur.urcap.api.contribution.ProgramNodeContribution;
+import com.ur.urcap.api.contribution.program.ProgramAPIProvider;
+import com.ur.urcap.api.domain.ProgramAPI;
+import com.ur.urcap.api.domain.data.DataModel;
+import com.ur.urcap.api.domain.script.ScriptWriter;
+import com.ur.urcap.api.domain.undoredo.UndoRedoManager;
+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;
+
+public class GripperCoupleNodeContribution implements ProgramNodeContribution {
+    private static final String KEY_ACTION = "KEY_ACTION";
+    private final ProgramAPI programAPI;
+    private final UndoRedoManager undoRedoManager;
+    private final KeyboardInputFactory keyboardFactory;
+    private final GripperCoupleNodeView view;
+    private final DataModel model;
+
+    public GripperCoupleNodeContribution(ProgramAPIProvider apiProvider, GripperCoupleNodeView view, DataModel model) {
+        this.programAPI = apiProvider.getProgramAPI();
+        this.undoRedoManager = apiProvider.getProgramAPI().getUndoRedoManager();
+        this.keyboardFactory = apiProvider.getUserInterfaceAPI().getUserInteraction().getKeyboardInputFactory();
+        this.view = view;
+        this.model = model;
+    }
+
+    @Override
+    public void openView() {
+        view.setAction(model.get(KEY_ACTION, "COUPLE"));
+    }
+
+    @Override
+    public void closeView() {
+        model.set(KEY_ACTION, view.getAction());
+    }
+
+    @Override
+    public String getTitle() {
+        return "Gripper Couple ";
+    }
+
+    @Override
+    public void generateScript(ScriptWriter writer) {
+    }
+
+    @Override
+    public boolean isDefined() {
+        return true;
+    }
+}

+ 43 - 0
src/main/java/urgrip/programnodes/GripperCoupleNodeService.java

@@ -0,0 +1,43 @@
+package urgrip.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.data.DataModel;
+
+import java.util.Locale;
+
+public class GripperCoupleNodeService implements SwingProgramNodeService<GripperCoupleNodeContribution, GripperCoupleNodeView> {
+
+    @Override
+    public String getId() {
+        return "GripperCouple";
+    }
+
+    @Override
+    public void configureContribution(ContributionConfiguration configuration) {
+        configuration.setChildrenAllowed(false);
+    }
+
+    @Override
+    public String getTitle(Locale locale) {
+        return "Gripper: Couple";
+    }
+
+    @Override
+    public GripperCoupleNodeView createView(ViewAPIProvider apiProvider) {
+        return new GripperCoupleNodeView(new V5Style());
+    }
+
+    @Override
+    public GripperCoupleNodeContribution createNode(ProgramAPIProvider apiProvider, GripperCoupleNodeView view, DataModel model, CreationContext context) {
+        return new GripperCoupleNodeContribution(apiProvider, view, model);
+    }
+
+
+    public GripperCoupleNodeService() {
+
+    }
+}

+ 65 - 0
src/main/java/urgrip/programnodes/GripperCoupleNodeView.java

@@ -0,0 +1,65 @@
+package urgrip.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 javax.swing.*;
+import java.awt.*;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+public class GripperCoupleNodeView implements SwingProgramNodeView<GripperCoupleNodeContribution>{
+
+    private final Style style;
+    private JTextField jtfPosition, jtfSpeed;
+    private JRadioButton coupleButton, decoubleButton;
+
+    public GripperCoupleNodeView(Style style) {
+        this.style = style;
+    }
+
+    @Override
+    public void buildUI(JPanel jPanel, final ContributionProvider<GripperCoupleNodeContribution> provider) {
+        jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
+        jPanel.add(createVerticalSpacing(style.getVerticalSpacing()));
+        jPanel.add(createInput(provider));
+        jPanel.add(createVerticalSpacing(style.getExtraLargeVerticalSpacing()));
+    }
+
+    private Box createInput(final ContributionProvider<GripperCoupleNodeContribution> provider) {
+        Box inputBox = Box.createHorizontalBox();
+        inputBox.setAlignmentX(Component.LEFT_ALIGNMENT);
+        inputBox.add(createHorizontalSpacing());
+
+        coupleButton = new JRadioButton("Couple");
+        decoubleButton = new JRadioButton("Decouple");
+        ButtonGroup group = new ButtonGroup();
+        group.add(coupleButton);
+        group.add(decoubleButton);
+        inputBox.add(coupleButton);
+        inputBox.add(decoubleButton);
+        return inputBox;
+    }
+
+    private Component createVerticalSpacing(int height) {
+        return Box.createRigidArea(new Dimension(0, height));
+    }
+
+    private Component createHorizontalSpacing() {
+        return Box.createRigidArea(new Dimension(style.getHorizontalSpacing(), 0));
+    }
+
+    public void setAction(String which) {
+    if(which.equals("COUPLE"))
+        coupleButton.setSelected(true);
+    else
+        decoubleButton.setSelected(true);
+    }
+
+
+    public String getAction() {
+        if(coupleButton.isSelected()) return "COUPLE";
+        return "DECOUPLE";
+    }
+}

+ 86 - 0
src/main/java/urgrip/programnodes/GripperGripNodeContribution.java

@@ -0,0 +1,86 @@
+package urgrip.programnodes;
+
+import com.ur.urcap.api.contribution.ProgramNodeContribution;
+import com.ur.urcap.api.contribution.program.ProgramAPIProvider;
+import com.ur.urcap.api.domain.ProgramAPI;
+import com.ur.urcap.api.domain.data.DataModel;
+import com.ur.urcap.api.domain.script.ScriptWriter;
+import com.ur.urcap.api.domain.undoredo.UndoRedoManager;
+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;
+
+public class GripperGripNodeContribution implements ProgramNodeContribution {
+    private static final String KEY_DELAY = "KEY_DELAY";
+    private final ProgramAPI programAPI;
+    private final UndoRedoManager undoRedoManager;
+    private final KeyboardInputFactory keyboardFactory;
+    private final GripperGripNodeView view;
+    private final DataModel model;
+
+    public GripperGripNodeContribution(ProgramAPIProvider apiProvider, GripperGripNodeView view, DataModel model) {
+        this.programAPI = apiProvider.getProgramAPI();
+        this.undoRedoManager = apiProvider.getProgramAPI().getUndoRedoManager();
+        this.keyboardFactory = apiProvider.getUserInterfaceAPI().getUserInteraction().getKeyboardInputFactory();
+        this.view = view;
+        this.model = model;
+    }
+
+    @Override
+    public void openView() {
+        view.setSpeed(model.get(KEY_DELAY, 20));
+    }
+
+    @Override
+    public void closeView() {
+        model.set(KEY_DELAY, view.getSpeed());
+    }
+
+    @Override
+    public String getTitle() {
+        return "Gripper Grip";
+    }
+
+    @Override
+    public void generateScript(ScriptWriter writer) {
+        writer.appendLine("write_output_integer_register(3," + 3 + ")");
+        writer.writeChildren();
+    }
+
+    public KeyboardNumberInput getKeyboardForPositionField() {
+        KeyboardNumberInput<Integer> keyboardInput = keyboardFactory.createIntegerKeypadInput();
+        keyboardInput.setInitialValue(model.get(KEY_DELAY, 0));
+        return keyboardInput;
+    }
+
+    public KeyboardInputCallback<Integer> getCallbackForPositionField() {
+        return new KeyboardInputCallback<Integer>() {
+            @Override
+            public void onOk(Integer value) {
+                model.set(KEY_DELAY, value);
+                view.setPosition(value);
+            }
+        };
+    }
+
+    public KeyboardNumberInput getKeyboardForSpeedField() {
+        KeyboardNumberInput<Integer> keyboardInput = keyboardFactory.createIntegerKeypadInput();
+        keyboardInput.setInitialValue(model.get(KEY_DELAY, 0));
+        return keyboardInput;
+    }
+
+    public KeyboardInputCallback<Integer> getCallbackForSpeedField() {
+        return new KeyboardInputCallback<Integer>() {
+            @Override
+            public void onOk(Integer value) {
+                model.set(KEY_DELAY, value);
+                view.setSpeed(value);
+            }
+        };
+    }
+
+    @Override
+    public boolean isDefined() {
+        return true;
+    }
+}

+ 43 - 0
src/main/java/urgrip/programnodes/GripperGripNodeService.java

@@ -0,0 +1,43 @@
+package urgrip.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.data.DataModel;
+
+import java.util.Locale;
+
+public class GripperGripNodeService implements SwingProgramNodeService<GripperGripNodeContribution, GripperGripNodeView> {
+
+
+    @Override
+    public String getId() {
+        return "GripperGrip";
+    }
+
+    @Override
+    public void configureContribution(ContributionConfiguration configuration) {
+        configuration.setChildrenAllowed(false);
+    }
+
+    @Override
+    public String getTitle(Locale locale) {
+        return "Gripper: Grip";
+    }
+
+    @Override
+    public GripperGripNodeView createView(ViewAPIProvider apiProvider) {
+        return new GripperGripNodeView(new V5Style());
+    }
+
+    @Override
+    public GripperGripNodeContribution createNode(ProgramAPIProvider apiProvider, GripperGripNodeView view, DataModel model, CreationContext context) {
+        return new GripperGripNodeContribution(apiProvider, view, model);
+    }
+
+    public GripperGripNodeService() {
+
+    }
+}

+ 74 - 0
src/main/java/urgrip/programnodes/GripperGripNodeView.java

@@ -0,0 +1,74 @@
+package urgrip.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 javax.swing.*;
+import java.awt.*;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+public class GripperGripNodeView implements SwingProgramNodeView<GripperGripNodeContribution>{
+
+    private final Style style;
+    private JTextField jtfPosition, jtfSpeed;
+
+    public GripperGripNodeView(Style style) {
+        this.style = style;
+    }
+
+    @Override
+    public void buildUI(JPanel jPanel, final ContributionProvider<GripperGripNodeContribution> provider) {
+        jPanel.setLayout(new BoxLayout(jPanel, BoxLayout.Y_AXIS));
+        jPanel.add(createVerticalSpacing(style.getVerticalSpacing()));
+        jPanel.add(createInputSpeed(provider));
+        jPanel.add(createVerticalSpacing(style.getExtraLargeVerticalSpacing()));
+    }
+
+    private Box createInputSpeed(final ContributionProvider<GripperGripNodeContribution> provider) {
+        Box inputBox = Box.createHorizontalBox();
+        inputBox.setAlignmentX(Component.LEFT_ALIGNMENT);
+        inputBox.add(new JLabel("Speed %:"));
+        inputBox.add(createHorizontalSpacing());
+
+        jtfSpeed = new JTextField();
+        jtfSpeed.setFocusable(false);
+        jtfSpeed.setPreferredSize(style.getInputfieldSize());
+        jtfSpeed.setMaximumSize(jtfSpeed.getPreferredSize());
+        jtfSpeed.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mousePressed(MouseEvent e) {
+                KeyboardNumberInput keyboardInput = provider.get().getKeyboardForSpeedField();
+                keyboardInput.show(jtfSpeed, provider.get().getCallbackForSpeedField());
+            }
+        });
+        inputBox.add(jtfSpeed);
+        return inputBox;
+    }
+
+    private Component createVerticalSpacing(int height) {
+        return Box.createRigidArea(new Dimension(0, height));
+    }
+
+    private Component createHorizontalSpacing() {
+        return Box.createRigidArea(new Dimension(style.getHorizontalSpacing(), 0));
+    }
+
+    public void setPosition(Integer value) {
+        jtfPosition.setText(value.toString());
+    }
+
+    public void setSpeed(Integer value) {
+        jtfSpeed.setText(value.toString());
+    }
+
+    public Integer getPosition() {
+        return Integer.parseInt(jtfPosition.getText());
+    }
+    public Integer getSpeed() {
+        return Integer.parseInt(jtfSpeed.getText());
+    }
+
+
+}