blob: cb0d028fe756d01c0cf60f350eb120a9c1311814 [file] [log] [blame]
package org.eclipse.dltk.internal.launching;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.dltk.core.DLTKLanguageManager;
import org.eclipse.dltk.core.IDLTKLanguageToolkit;
import org.eclipse.dltk.core.IScriptProject;
import org.eclipse.dltk.launching.AbstractScriptLaunchConfigurationDelegate;
import org.eclipse.dltk.launching.IInterpreterInstall;
import org.eclipse.dltk.launching.IInterpreterRunner;
import org.eclipse.dltk.launching.InterpreterConfig;
import org.eclipse.dltk.launching.LaunchingMessages;
import org.eclipse.dltk.launching.ScriptLaunchConfigurationConstants;
import org.eclipse.dltk.launching.debug.DebuggingEngineManager;
import org.eclipse.dltk.launching.debug.IDebuggingEngine;
import com.ibm.icu.text.MessageFormat;
/**
* Class used to delegate debug engine discovery before run operation is
* executed.
*
* @author haiodo
*
*/
public class DebugRunnerDelegate implements IInterpreterRunner {
private IInterpreterInstall install;
public DebugRunnerDelegate(IInterpreterInstall install) {
this.install = install;
}
@Override
public void run(InterpreterConfig config, ILaunch launch,
IProgressMonitor monitor) throws CoreException {
ILaunchConfiguration launchConfiguration = launch
.getLaunchConfiguration();
IScriptProject scriptProject = AbstractScriptLaunchConfigurationDelegate
.getScriptProject(launchConfiguration);
DebuggingEngineManager manager = DebuggingEngineManager.getInstance();
IDLTKLanguageToolkit toolkit = DLTKLanguageManager
.getLanguageToolkit(scriptProject);
IDebuggingEngine engine = manager.getSelectedDebuggingEngine(
scriptProject.getProject(), toolkit.getNatureId());
if (engine != null) {
IInterpreterRunner runner = engine.getRunner(install);
if (runner != null) {
runner.run(config, launch, monitor);
} else {
throw new CoreException(new Status(IStatus.ERROR,
DLTKLaunchingPlugin.PLUGIN_ID,
ScriptLaunchConfigurationConstants.ERR_INTERPRETER_RUNNER_DOES_NOT_EXIST,
MessageFormat.format(
LaunchingMessages.InterpreterRunnerDoesntExist,
install.getName(), ILaunchManager.DEBUG_MODE),
null));
}
}
}
}