diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java index b8743cc13044..fc7fefb43761 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFromUsageBaseFix.java @@ -130,7 +130,12 @@ public abstract class CreateFromUsageBaseFix extends BaseIntentionAction { int index = list.getSelectedIndex(); if (index < 0) return; final PsiClass aClass = (PsiClass) list.getSelectedValue(); - doInvoke(project, aClass); + CommandProcessor.getInstance().executeCommand(project, new Runnable() { + @Override + public void run() { + doInvoke(project, aClass); + } + }, getText(), null); } }; @@ -321,10 +326,15 @@ public abstract class CreateFromUsageBaseFix extends BaseIntentionAction { return Collections.emptyList(); } - if (!allowOuterClasses || - !isAllowOuterTargetClass() || - ApplicationManager.getApplication().isUnitTestMode()) + if (ApplicationManager.getApplication().isUnitTestMode()) { return Collections.singletonList(psiClass); + } + + if (!allowOuterClasses || !isAllowOuterTargetClass()) { + final ArrayList classes = new ArrayList(); + collectSupers(psiClass, classes); + return classes; + } List result = new ArrayList(); @@ -337,6 +347,17 @@ public abstract class CreateFromUsageBaseFix extends BaseIntentionAction { } } + private static void collectSupers(PsiClass psiClass, ArrayList classes) { + classes.add(psiClass); + + final PsiClass[] supers = psiClass.getSupers(); + for (PsiClass aSuper : supers) { + if (aSuper.getManager().isInProject(aSuper)) { + collectSupers(aSuper, classes); + } + } + } + protected static void startTemplate (@NotNull Editor editor, final Template template, @NotNull final Project project) { startTemplate(editor, template, project, null); }