import net.sourceforge.phpdt.internal.debug.core.PHPDBGProxy;
import net.sourceforge.phpdt.internal.debug.core.PHPDebugCorePlugin;
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.core.resources.IMarkerDelta;
import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.core.model.IProcess;
+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;
/**
* Debug target for PHP debug model.
threads = updatedThreads;
fireChangeEvent();
+ fireThreadCreateEvent(phpThread);
}
private void fireChangeEvent() {
DebugPlugin.getDefault().fireDebugEventSet(new DebugEvent[] { ev });
}
+ private void fireThreadCreateEvent(PHPThread phpThread) {
+ DebugEvent ev = new DebugEvent(phpThread, DebugEvent.CREATE);
+ DebugPlugin.getDefault().fireDebugEventSet(new DebugEvent[] { ev });
+ }
+
protected PHPThread getThreadById(int id) {
for (int i = 0; i < threads.length; i++) {
if (threads[i].getId() == id) {
this.threads = new PHPThread[0];
isTerminated = true;
fireChangeEvent();
+ IBreakpointManager manager= DebugPlugin.getDefault().getBreakpointManager();
+ manager.removeBreakpointListener(this);
+ DebugPlugin.getDefault().removeDebugEventListener(this);
}
public boolean canResume() {
}
public Object getAdapter(Class arg0) {
+ if (IWorkbenchAdapter.class.equals(arg0)) {
+ return new IWorkbenchAdapter() {
+ public Object[] getChildren(Object o) {
+ Object[] children = null;
+ IThread[] threads = getThreads();
+ if (null != threads) {
+ children = new Object[threads.length];
+ for (int i = 0; i < threads.length; ++i)
+ children[i] = threads[i];
+ }
+ return children;
+ }
+ public ImageDescriptor getImageDescriptor(Object object) {
+ return null;
+ }
+ public String getLabel(Object o) {
+ String label = "(Unable to look up name... check error log)";
+ try {
+ label = getName();
+ } catch (DebugException x) {
+ PHPeclipsePlugin.log(label, x);
+ }
+ return label;
+ }
+ public Object getParent(Object o) {
+ return PHPDebugTarget.this.getLaunch();
+ }
+ };
+ }
return null;
}
**********************************************************************/
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;
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 {
}
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;
}
getDefault().getLog().log(status);
}
- public static void log(Throwable e) {
- log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "PHPeclipsePlugin.internalErrorOccurred", e)); //$NON-NLS-1$
+ public static void log(Throwable t) {
+ log("PHPeclipsePlugin.internalErrorOccurred", t); //$NON-NLS-1$
+ }
+
+ public static void log(String message, Throwable t) {
+ log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, message, t));
}
public static void logErrorMessage(String message) {