| 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)); |
| } |
| } |
| } |
| } |