Code needed for final 1.1.9 build.
[phpeclipse.git] / net.sourceforge.phpeclipse.32.compatibility / src / net / sourceforge / phpdt / internal / launching / PHPSourceLocator.java
diff --git a/net.sourceforge.phpeclipse.32.compatibility/src/net/sourceforge/phpdt/internal/launching/PHPSourceLocator.java b/net.sourceforge.phpeclipse.32.compatibility/src/net/sourceforge/phpdt/internal/launching/PHPSourceLocator.java
deleted file mode 100644 (file)
index 652a6c7..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-package net.sourceforge.phpdt.internal.launching;
-
-import java.util.Iterator;
-import java.util.Map;
-
-import net.sourceforge.phpdt.internal.debug.core.model.PHPStackFrame;
-import net.sourceforge.phpeclipse.PHPeclipsePlugin;
-import net.sourceforge.phpeclipse.builder.ExternalEditorInput;
-import net.sourceforge.phpeclipse.builder.FileStorage;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.model.IPersistableSourceLocator;
-import org.eclipse.debug.core.model.IStackFrame;
-import org.eclipse.debug.ui.ISourcePresentation;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.FileEditorInput;
-
-public class PHPSourceLocator implements IPersistableSourceLocator, ISourcePresentation {
-       private String          absoluteWorkingDirectory;
-       private Map             pathMap = null;
-       private boolean         remoteDebug;
-       private IPath           remoteSourcePath;
-       private String          projectName;
-
-  public PHPSourceLocator() {
-
-  }
-
-  public String getAbsoluteWorkingDirectory() {
-    return absoluteWorkingDirectory;
-  }
-
-  /**
-   * @see org.eclipse.debug.core.model.IPersistableSourceLocator#getMemento()
-   */
-  public String getMemento() throws CoreException {
-    return null;
-  }
-
-  /**
-   * @see org.eclipse.debug.core.model.IPersistableSourceLocator#initializeFromMemento(String)
-   */
-  public void initializeFromMemento(String memento) throws CoreException {
-  }
-
-  /**
-   * @see org.eclipse.debug.core.model.IPersistableSourceLocator#initializeDefaults(ILaunchConfiguration)
-   */
-  public void initializeDefaults (ILaunchConfiguration configuration) throws CoreException {
-    this.absoluteWorkingDirectory = configuration.getAttribute (PHPLaunchConfigurationAttribute.WORKING_DIRECTORY, "");
-       this.remoteDebug              = configuration.getAttribute (PHPLaunchConfigurationAttribute.REMOTE_DEBUG,false);
-       this.pathMap                  = configuration.getAttribute (PHPLaunchConfigurationAttribute.FILE_MAP, (Map)null);
-       this.projectName              = configuration.getAttribute (PHPLaunchConfigurationAttribute.PROJECT_NAME, "");
-
-       if (Platform.getOS().equals(Platform.OS_WIN32)) {
-               this.remoteSourcePath = new Path ((configuration.getAttribute (PHPLaunchConfigurationAttribute.REMOTE_PATH, "")).toLowerCase());
-       }
-       else {
-               this.remoteSourcePath = new Path (configuration.getAttribute (PHPLaunchConfigurationAttribute.REMOTE_PATH, ""));
-       }
-
-//             system.os.name
-  }
-
-  /**
-   * @see org.eclipse.debug.core.model.ISourceLocator#getSourceElement(IStackFrame)
-   *
-   * Return the client side source filename for the server side source file.
-   * E.g. when cross debugging, the server side filename could be /var/www/index.php
-   * on the client side it is either a Eclipse_PHP_projectname\index.php (when it is a linked file)
-   *
-   *
-   * @param stackFrame    The stackframe for which we want the client side source file name
-   * @return              The filename as it appears on the client side
-   */
-  public Object getSourceElement (IStackFrame stackFrame) {
-       IPath    projectPath;
-       IPath    remotePath;
-       IPath    path;
-       IPath    localPath;
-       Iterator iterator;
-       String   fileName;
-       String   file;
-       String   local;
-
-       fileName = ((PHPStackFrame) stackFrame).getFileName ();                 // Get the filename as it is submitted by DBG
-       file     = "";
-
-    if (remoteDebug) {                                              // Is it a remote debugging session
-               path = new Path (fileName);                                 // Create a IPath object for the server side filename
-
-               if (!remoteSourcePath.isEmpty()) {
-                       if (remoteSourcePath.isPrefixOf (path)) {                   // Is the server side filename with the remote source path
-                               path        = path.removeFirstSegments (remoteSourcePath.matchingFirstSegments (path)); // Remove the remote source path
-                               file        = path.toString ();                         // The filename without the remote source path
-                               projectPath = (PHPeclipsePlugin.getWorkspace().getRoot().getProject(projectName).getLocation()); // Get the absolute project path
-
-                               return (projectPath.append (path)).toOSString ();       // Return the filename as absolute client side path
-                       }
-               }
-               else {
-                       if (pathMap == null) {                                      // Do we have path mapping (e.g. for cross platform debugging)
-                               return fileName;                                        // No, then return the filename as it given by DBG (the full server side path)
-                       }
-
-                       iterator = pathMap.keySet().iterator();
-
-                       while (iterator.hasNext ()) {
-                               local      = (String) iterator.next ();                 // Get the local/client side path of the mapping
-                               remotePath = new Path ((String) pathMap.get (local));   // Get the remote/server side path of the mapping
-
-                               if (remotePath.isPrefixOf (path)) {                     // Starts the remote/server side file path with the remote/server side mapping path
-                                       path      = path.removeFirstSegments (remotePath.matchingFirstSegments (path)); // Remove the absolute path from filename
-                                       localPath = new Path (local);                       // Create new IPath object for the local/client side path
-                                       path      = localPath.append (path);                // Prepend the project relative path to filename
-
-                                       projectPath = (PHPeclipsePlugin.getWorkspace().getRoot().getProject(projectName).getLocation()); // Get the absolute project path
-
-                                       return (projectPath.append (path)).toOSString ();       // Return the filename as absolute client side path
-                               }
-                       }
-               }
-
-               if (pathMap == null) {                                      // Do we have path mapping (e.g. for cross platform debugging)
-                       return fileName;                                        // No, then return the filename as it given by DBG (the full server side path)
-               }
-
-               iterator = pathMap.keySet().iterator();
-
-               while (iterator.hasNext ()) {
-                       local      = (String) iterator.next ();                 // Get the local/client side path of the mapping
-                       remotePath = new Path ((String) pathMap.get (local));   // Get the remote/server side path of the mapping
-
-                       if (remotePath.isPrefixOf (path)) {                     // Starts the remote/server side file path with the remote/server side mapping path
-                               path      = path.removeFirstSegments (remotePath.matchingFirstSegments (path)); // Remove the absolute path from filename
-                               localPath = new Path (local);                       // Create new IPath object for the local/client side path
-
-                               return localPath.append (path).toOSString ();       // Append the remote filename to the client side path (So we return the absolute path
-                                                                                                                                       // to the source file as the client side sees it.
-                       }
-               }
-
-               return fileName;
-       } else {
-               return fileName;
-    }
-  }
-
-  /**
-   * @see org.eclipse.debug.ui.ISourcePresentation#getEditorId(IEditorInput, Object)
-   */
-  public String getEditorId(IEditorInput input, Object element) {
-    return PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor((String) element).getId();
-  }
-
-  /**
-   * @see org.eclipse.debug.ui.ISourcePresentation#getEditorInput(Object)
-   *
-   * @param element The absolute local/client side file path
-   */
-  public IEditorInput getEditorInput (Object element) {
-       String           filename;
-       IWorkbench       workbench;
-       IWorkbenchWindow window;
-    IWorkbenchPage   page;
-       IPath            path;
-       IFile            eclipseFile;
-
-    filename  = (String) element;
-    workbench = PlatformUI.getWorkbench ();
-    window    = workbench.getWorkbenchWindows ()[0];
-    page      = window.getActivePage ();
-    path      = new Path (filename);                                // Create an IPath object of the absolute local/client side file name
-
-    // If the file exists in the workspace, open it
-    eclipseFile = PHPeclipsePlugin.getWorkspace().getRoot().getFileForLocation (path);
-
-    //    IFile eclipseFile = PHPeclipsePlugin.getWorkspace().getRoot().getFileForLocation(new Path(filename));
-//    if (eclipseFile == null) {
-//      filename = this.getAbsoluteWorkingDirectory() + "/" + filename;
-//      eclipseFile = PHPeclipsePlugin.getWorkspace().getRoot().getFileForLocation(new Path(filename));
-//      if (eclipseFile == null) {
-//        PHPeclipsePlugin.log(IStatus.INFO, "Could not find file \"" + element + "\".");
-//        return null;
-//      }
-//    } else
-
-    if (eclipseFile == null || !eclipseFile.exists ()) {
-      //               Otherwise open the stream directly
-         //
-      if (page == null) {
-        PHPeclipsePlugin.log(IStatus.INFO, "Could not find file \"" + element + "\".");
-        return null;
-      }
-
-      FileStorage storage = new FileStorage (path);
-      storage.setReadOnly ();
-
-      //      IEditorRegistry registry = workbench.getEditorRegistry();
-      //      IEditorDescriptor desc = registry.getDefaultEditor(filename);
-      //      if (desc == null) {
-      //        desc = registry.getDefaultEditor();
-      //      }
-      return new ExternalEditorInput(storage);
-    }
-
-    return new FileEditorInput (eclipseFile);
-  }
-}