Merged xdebug from 1.3.x
authorincastrix <incastrix>
Wed, 30 Jan 2008 00:44:17 +0000 (00:44 +0000)
committerincastrix <incastrix>
Wed, 30 Jan 2008 00:44:17 +0000 (00:44 +0000)
net.sourceforge.phpeclipse.xdebug.ui/src/net/sourceforge/phpeclipse/xdebug/ui/php/launching/PHPDebugModelPresentation.java

index 567771e..6a1dfbb 100644 (file)
+/**********************************************************************
+ Copyright (c) 2000, 2002 IBM Corp. and others.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Common Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/cpl-v10.html
+
+ Contributors:
+ IBM Corporation - Initial implementation
+ Vicente Fernando - www.alfersoft.com.ar
+ **********************************************************************/
 package net.sourceforge.phpeclipse.xdebug.ui.php.launching;
 
-
-
-import java.io.File;
+import java.util.HashMap;
 
 import net.sourceforge.phpeclipse.xdebug.php.model.XDebugLineBreakpoint;
-import net.sourceforge.phpeclipse.xdebug.php.model.XDebugStackFrame;
+
 import net.sourceforge.phpeclipse.xdebug.php.model.XDebugTarget;
 import net.sourceforge.phpeclipse.xdebug.php.model.XDebugThread;
-import net.sourceforge.phpeclipse.xdebug.php.model.XDebugValue;
+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.phpdt.internal.debug.core.model.IPHPDebugTarget;
+
+//import net.sourceforge.phpdt.internal.debug.core.model.PHPThread;
+//import net.sourceforge.phpdt.internal.debug.core.model.PHPValue;
+//import net.sourceforge.phpdt.internal.debug.core.model.PHPVariable;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IStorage;
-import org.eclipse.core.runtime.PlatformObject;
-import org.eclipse.debug.core.model.ILineBreakpoint;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.model.IBreakpoint;
 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.ILabelProviderListener;
+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;
 
-public class PHPDebugModelPresentation implements IDebugModelPresentation {
-       
-    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();
-               }
+/**
+ * @see IDebugModelPresentation
+ */
+public class PHPDebugModelPresentation extends LabelProvider implements
+               IDebugModelPresentation {
 
-               public IPersistableElement getPersistable() {
-                       return null;
-               }
+       protected HashMap fAttributes = new HashMap(3);
 
-               public String getToolTipText() {
-                       return getStorage().getFullPath().toOSString();
-               }
+       public PHPDebugModelPresentation() {
+               super();
+       }
 
-               public boolean equals(Object object) {
-                       return object instanceof StorageEditorInput
-                                       && getStorage().equals(
-                                                       ((StorageEditorInput) object).getStorage());
-               }
+       /**
+        * @see IDebugModelPresentation#getEditorId(IEditorInput, Object)
+        */
+       public String getEditorId(IEditorInput input, Object inputObject) {
+               IEditorRegistry registry = PlatformUI.getWorkbench()
+                               .getEditorRegistry();
+               IEditorDescriptor descriptor = registry.getDefaultEditor(input
+                               .getName());
+               if (descriptor != null)
+                       return descriptor.getId();
 
-               public int hashCode() {
-                       return getStorage().hashCode();
-               }
+               return null;
+       }
 
-               public boolean exists() {
-                       return fFile.exists();
+       /**
+        * @see IDebugModelPresentation#setAttribute(String, Object)
+        */
+       public void setAttribute(String id, Object value) {
+               if (value == null) {
+                       return;
                }
+               fAttributes.put(id, value);
        }
 
-
-       public void setAttribute(String attribute, Object value) {
-               // TODO Auto-generated method stub
-
+       /**
+        * @see IDebugModelPresentation#getEditorInput(Object)
+        */
+       public IEditorInput getEditorInput(Object item) {
+
+               if (item instanceof XDebugLineBreakpoint) {
+                       IBreakpoint bp = (IBreakpoint) item;
+                       IMarker ma = bp.getMarker();
+                       //IFile eclipseFile = PHPDebugUiPlugin.getWorkspace().getRoot()
+                       //              .getFileForLocation(ma.getResource().getLocation());
+                       
+                       IFile eclipseFile = null; //XDebugUIPlugin.getWorkspace().getRoot()
+                                       //.getFile(ma.getResource().getFullPath());
+                       if (eclipseFile == null) {
+                               return null;
+                       }
+                       return new FileEditorInput(eclipseFile);
+               }
+               return null;
        }
 
        /**
@@ -96,26 +111,28 @@ public class PHPDebugModelPresentation implements IDebugModelPresentation {
                        return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_BREAKPOINT);
                } else if (element instanceof IMarker) {
                        return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_BREAKPOINT);
-               } else if (element instanceof XDebugStackFrame || element instanceof XDebugThread || element instanceof XDebugTarget) {
-                       return null;
+               } else if (element instanceof XDebugStackFrame
+                               || element instanceof XDebugThread
+                               || element instanceof XDebugTarget) {
+                       return getDebugElementImage(element);
                } else if (element instanceof XDebugVariable) {
-                       return getVariableImage((XDebugVariable)element);
+                       return getVariableImage((XDebugVariable) element);
                } else if (element instanceof XDebugValue) {
-                       return getValueImage((XDebugValue)element);
+                       return getValueImage((XDebugValue) element);
                }
                return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_BREAKPOINT);
        }
+
        private Image getVariableImage(XDebugVariable phpVar) {
-               /*              if (phpVar != null) {
-                if (phpVar.isLocal())
-                return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_VARIABLE);
-                if (phpVar.isHashValue())
-                return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_VARIABLE);
-                }
+               /*
+                * if (phpVar != null) { if (phpVar.isLocal()) return
+                * DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_VARIABLE); if
+                * (phpVar.isHashValue()) return
+                * DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_VARIABLE); }
                 */
                return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_VARIABLE);
        }
-       
+
        private Image getValueImage(XDebugValue phpVar) {
                if (phpVar != null) {
                        return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_VARIABLE);
@@ -123,59 +140,100 @@ public class PHPDebugModelPresentation implements IDebugModelPresentation {
                return DebugUITools.getImage(IDebugUIConstants.IMG_OBJS_VARIABLE);
        }
 
-
+       /**
+        * @see IDebugModelPresentation#getText(Object)
+        */
        public String getText(Object element) {
-               // TODO Auto-generated method stub
+               try {
+                       if (element instanceof XDebugLineBreakpoint) {
+                               return getBreakpointText((IBreakpoint) element);
+                       } else if (element instanceof XDebugVariable) {
+                               XDebugVariable phpVar = (XDebugVariable) element;
+                               return phpVar.toString();
+                       }
+               } catch (CoreException e) {
+                       //return PHPDebugUiMessages
+                               //      .getString("PHPDebugModelPresentation.<not responding>"); //$NON-NLS-1$
+               }
                return null;
        }
 
+       /**
+        * @see IDebugModelPresentation#computeDetail(IValue, IValueDetailListener)
+        */
        public void computeDetail(IValue value, IValueDetailListener listener) {
-               // TODO Auto-generated method stub
-
-       }
-
-       public void addListener(ILabelProviderListener listener) {
-               // TODO Auto-generated method stub
-
+               return;
        }
 
-       public void dispose() {
-               // TODO Auto-generated method stub
-
+       protected IBreakpoint getBreakpoint(IMarker marker) {
+               return DebugPlugin.getDefault().getBreakpointManager().getBreakpoint(
+                               marker);
        }
 
-       public boolean isLabelProperty(Object element, String property) {
-               // TODO Auto-generated method stub
-               return false;
+       protected String getBreakpointText(IBreakpoint breakpoint)
+                       throws CoreException {
+               if (breakpoint instanceof XDebugLineBreakpoint) {
+                       return getLineBreakpointText((XDebugLineBreakpoint) breakpoint);
+               }
+               return ""; //$NON-NLS-1$
        }
 
-       public void removeListener(ILabelProviderListener listener) {
-               // TODO Auto-generated method stub
-
+       protected String getLineBreakpointText(XDebugLineBreakpoint breakpoint)
+                       throws CoreException {
+               StringBuffer label = new StringBuffer();
+
+               label.append(breakpoint.getMarker().getResource().getFullPath());
+               label.append(" ["); //$NON-NLS-1$
+               //label.append(PHPDebugUiMessages
+                       //      .getString("PHPDebugModelPresentation.line")); //$NON-NLS-1$
+               label.append(' ');
+               label.append(breakpoint.getLineNumber());
+               label.append(']');
+
+               /*if (breakpoint.getHitCount() > 0) {
+                       label.append(" [skip count ");
+                       label.append(breakpoint.getHitCount());
+                       label.append(']');
+               }*/
+
+               /*if (breakpoint.isConditionEnabled()) {
+                       label.append(" [conditional]");
+               }*/
+
+               return label.toString();
        }
 
-       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());
+       /**
+        * Returns the image associated with the given element or <code>null</code>
+        * if none is defined.
+        */
+       protected Image getDebugElementImage(Object element) {
+               Image image = null;
+               if (element instanceof XDebugThread) {
+                       XDebugThread thread = (XDebugThread) element;
+                       if (thread.isSuspended()) {
+                               image = DebugUITools
+                                               .getImage(IDebugUIConstants.IMG_OBJS_THREAD_SUSPENDED);
+                       } else if (thread.isTerminated()) {
+                               image = DebugUITools
+                                               .getImage(IDebugUIConstants.IMG_OBJS_THREAD_TERMINATED);
+                       } else {
+                               image = DebugUITools
+                                               .getImage(IDebugUIConstants.IMG_OBJS_THREAD_RUNNING);
+                       }
+               } else if (element instanceof XDebugStackFrame) {
+                       image = DebugUITools
+                                       .getImage(IDebugUIConstants.IMG_OBJS_STACKFRAME);
+               } else if (element instanceof XDebugTarget) {
+                       XDebugTarget debugTarget = (XDebugTarget) element;
+                       if (debugTarget.isTerminated()) {
+                               image = DebugUITools
+                                               .getImage(IDebugUIConstants.IMG_OBJS_DEBUG_TARGET_TERMINATED);
+                       } else {
+                               image = DebugUITools
+                                               .getImage(IDebugUIConstants.IMG_OBJS_DEBUG_TARGET);
+                       }
                }
-               return null;
-       }
-
-       public String getEditorId(IEditorInput input, Object element) {
-               IEditorRegistry registry= PlatformUI.getWorkbench().getEditorRegistry();
-               IEditorDescriptor descriptor= registry.getDefaultEditor(input.getName());
-               if (descriptor != null)
-                       return descriptor.getId();
-               
-               return null;
+               return image;
        }
-
-}
+}
\ No newline at end of file