Patch from Anders Betn�- enable changing breakpoints while debugging.
authorstefanbjarni <stefanbjarni>
Wed, 3 Aug 2005 22:22:52 +0000 (22:22 +0000)
committerstefanbjarni <stefanbjarni>
Wed, 3 Aug 2005 22:22:52 +0000 (22:22 +0000)
net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPDebugTarget.java

index c86bbbe..887cee3 100644 (file)
@@ -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;
@@ -223,11 +224,32 @@ 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() {
                return false;