/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.script.gui;
import org.eclipse.gef.commands.Command;
import de.rcenvironment.core.component.executor.SshExecutorConstants;
import de.rcenvironment.core.gui.workflow.editor.WorkflowEditorAction;
import de.rcenvironment.core.gui.workflow.executor.properties.AbstractEditScriptRunnable;
/**
* {@link WorkflowEditorAction} used to open or edit the underlying script.
*
* @author Doreen Seider
*/
public class EditScriptWorkflowEditorAction extends WorkflowEditorAction {
@Override
public void run() {
new EditScriptRunnable().run();
}
/**
* Implementation of {@link AbstractEditScriptRunnable}.
*
* @author Doreen Seider
*/
private class EditScriptRunnable extends AbstractEditScriptRunnable {
@Override
protected void setScript(String script) {
commandStack.execute(new EditScriptCommand(script));
}
@Override
protected String getScript() {
return workflowNode.getConfigurationDescription()
.getConfigurationValue(SshExecutorConstants.CONFIG_KEY_SCRIPT);
}
@Override
protected String getScriptName() {
return Messages.scriptname;
}
}
/**
* Command to edit the underlying script.
*
* @author Doreen Seider
*/
private class EditScriptCommand extends Command {
private String newScript;
private String oldScript;
protected EditScriptCommand(String newScript) {
oldScript =
workflowNode.getConfigurationDescription()
.getConfigurationValue(SshExecutorConstants.CONFIG_KEY_SCRIPT);
this.newScript = newScript;
}
@Override
public void execute() {
workflowNode.getConfigurationDescription()
.setConfigurationValue(SshExecutorConstants.CONFIG_KEY_SCRIPT, newScript);
}
@Override
public void undo() {
workflowNode.getConfigurationDescription()
.setConfigurationValue(SshExecutorConstants.CONFIG_KEY_SCRIPT, oldScript);
}
@Override
public void redo() {
execute();
}
}
}