package net.sourceforge.phpdt.internal.debug.ui;
import java.util.Map;
+import java.util.Iterator;
import net.sourceforge.phpdt.internal.debug.core.model.PHPStackFrame;
import net.sourceforge.phpdt.internal.launching.PHPLaunchConfigurationAttribute;
public class PHPSourceLocator implements IPersistableSourceLocator, ISourcePresentation {
private String absoluteWorkingDirectory;
- private Map fileMap = null;
+ private Map pathMap = null;
private boolean remoteDebug;
- private IPath remotePath;
+ private IPath remoteSourcePath;
private String projectName;
public PHPSourceLocator() {
public void initializeDefaults(ILaunchConfiguration configuration) throws CoreException {
this.absoluteWorkingDirectory = configuration.getAttribute(PHPLaunchConfigurationAttribute.WORKING_DIRECTORY, "");
this.remoteDebug=configuration.getAttribute(PHPLaunchConfigurationAttribute.REMOTE_DEBUG,false);
- this.fileMap = configuration.getAttribute(PHPLaunchConfigurationAttribute.FILE_MAP, (Map)null);
+ this.pathMap = configuration.getAttribute(PHPLaunchConfigurationAttribute.FILE_MAP, (Map)null);
this.projectName =configuration.getAttribute(PHPLaunchConfigurationAttribute.PROJECT_NAME, "");
if (BootLoader.getOS().equals(BootLoader.OS_WIN32))
- this.remotePath= new Path((configuration.getAttribute(PHPLaunchConfigurationAttribute.REMOTE_PATH, "")).toLowerCase());
+ this.remoteSourcePath= new Path((configuration.getAttribute(PHPLaunchConfigurationAttribute.REMOTE_PATH, "")).toLowerCase());
else
- this.remotePath= new Path(configuration.getAttribute(PHPLaunchConfigurationAttribute.REMOTE_PATH, ""));
+ this.remoteSourcePath= new Path(configuration.getAttribute(PHPLaunchConfigurationAttribute.REMOTE_PATH, ""));
// system.os.name
*/
public Object getSourceElement(IStackFrame stackFrame) {
- String key=((PHPStackFrame) stackFrame).getFileName();
-
-
+ String fileName=((PHPStackFrame) stackFrame).getFileName();
String file="";
if (remoteDebug)
{
- IPath path = new Path(key);
- if (remotePath.isPrefixOf(path))
+ IPath path = new Path(fileName);
+ if (remoteSourcePath.isPrefixOf(path))
{
IPath projectPath;
- path=path.removeFirstSegments(remotePath.matchingFirstSegments(path));
+ path=path.removeFirstSegments(remoteSourcePath.matchingFirstSegments(path));
file=path.toString();
projectPath=(PHPeclipsePlugin.getWorkspace().getRoot().getProject(projectName).getLocation());
- file=(projectPath.append(path)).toString();
+ return (projectPath.append(path)).toOSString();
}
-// file=(String)(fileMap.get(key));
- } else
- {
- file=key;
+
+ if (pathMap == null) {
+ return fileName;
+ }
+ Iterator iterator = pathMap.keySet().iterator();
+ while (iterator.hasNext()) {
+ String local = (String) iterator.next();
+ IPath remotePath = new Path((String) pathMap.get(local));
+ if (remotePath.isPrefixOf(path)) {
+ path=path.removeFirstSegments(remotePath.matchingFirstSegments(path));
+ IPath localPath= new Path(local);
+ return localPath.append(path).toOSString();
+ }
+ }
+ return fileName;
+ } else {
+ return fileName;
}
-
- return file;
}
/**