X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPDebugTarget.java b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPDebugTarget.java index c86bbbe..1d11803 100644 --- a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPDebugTarget.java +++ b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPDebugTarget.java @@ -16,6 +16,7 @@ import net.sourceforge.phpdt.internal.debug.core.PHPDebugCorePlugin; import net.sourceforge.phpeclipse.PHPeclipsePlugin; import org.eclipse.core.resources.IMarkerDelta; +import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.DebugPlugin; @@ -34,7 +35,7 @@ import org.eclipse.ui.model.IWorkbenchAdapter; /** * Debug target for PHP debug model. */ -public class PHPDebugTarget implements IPHPDebugTarget, ILaunchListener, +public class PHPDebugTarget extends PHPDebugElement implements IPHPDebugTarget, ILaunchListener, IDebugEventSetListener { private IProcess process; @@ -72,6 +73,7 @@ public class PHPDebugTarget implements IPHPDebugTarget, ILaunchListener, private final State state = new State(); public PHPDebugTarget(ILaunch launch, IProcess process) { + super (null); if (null == launch && null == process) throw new IllegalArgumentException(); this.launch = launch; @@ -223,10 +225,31 @@ public class PHPDebugTarget implements IPHPDebugTarget, ILaunchListener, } public void breakpointChanged(IBreakpoint breakpoint, IMarkerDelta arg1) { - // is called e.g. after a line has been inserted before a breakpoint - // but then the debugger is out of sync with the file anyway, so - // debugging - // should be stopped here. + // This method is called whenever a source file has changed in which + // case + // we terminate since the source will be out of sync with the debugger + // The method will also be called when the user enables/disables + // breakpoints + // in this case we add or remove the breakpoint + try { + // Check if breakpoint state changed from disabled to enabled + if (breakpoint.isEnabled() + && !arg1.getAttribute("org.eclipse.debug.core.enabled", + false)) { + this.getPHPDBGProxy().addBreakpoint(breakpoint); + // Check if breakpoint state changed from enabled to disabled + } else if (!breakpoint.isEnabled() + && arg1 + .getAttribute("org.eclipse.debug.core.enabled", + true)) { + this.getPHPDBGProxy().removeBreakpoint(breakpoint); + } else { + // All other cases will terminate the debugger + terminate(); + } + } catch (CoreException e) { + // Do nothing + } } public boolean canDisconnect() { @@ -330,7 +353,7 @@ public class PHPDebugTarget implements IPHPDebugTarget, ILaunchListener, /** * When a debug target or process terminates, terminate DBG Proxy. - * + * * @see IDebugEventSetListener#handleDebugEvents(DebugEvent[]) */ public void handleDebugEvents(DebugEvent[] events) {