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 { public String getSourceName(Object object) throws CoreException { ScriptStackFrame frame = (ScriptStackFrame) object; String path = frame.getFileName().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; } }