skip chooser if method from abstract class is chosen from non-abstract inheritor

This commit is contained in:
Anna Kozlova
2012-01-27 21:47:54 +04:00
parent 226f470d8d
commit 0280937111
2 changed files with 10 additions and 1 deletions
@@ -15,7 +15,9 @@
*/
package com.intellij.execution.junit;
import com.intellij.execution.Location;
import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.junit2.info.MethodLocation;
import com.intellij.ide.util.PsiClassListCellRenderer;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.ui.popup.JBPopupFactory;
@@ -51,6 +53,13 @@ public class InheritorChooser {
final PsiMethod psiMethod,
final PsiClass containingClass) {
if (containingClass != null && containingClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
final Location location = context.getLocation();
if (location instanceof MethodLocation) {
final PsiClass aClass = ((MethodLocation)location).getContainingClass();
if (aClass != null && !aClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
return false;
}
}
final List<PsiClass> classes = new ArrayList<PsiClass>();
if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(new Runnable() {
@Override
@@ -112,7 +112,7 @@ public class ConfigurationContext {
return myConfiguration;
}
Location getLocation() {
public Location getLocation() {
return myLocation;
}