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; import urgrip.installation.URGripInstallationNodeContribution; import urgrip.toolbar.IOHandler; 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 GripperBlowoutNodeView view; private final 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.setDelay(model.get(KEY_DELAY, 1500)); } @Override public void closeView() { model.set(KEY_DELAY, view.getDelay()); } @Override public String getTitle() { return "Grip: Blowout "; } @Override public void generateScript(ScriptWriter writer) { String ioName=programAPI.getInstallationNode(URGripInstallationNodeContribution.class).getBlowoutIO(); int idx = IOHandler.getIOIndex(ioName); if(idx >0) { // N/C -> -1 writer.appendLine("set_standard_digital_out(" + idx + ", True)"); writer.appendLine("sleep(" + Float.toString(view.getDelay() / 1000.0f) + ")"); writer.appendLine("set_standard_digital_out(" + idx + ", False)"); } writer.writeChildren(); } public KeyboardNumberInput getKeyboardForPositionField() { KeyboardNumberInput keyboardInput = keyboardFactory.createIntegerKeypadInput(); keyboardInput.setInitialValue(model.get(KEY_DELAY, 0)); return keyboardInput; } public KeyboardInputCallback getCallbackForPositionField() { return new KeyboardInputCallback() { @Override public void onOk(Integer value) { model.set(KEY_DELAY, value); view.setDelay(value); } }; } public KeyboardNumberInput getKeyboardForSpeedField() { KeyboardNumberInput keyboardInput = keyboardFactory.createIntegerKeypadInput(); keyboardInput.setInitialValue(model.get(KEY_DELAY, view.getDelay())); return keyboardInput; } public KeyboardInputCallback getCallbackForSpeedField() { return new KeyboardInputCallback() { @Override public void onOk(Integer value) { model.set(KEY_DELAY, value); view.setDelay(value); } }; } @Override public boolean isDefined() { return true; } }