/**
* Copyright (c) 2005-2011 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 com.python.pydev.debug.ui.launching;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationType;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.ui.CommonTab;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.python.pydev.core.IInterpreterManager;
import org.python.pydev.debug.core.Constants;
import org.python.pydev.debug.ui.launching.AbstractLaunchShortcut;
import org.python.pydev.debug.ui.launching.FileOrResource;
import org.python.pydev.plugin.PydevPlugin;
public class PydevdServerLaunchShortcut extends AbstractLaunchShortcut {
@Override
public ILaunchConfiguration createDefaultLaunchConfiguration(FileOrResource[] resources) {
ILaunchManager manager = org.eclipse.debug.core.DebugPlugin.getDefault().getLaunchManager();
ILaunchConfigurationType type = manager.getLaunchConfigurationType(getLaunchConfigurationType());
if (type == null) {
reportError("Python launch configuration not found", null);
return null;
}
StringBuffer buffer = new StringBuffer("Debug Server");
String name = buffer.toString().trim();
try {
ILaunchConfigurationWorkingCopy workingCopy = type.newInstance(null, name);
// Common Tab Arguments
CommonTab tab = new CommonTab();
tab.setDefaults(workingCopy);
tab.dispose();
// Python Main Tab Arguments
workingCopy.setAttribute(Constants.ATTR_PROJECT, "PyDevd Debug Server");
workingCopy.setAttribute(Constants.ATTR_RESOURCE_TYPE, 1);
workingCopy.setAttribute(IDebugUIConstants.ATTR_LAUNCH_IN_BACKGROUND, false);
workingCopy.setAttribute(IDebugUIConstants.ATTR_PRIVATE, true);
ILaunchConfiguration ret = workingCopy.doSave();
return ret;
} catch (CoreException e) {
reportError(null, e);
return null;
}
}
@Override
public void launch(FileOrResource[] file, String mode) {
ILaunchConfiguration conf = createDefaultLaunchConfiguration(file);
DebugUITools.launch(conf, mode);
}
@Override
protected String getLaunchConfigurationType() {
return "com.python.pydev.debug.pydevdServerLaunchConfigurationType";
}
@Override
protected IInterpreterManager getInterpreterManager(IProject project) {
return PydevPlugin.getPythonInterpreterManager();
}
}