mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-142098 Multiple breakpoints in a single line: don't display the whole method body in toggle breakpoint drop-down
This commit is contained in:
+37
-3
@@ -19,6 +19,7 @@ import com.intellij.debugger.DebuggerBundle;
|
||||
import com.intellij.debugger.HelpID;
|
||||
import com.intellij.debugger.SourcePosition;
|
||||
import com.intellij.debugger.impl.DebuggerUtilsEx;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
@@ -121,10 +122,9 @@ public class JavaLineBreakpointType extends JavaLineBreakpointTypeBase<JavaLineB
|
||||
}
|
||||
|
||||
List<JavaBreakpointVariant> res = new SmartList<>();
|
||||
res.add(new JavaBreakpointVariant(position)); //all
|
||||
|
||||
if (!(startMethod instanceof PsiLambdaExpression)) {
|
||||
res.add(new ExactJavaBreakpointVariant(position, startMethod, -1)); // base method
|
||||
res.add(new LineJavaBreakpointVariant(position, startMethod, -1)); // base method
|
||||
}
|
||||
|
||||
int ordinal = 0;
|
||||
@@ -132,10 +132,17 @@ public class JavaLineBreakpointType extends JavaLineBreakpointTypeBase<JavaLineB
|
||||
PsiElement firstElem = DebuggerUtilsEx.getFirstElementOnTheLine(lambda, document, position.getLine());
|
||||
XSourcePositionImpl elementPosition = XSourcePositionImpl.createByElement(firstElem);
|
||||
if (elementPosition != null) {
|
||||
res.add(new ExactJavaBreakpointVariant(elementPosition, lambda, ordinal++));
|
||||
if (lambda == startMethod) {
|
||||
res.add(0, new LineJavaBreakpointVariant(elementPosition, lambda, ordinal++));
|
||||
}
|
||||
else {
|
||||
res.add(new LambdaJavaBreakpointVariant(elementPosition, lambda, ordinal++));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
res.add(new JavaBreakpointVariant(position)); //all
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -209,6 +216,33 @@ public class JavaLineBreakpointType extends JavaLineBreakpointTypeBase<JavaLineB
|
||||
}
|
||||
}
|
||||
|
||||
public class LineJavaBreakpointVariant extends ExactJavaBreakpointVariant {
|
||||
public LineJavaBreakpointVariant(@NotNull XSourcePosition position, @NotNull PsiElement element, Integer lambdaOrdinal) {
|
||||
super(position, element, lambdaOrdinal);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText() {
|
||||
return "Line";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Icon getIcon() {
|
||||
return AllIcons.Debugger.Db_set_breakpoint;
|
||||
}
|
||||
}
|
||||
|
||||
public class LambdaJavaBreakpointVariant extends ExactJavaBreakpointVariant {
|
||||
public LambdaJavaBreakpointVariant(@NotNull XSourcePosition position, @NotNull PsiElement element, Integer lambdaOrdinal) {
|
||||
super(position, element, lambdaOrdinal);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Icon getIcon() {
|
||||
return AllIcons.Debugger.LambdaBreakpoint;
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public TextRange getHighlightRange(XLineBreakpoint<JavaLineBreakpointProperties> breakpoint) {
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 452 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 360 B |
Binary file not shown.
|
After Width: | Height: | Size: 732 B |
@@ -275,6 +275,8 @@ public class AllIcons {
|
||||
public static final Icon EvaluateExpression = IconLoader.getIcon("/debugger/evaluateExpression.png"); // 16x16
|
||||
public static final Icon Frame = IconLoader.getIcon("/debugger/frame.png"); // 16x16
|
||||
public static final Icon KillProcess = IconLoader.getIcon("/debugger/killProcess.png"); // 16x16
|
||||
public static final Icon LambdaBreakpoint = IconLoader.getIcon("/debugger/LambdaBreakpoint.png"); // 12x12
|
||||
public static final Icon MultipleBreakpoints = IconLoader.getIcon("/debugger/MultipleBreakpoints.png"); // 12x12
|
||||
public static final Icon MuteBreakpoints = IconLoader.getIcon("/debugger/muteBreakpoints.png"); // 16x16
|
||||
public static final Icon NewWatch = IconLoader.getIcon("/debugger/newWatch.png"); // 16x16
|
||||
public static final Icon Question_badge = IconLoader.getIcon("/debugger/question_badge.png"); // 6x9
|
||||
|
||||
+1
-1
@@ -164,7 +164,7 @@ public abstract class XLineBreakpointType<P extends XBreakpointProperties> exten
|
||||
@Nullable
|
||||
@Override
|
||||
public Icon getIcon() {
|
||||
return null;
|
||||
return AllIcons.Debugger.MultipleBreakpoints;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -226,7 +226,7 @@ public class XDebuggerUtilImpl extends XDebuggerUtil {
|
||||
|
||||
final MySelectionListener selectionListener = new MySelectionListener();
|
||||
ListPopupImpl popup = new ListPopupImpl(
|
||||
new BaseListPopupStep<XLineBreakpointType.XLineBreakpointVariant>("Create breakpoint for", variants) {
|
||||
new BaseListPopupStep<XLineBreakpointType.XLineBreakpointVariant>("Set Breakpoint", variants) {
|
||||
@NotNull
|
||||
@Override
|
||||
public String getTextFor(XLineBreakpointType.XLineBreakpointVariant value) {
|
||||
|
||||
Reference in New Issue
Block a user