From 9f32b379b2960daa889424622e9f611c20d03522 Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 6 Feb 2012 13:28:53 +0100 Subject: [PATCH] IDEA-76659: create method from usage: show chooser when hierarchy is available --- .../impl/quickfix/CreateFromUsageBaseFix.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) 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); }