Skip to content

Commit 00524d8

Browse files
Enhanced toggling
Enhanced toggling to support direct switch to different types of breakpoints without multiple attempts
1 parent 442e00a commit 00524d8

4 files changed

Lines changed: 56 additions & 13 deletions

File tree

org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/RulerToggleHitBreakpointActionDelegate.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
*******************************************************************************/
1414
package org.eclipse.jdt.internal.debug.ui.actions;
1515

16+
import org.eclipse.core.runtime.CoreException;
17+
import org.eclipse.debug.internal.ui.DebugUIPlugin;
1618
import org.eclipse.jdt.debug.core.IJavaLineBreakpoint;
1719
import org.eclipse.jdt.internal.debug.ui.JDIDebugUIPlugin;
1820
import org.eclipse.jface.dialogs.IInputValidator;
@@ -27,14 +29,27 @@ public class RulerToggleHitBreakpointActionDelegate extends AbstractRulerToggleB
2729
@Override
2830
protected boolean doWork(ITextEditor editor, ITextSelection selection) {
2931
IJavaLineBreakpoint jlp = ToggleBreakpointAdapter.findExistingBreakpoint(currentEditor, selection);
30-
if (jlp == null) {
31-
hitCountDialog();
32-
if (BreakpointToggleUtils.getHitCount() < 1) {
33-
return false;
32+
33+
try {
34+
if (jlp != null && jlp.getHitCount() < 1) {
35+
hitCountDialog();
36+
if (BreakpointToggleUtils.getHitCount() < 1) {
37+
return false;
38+
}
39+
ToggleBreakpointAdapter.deleteBreakpoint(jlp, editor, null);
40+
}
41+
if (jlp == null) {
42+
hitCountDialog();
43+
if (BreakpointToggleUtils.getHitCount() < 1) {
44+
return false;
45+
}
3446
}
47+
BreakpointToggleUtils.setHitpoint(true);
48+
return true;
49+
} catch (CoreException e) {
50+
DebugUIPlugin.log(e);
51+
return false;
3552
}
36-
BreakpointToggleUtils.setHitpoint(true);
37-
return true;
3853
}
3954

4055
private void hitCountDialog() {

org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/RulerToggleTracepointActionDelegate.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,28 @@
1313
*******************************************************************************/
1414
package org.eclipse.jdt.internal.debug.ui.actions;
1515

16+
import org.eclipse.core.runtime.CoreException;
17+
import org.eclipse.debug.internal.ui.DebugUIPlugin;
18+
import org.eclipse.jdt.debug.core.IJavaLineBreakpoint;
1619
import org.eclipse.jface.text.ITextSelection;
1720
import org.eclipse.ui.texteditor.ITextEditor;
1821

1922
public class RulerToggleTracepointActionDelegate extends AbstractRulerToggleBreakpointActionDelegate {
2023

2124
@Override
2225
protected boolean doWork(ITextEditor editor, ITextSelection selection) {
23-
BreakpointToggleUtils.setUnsetTracepoint(true);
24-
return true;
26+
IJavaLineBreakpoint jlp = ToggleBreakpointAdapter.findExistingBreakpoint(currentEditor, selection);
27+
try {
28+
if (jlp != null && !jlp.isConditionEnabled()) {
29+
ToggleBreakpointAdapter.deleteBreakpoint(jlp, editor, null);
30+
BreakpointToggleUtils.setUnsetTracepoint(true);
31+
return true;
32+
}
33+
BreakpointToggleUtils.setUnsetTracepoint(true);
34+
return true;
35+
} catch (CoreException e) {
36+
DebugUIPlugin.log(e);
37+
return false;
38+
}
2539
}
26-
}
40+
}

org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/RulerToggleTriggerBreakpointActionDelegate.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,28 @@
1313
*******************************************************************************/
1414
package org.eclipse.jdt.internal.debug.ui.actions;
1515

16+
import org.eclipse.core.runtime.CoreException;
17+
import org.eclipse.debug.internal.ui.DebugUIPlugin;
18+
import org.eclipse.jdt.debug.core.IJavaLineBreakpoint;
1619
import org.eclipse.jface.text.ITextSelection;
1720
import org.eclipse.ui.texteditor.ITextEditor;
1821

1922
public class RulerToggleTriggerBreakpointActionDelegate extends AbstractRulerToggleBreakpointActionDelegate {
2023

2124
@Override
2225
protected boolean doWork(ITextEditor editor, ITextSelection selection) {
23-
BreakpointToggleUtils.setTriggerpoint(true);
24-
return true;
26+
IJavaLineBreakpoint jlp = ToggleBreakpointAdapter.findExistingBreakpoint(currentEditor, selection);
27+
try {
28+
if (jlp != null && !jlp.isTriggerPoint()) {
29+
ToggleBreakpointAdapter.deleteBreakpoint(jlp, editor, null);
30+
BreakpointToggleUtils.setTriggerpoint(true);
31+
return true;
32+
}
33+
BreakpointToggleUtils.setTriggerpoint(true);
34+
return true;
35+
} catch (CoreException e) {
36+
DebugUIPlugin.log(e);
37+
return false;
38+
}
2539
}
2640
}

org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/ToggleBreakpointAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1683,7 +1683,7 @@ private static void logBadAnnotation(SimpleMarkerAnnotation annotation, CoreExce
16831683
* @param progressMonitor the progress monitor
16841684
* @throws CoreException if the deletion fails
16851685
*/
1686-
private static void deleteBreakpoint(IJavaBreakpoint breakpoint, IWorkbenchPart part, IProgressMonitor monitor) throws CoreException {
1686+
public static void deleteBreakpoint(IJavaBreakpoint breakpoint, IWorkbenchPart part, IProgressMonitor monitor) throws CoreException {
16871687
final Shell shell = part != null ? part.getSite().getShell() : null;
16881688
final boolean[] result = new boolean[] { true };
16891689

@@ -1878,4 +1878,4 @@ private static ICompilationUnit getCompilationUnit(ITextEditor editor) {
18781878
return JavaCore.createCompilationUnitFrom(file);
18791879
}
18801880

1881-
}
1881+
}

0 commit comments

Comments
 (0)