diff --git a/plugins/devkit/src/inspections/quickfix/ExtensionPointCandidate.java b/plugins/devkit/src/inspections/quickfix/ExtensionPointCandidate.java index b9acfee9b324..384d115ba914 100644 --- a/plugins/devkit/src/inspections/quickfix/ExtensionPointCandidate.java +++ b/plugins/devkit/src/inspections/quickfix/ExtensionPointCandidate.java @@ -34,4 +34,9 @@ class ExtensionPointCandidate { this.attributeName = "implementation"; this.beanClassName = null; } + + @Override + public String toString() { + return epName; + } } diff --git a/plugins/devkit/src/inspections/quickfix/RegisterExtensionFix.java b/plugins/devkit/src/inspections/quickfix/RegisterExtensionFix.java index d005470afcf1..5cb864ccfa5a 100644 --- a/plugins/devkit/src/inspections/quickfix/RegisterExtensionFix.java +++ b/plugins/devkit/src/inspections/quickfix/RegisterExtensionFix.java @@ -24,6 +24,9 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.extensions.KeyedFactoryEPBean; import com.intellij.openapi.fileTypes.FileTypeExtensionPoint; import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.popup.JBPopupFactory; +import com.intellij.openapi.ui.popup.PopupStep; +import com.intellij.openapi.ui.popup.util.BaseListPopupStep; import com.intellij.openapi.util.ClassExtensionPoint; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; @@ -72,19 +75,30 @@ public class RegisterExtensionFix implements IntentionAction { } @Override - public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { + public void invoke(@NotNull Project project, final Editor editor, PsiFile file) throws IncorrectOperationException { RegisterInspectionFix.choosePluginDescriptor(project, editor, file, new Consumer>() { @Override public void consume(DomFileElement element) { - doFix(element); + doFix(editor, element); } }); } - private void doFix(final DomFileElement element) { + private void doFix(Editor editor, final DomFileElement element) { if (myEPCandidates.size() == 1) { registerExtension(element, myEPCandidates.get(0)); } + else { + final BaseListPopupStep popupStep = + new BaseListPopupStep("Choose Extension Point", myEPCandidates) { + @Override + public PopupStep onChosen(ExtensionPointCandidate selectedValue, boolean finalChoice) { + registerExtension(element, selectedValue); + return FINAL_CHOICE; + } + }; + JBPopupFactory.getInstance().createListPopup(popupStep).showInBestPositionFor(editor); + } } private void registerExtension(final DomFileElement element, final ExtensionPointCandidate candidate) {