/**
* Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.debug.ui.actions;
import org.eclipse.core.runtime.IStatus;
import org.python.pydev.core.IInterpreterManager;
import org.python.pydev.core.IPythonNature;
import org.python.pydev.core.log.Log;
import org.python.pydev.debug.core.Constants;
import org.python.pydev.editor.PyEdit;
import org.python.pydev.editor.actions.PyAction;
import org.python.pydev.plugin.PydevPlugin;
import org.python.pydev.shared_core.structure.Tuple;
public abstract class AbstractRunEditorAction extends PyAction {
protected Tuple<String, IInterpreterManager> getLaunchConfigurationTypeAndInterpreterManager(PyEdit pyEdit,
boolean isUnitTest) {
String launchConfigurationType;
String defaultType = Constants.ID_PYTHON_REGULAR_LAUNCH_CONFIGURATION_TYPE;
IInterpreterManager interpreterManager = PydevPlugin.getPythonInterpreterManager();
try {
IPythonNature nature = pyEdit.getPythonNature();
if (nature == null) {
launchConfigurationType = defaultType;
} else {
int interpreterType = nature.getInterpreterType();
interpreterManager = nature.getRelatedInterpreterManager();
switch (interpreterType) {
case IInterpreterManager.INTERPRETER_TYPE_PYTHON:
if (isUnitTest) {
launchConfigurationType = Constants.ID_PYTHON_UNITTEST_LAUNCH_CONFIGURATION_TYPE;
} else {
launchConfigurationType = Constants.ID_PYTHON_REGULAR_LAUNCH_CONFIGURATION_TYPE;
}
break;
case IInterpreterManager.INTERPRETER_TYPE_IRONPYTHON:
if (isUnitTest) {
launchConfigurationType = Constants.ID_IRONPYTHON_UNITTEST_LAUNCH_CONFIGURATION_TYPE;
} else {
launchConfigurationType = Constants.ID_IRONPYTHON_LAUNCH_CONFIGURATION_TYPE;
}
break;
case IInterpreterManager.INTERPRETER_TYPE_JYTHON:
if (isUnitTest) {
launchConfigurationType = Constants.ID_JYTHON_UNITTEST_LAUNCH_CONFIGURATION_TYPE;
} else {
launchConfigurationType = Constants.ID_JYTHON_LAUNCH_CONFIGURATION_TYPE;
}
break;
default:
throw new RuntimeException("Cannot recognize type: " + interpreterType);
}
}
} catch (Exception e) {
Log.log(IStatus.INFO, "Problem determining nature type. Using regular python launch.", e);
launchConfigurationType = defaultType;
}
return new Tuple<String, IInterpreterManager>(launchConfigurationType, interpreterManager);
}
}