Skip to content

Commit d4763b2

Browse files
subyssurendran666iloveeclipse
authored andcommitted
Enhanced toggling
Enhanced toggling to support direct switch to different types of breakpoints without multiple attempts Fixes: #652
1 parent 92cc3dc commit d4763b2

File tree

4 files changed

+49
-12
lines changed

4 files changed

+49
-12
lines changed

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

Lines changed: 12 additions & 3 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,21 @@ 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) {
32+
33+
try {
3134
hitCountDialog();
3235
if (BreakpointToggleUtils.getHitCount() < 1) {
3336
return false;
3437
}
38+
if (jlp != null) {
39+
ToggleBreakpointAdapter.deleteBreakpoint(jlp, editor, null);
40+
}
41+
BreakpointToggleUtils.setHitpoint(true);
42+
return true;
43+
} catch (CoreException e) {
44+
DebugUIPlugin.log(e);
45+
return false;
3546
}
36-
BreakpointToggleUtils.setHitpoint(true);
37-
return true;
3847
}
3948

4049
private void hitCountDialog() {

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

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,26 @@
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+
}
31+
BreakpointToggleUtils.setUnsetTracepoint(true);
32+
return true;
33+
} catch (CoreException e) {
34+
DebugUIPlugin.log(e);
35+
return false;
36+
}
2537
}
26-
}
38+
}

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,26 @@
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+
}
31+
BreakpointToggleUtils.setTriggerpoint(true);
32+
return true;
33+
} catch (CoreException e) {
34+
DebugUIPlugin.log(e);
35+
return false;
36+
}
2537
}
2638
}

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1612,7 +1612,11 @@ private void toggleFieldOrMethodBreakpoints(IWorkbenchPart part, ISelection sele
16121612
} else {
16131613
deleteBreakpoint(breakpoint, part, null);
16141614
}
1615-
return;
1615+
if (!BreakpointToggleUtils.isToggleLambdaEntryBreakpoint()) {
1616+
return;
1617+
} else if (breakpoint instanceof IJavaMethodBreakpoint) {
1618+
return;
1619+
}
16161620
}
16171621
// no breakpoint found: we create new one
16181622
CompilationUnit unit = parseCompilationUnit(editor);
@@ -1688,10 +1692,10 @@ private static void logBadAnnotation(SimpleMarkerAnnotation annotation, CoreExce
16881692
*
16891693
* @param breakpoint the breakpoint to delete
16901694
* @param part a workbench part, or <code>null</code> if unknown
1691-
* @param progressMonitor the progress monitor
1695+
* @param monitor the progress monitor
16921696
* @throws CoreException if the deletion fails
16931697
*/
1694-
private static void deleteBreakpoint(IJavaBreakpoint breakpoint, IWorkbenchPart part, IProgressMonitor monitor) throws CoreException {
1698+
public static void deleteBreakpoint(IJavaBreakpoint breakpoint, IWorkbenchPart part, IProgressMonitor monitor) throws CoreException {
16951699
final Shell shell = part != null ? part.getSite().getShell() : null;
16961700
final boolean[] result = new boolean[] { true };
16971701

@@ -1886,4 +1890,4 @@ private static ICompilationUnit getCompilationUnit(ITextEditor editor) {
18861890
return JavaCore.createCompilationUnitFrom(file);
18871891
}
18881892

1889-
}
1893+
}

0 commit comments

Comments
 (0)