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 GripperGripNodeContribution implements ProgramNodeContribution { private static final String KEY_ACTION = "KEY_ACTION"; private final ProgramAPI programAPI; private final GripperGripNodeView view; private final DataModel model; public GripperGripNodeContribution(ProgramAPIProvider apiProvider, GripperGripNodeView view, DataModel model) { this.programAPI = apiProvider.getProgramAPI(); this.view = view; this.model = model; } @Override public void openView() { view.setAction(model.get(KEY_ACTION, "GRIP")); } @Override public void closeView() { model.set(KEY_ACTION, view.getAction()); } @Override public String getTitle() { return "Grip: Grip"; } @Override public void generateScript(ScriptWriter writer) { String ioNameOpen=programAPI.getInstallationNode(URGripInstallationNodeContribution.class).getGripOpenIO(); String ioNameClose=programAPI.getInstallationNode(URGripInstallationNodeContribution.class).getGripCloseIO(); String ioNameWaitFor=programAPI.getInstallationNode(URGripInstallationNodeContribution.class).getWaitforIO(); int idxOpen = IOHandler.getIOIndex(ioNameOpen); int idxClose = IOHandler.getIOIndex(ioNameClose); int idxWaitFor = IOHandler.getIOIndex(ioNameWaitFor); if(model.get(KEY_ACTION,"GRIP").equals("GRIP")) { if(idxOpen >0) // N/C -> -1 writer.appendLine("set_standard_digital_out("+ idxOpen +", True)"); if(idxClose >0) writer.appendLine("set_standard_digital_out("+ idxClose +", False)"); } else { if(idxWaitFor >0) writer.appendLine("while get_standard_digital_in("+idxWaitFor+") != True:"); writer.appendLine("end"); if(idxOpen >0) writer.appendLine("set_standard_digital_out("+ idxOpen +", False)"); if(idxClose >0) writer.appendLine("set_standard_digital_out("+ idxClose +", True)"); } writer.writeChildren(); } @Override public boolean isDefined() { return true; } }