mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 11:50:54 +07:00
IDEA-131134 Support multiple breakpoints within on single line - preselect lambda where caret is
This commit is contained in:
@@ -137,10 +137,13 @@ public abstract class XLineBreakpointType<P extends XBreakpointProperties> exten
|
||||
public abstract class XLineBreakpointVariant {
|
||||
public abstract String getText();
|
||||
|
||||
@Nullable
|
||||
public abstract Icon getIcon();
|
||||
|
||||
@Nullable
|
||||
public abstract TextRange getHighlightRange();
|
||||
|
||||
@Nullable
|
||||
public abstract P createProperties();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,6 +189,21 @@ public class XDebuggerUtilImpl extends XDebuggerUtil {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// calculate default item
|
||||
int caretOffset = editor.getCaretModel().getOffset();
|
||||
XLineBreakpointType<P>.XLineBreakpointVariant defaultVariant = null;
|
||||
for (XLineBreakpointType<P>.XLineBreakpointVariant variant : variants) {
|
||||
TextRange range = variant.getHighlightRange();
|
||||
if (range != null && range.contains(caretOffset)) {
|
||||
//noinspection ConstantConditions
|
||||
if (defaultVariant == null || defaultVariant.getHighlightRange().getLength() > range.getLength()) {
|
||||
defaultVariant = variant;
|
||||
}
|
||||
}
|
||||
}
|
||||
final int defaultIndex = defaultVariant != null ? variants.indexOf(defaultVariant) : 0;
|
||||
|
||||
final MySelectionListener selectionListener = new MySelectionListener();
|
||||
ListPopup popup = JBPopupFactory.getInstance().createListPopup(
|
||||
new BaseListPopupStep<XLineBreakpointType.XLineBreakpointVariant>("Create breakpoint for", variants) {
|
||||
@@ -220,6 +235,11 @@ public class XDebuggerUtilImpl extends XDebuggerUtil {
|
||||
});
|
||||
return FINAL_CHOICE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDefaultOptionIndex() {
|
||||
return defaultIndex;
|
||||
}
|
||||
});
|
||||
popup.addListSelectionListener(selectionListener);
|
||||
popup.show(relativePoint);
|
||||
|
||||
Reference in New Issue
Block a user