blob: fbc63c8d9fd4a74906d163c1728af6202c4ecaab [file] [log] [blame]
package org.eclipse.dltk.launching.sourcelookup;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupParticipant;
import org.eclipse.dltk.internal.debug.core.model.ScriptStackFrame;
import org.eclipse.dltk.launching.ScriptLaunchConfigurationConstants;
public class RemoteScriptSourceLookupParticipant
extends AbstractSourceLookupParticipant {
@Override
public String getSourceName(Object object) throws CoreException {
ScriptStackFrame frame = (ScriptStackFrame) object;
String path = frame.getSourceURI().getPath();
/*
* XXX: we may also need to know the remote operating system type - see
* win32 check in ScriptSourceLookupParticipant
*
* currently there is no real validation of the of this path value - the
* RemoteScriptSourceLookupDirector may be able to leverage this fact -
* it could check if the remote dir was specified, and if yes and there
* is no cooresponding IFile object that matches an entry in the
* workspace, we could return 'null' there and follow the regular path
* of letting them specific where to look.
*
* this would only apply for being looked for under the workspace -
* intrepreter library source would still need to be looked up
*/
String remoteDir = getDirector().getLaunchConfiguration().getAttribute(
ScriptLaunchConfigurationConstants.ATTR_DLTK_DBGP_REMOTE_WORKING_DIR,
""); //$NON-NLS-1$
if (path.indexOf(remoteDir) != -1) {
return path.substring(remoteDir.length() + 1);
}
return path;
}
}