Fixed the debugger client to work in Eclipse 3.1.
[phpeclipse.git] / net.sourceforge.phpeclipse.debug.core / src / net / sourceforge / phpdt / internal / debug / core / model / PHPThread.java
index 3d4c2b0..d630b3c 100644 (file)
@@ -11,6 +11,8 @@ Contributors:
 **********************************************************************/
 package net.sourceforge.phpdt.internal.debug.core.model;
 
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+
 import org.eclipse.debug.core.DebugEvent;
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.DebugPlugin;
@@ -19,6 +21,8 @@ import org.eclipse.debug.core.model.IBreakpoint;
 import org.eclipse.debug.core.model.IDebugTarget;
 import org.eclipse.debug.core.model.IStackFrame;
 import org.eclipse.debug.core.model.IThread;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.model.IWorkbenchAdapter;
 
 public class PHPThread implements IThread {
 
@@ -75,6 +79,10 @@ public class PHPThread implements IThread {
                return target;
        }
 
+       public void setDebugTarget(IDebugTarget target) {
+               this.target= target;
+       }
+       
        public ILaunch getLaunch() {
                return this.getDebugTarget().getLaunch();
        }
@@ -105,7 +113,7 @@ public class PHPThread implements IThread {
 
        public void resume() throws DebugException {
                this.prepareForResume() ;
-               ((PHPDebugTarget) this.getDebugTarget()).getPHPDBGProxy().resume(this);
+               ((PHPDebugTarget) this.getDebugTarget()).getPHPDBGProxy().resume();
        }
 
        /*
@@ -117,7 +125,7 @@ public class PHPThread implements IThread {
        */
 
        public void suspend()  {
-               isStepping = false ;
+               isStepping = false;
                isSuspended = true;
                DebugEvent ev = new DebugEvent(this, DebugEvent.SUSPEND, DebugEvent.BREAKPOINT);
                DebugPlugin.getDefault().fireDebugEventSet(new DebugEvent[] { ev });
@@ -167,9 +175,37 @@ public class PHPThread implements IThread {
        public void terminate() throws DebugException {
                isTerminated = true;
                this.frames = null;
+               getDebugTarget().terminate();
        }
 
        public Object getAdapter(Class arg0) {
+               if (IWorkbenchAdapter.class.equals(arg0)) {
+                       return new IWorkbenchAdapter() {
+                               public Object[] getChildren(Object o) {
+                                       Object[] children = null;
+                                       try {
+                                               IStackFrame[] frames = getStackFrames();
+                                               if (null != frames) {
+                                                       children = new Object[frames.length];
+                                                       for (int i = 0; i < frames.length; ++i) 
+                                                               children[i] = frames[i];
+                                               }
+                                       } catch (DebugException x) {
+                                               PHPeclipsePlugin.log("Unable to get stack frames.", x);
+                                       }
+                                       return children;
+                               }
+                               public ImageDescriptor getImageDescriptor(Object object) {
+                                       return null;
+                               }
+                               public String getLabel(Object o) {
+                                       throw new UnsupportedOperationException();
+                               }
+                               public Object getParent(Object o) {
+                                       return getDebugTarget();
+                               }
+                       };
+               }
                return null;
        }