/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.components.script.gui;
import java.io.File;
import java.io.IOException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.ui.PartInitException;
import de.rcenvironment.core.gui.utils.common.EditorsHelper;
import de.rcenvironment.core.utils.common.TempFileServiceAccess;
import de.rcenvironment.core.utils.common.legacy.FileEncodingUtils;
/**
* Opens file for scripting and load content of configuration if there is already some script stuff.
*
* @author Doreen Seider
* @author Sascha Zur
*/
public abstract class AbstractEditScriptRunnable implements Runnable {
private static final Log LOGGER = LogFactory.getLog(AbstractEditScriptRunnable.class);
@Override
public void run() {
try {
final File tempFile = TempFileServiceAccess.getInstance()
.createTempFileWithFixedFilename("script.py");
// if script content already exist, load it to temp file
if (getScript() != null) {
FileEncodingUtils.saveUnicodeStringToFile(getScript(), tempFile);
}
EditorsHelper.openExternalFileInEditor(tempFile, new Runnable[] {
new Runnable() {
@Override
public void run() {
try {
// save new tempFile in component's configuration
setScript(FileEncodingUtils.loadUnicodeStringFromFile(tempFile));
} catch (final IOException e) {
LOGGER.error(e);
}
}
}
});
} catch (final IOException e) {
LOGGER.error(e);
} catch (final PartInitException e) {
LOGGER.error(e);
}
}
protected abstract void setScript(String script);
protected abstract String getScript();
}