Fix source not showed (Ticket #654).
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.ui / src / net / sourceforge / phpeclipse / xdebug / ui / php / launching / PHPDebugModelPresentation.java
index 6a1dfbb..2aea900 100644 (file)
@@ -11,6 +11,7 @@
  **********************************************************************/
 package net.sourceforge.phpeclipse.xdebug.ui.php.launching;
 
+import java.io.File;
 import java.util.HashMap;
 
 import net.sourceforge.phpeclipse.xdebug.php.model.XDebugLineBreakpoint;
@@ -21,6 +22,7 @@ import net.sourceforge.phpeclipse.xdebug.php.model.XDebugStackFrame;
 import net.sourceforge.phpeclipse.xdebug.php.model.XDebugVariable;
 import net.sourceforge.phpeclipse.xdebug.php.model.XDebugValue;
 import net.sourceforge.phpeclipse.xdebug.ui.XDebugUIPlugin;
+import net.sourceforge.phpeclipse.xdebug.ui.php.launching.CopyOfPHPDebugModelPresentation.StorageEditorInput;
 
 //import net.sourceforge.phpdt.internal.debug.core.model.IPHPDebugTarget;
 
@@ -30,19 +32,26 @@ import net.sourceforge.phpeclipse.xdebug.ui.XDebugUIPlugin;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IStorage;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.PlatformObject;
 import org.eclipse.debug.core.DebugPlugin;
 import org.eclipse.debug.core.model.IBreakpoint;
+import org.eclipse.debug.core.model.ILineBreakpoint;
 import org.eclipse.debug.core.model.IValue;
+import org.eclipse.debug.core.sourcelookup.containers.LocalFileStorage;
 import org.eclipse.debug.ui.DebugUITools;
 import org.eclipse.debug.ui.IDebugModelPresentation;
 import org.eclipse.debug.ui.IDebugUIConstants;
 import org.eclipse.debug.ui.IValueDetailListener;
+import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.ui.IEditorDescriptor;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorRegistry;
+import org.eclipse.ui.IPersistableElement;
+import org.eclipse.ui.IStorageEditorInput;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.part.FileEditorInput;
 
@@ -85,7 +94,7 @@ public class PHPDebugModelPresentation extends LabelProvider implements
        /**
         * @see IDebugModelPresentation#getEditorInput(Object)
         */
-       public IEditorInput getEditorInput(Object item) {
+       public IEditorInput getEditorInputA(Object item) {
 
                if (item instanceof XDebugLineBreakpoint) {
                        IBreakpoint bp = (IBreakpoint) item;
@@ -103,6 +112,21 @@ public class PHPDebugModelPresentation extends LabelProvider implements
                return null;
        }
 
+       public IEditorInput getEditorInput(Object element) {
+
+               if (element instanceof IFile) {
+                       return new FileEditorInput((IFile)element);
+               }
+               if( element instanceof LocalFileStorage) {
+                       LocalFileStorage lfc= (LocalFileStorage)element;
+                       return new StorageEditorInput(lfc,lfc.getFile());
+               }
+               if (element instanceof ILineBreakpoint) {
+                       return new FileEditorInput((IFile)((ILineBreakpoint)element).getMarker().getResource());
+               }
+               return null;
+       }
+       
        /**
         * @see IDebugModelPresentation#getImage(Object)
         */
@@ -236,4 +260,51 @@ public class PHPDebugModelPresentation extends LabelProvider implements
                }
                return image;
        }
+
+    class StorageEditorInput extends PlatformObject implements
+       IStorageEditorInput {
+private File fFile;
+
+private IStorage fStorage;
+
+public StorageEditorInput(IStorage storage, File file) {
+       super();
+       fStorage = storage;
+       fFile = file;
+}
+
+public IStorage getStorage() {
+       return fStorage;
+}
+
+public ImageDescriptor getImageDescriptor() {
+       return null;
+}
+
+public String getName() {
+       return getStorage().getName();
+}
+
+public IPersistableElement getPersistable() {
+       return null;
+}
+
+public String getToolTipText() {
+       return getStorage().getFullPath().toOSString();
+}
+
+public boolean equals(Object object) {
+       return object instanceof StorageEditorInput
+                       && getStorage().equals(
+                                       ((StorageEditorInput) object).getStorage());
+}
+
+public int hashCode() {
+       return getStorage().hashCode();
+}
+
+public boolean exists() {
+       return fFile.exists();
+}
+}
 }
\ No newline at end of file