IDEA-131134 Support multiple breakpoints within on single line - preselect lambda where caret is

This commit is contained in:
Egor.Ushakov
2015-06-18 12:24:30 +03:00
parent 45c2cf0d8e
commit 69374a526d
2 changed files with 23 additions and 0 deletions

View File

@@ -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();
}
}

View File

@@ -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);