mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
run configurations: accept configuration creation over multi selection in project view (IDEA-114259)
This commit is contained in:
@@ -219,7 +219,8 @@ public class ConfigurationContext {
|
||||
}
|
||||
}
|
||||
if (element == null) {
|
||||
element = CommonDataKeys.PSI_ELEMENT.getData(dataContext);
|
||||
final PsiElement[] elements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext);
|
||||
element = elements != null && elements.length >= 1 ? elements[0] : null;
|
||||
}
|
||||
if (element == null) {
|
||||
final VirtualFile file = CommonDataKeys.VIRTUAL_FILE.getData(dataContext);
|
||||
|
||||
@@ -41,20 +41,20 @@ public class AddToTestsPatternAction extends AnAction {
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final DataContext dataContext = e.getDataContext();
|
||||
final PsiElement[] psiElements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext);
|
||||
final Set<PsiMember> classes = PatternConfigurationProducer.collectTestMembers(psiElements);
|
||||
final Set<PsiElement> classes = PatternConfigurationProducer.collectTestMembers(psiElements);
|
||||
|
||||
final Project project = CommonDataKeys.PROJECT.getData(dataContext);
|
||||
final List<JUnitConfiguration> patternConfigurations = collectPatternConfigurations(classes, project);
|
||||
if (patternConfigurations.size() == 1) {
|
||||
final JUnitConfiguration configuration = patternConfigurations.get(0);
|
||||
for (PsiMember aClass : classes) {
|
||||
for (PsiElement aClass : classes) {
|
||||
configuration.getPersistentData().getPatterns().add(PatternConfigurationProducer.getQName(aClass));
|
||||
}
|
||||
} else {
|
||||
JBPopupFactory.getInstance().createListPopup(new BaseListPopupStep<JUnitConfiguration>("Choose suite to add", patternConfigurations) {
|
||||
@Override
|
||||
public PopupStep onChosen(JUnitConfiguration configuration, boolean finalChoice) {
|
||||
for (PsiMember aClass : classes) {
|
||||
for (PsiElement aClass : classes) {
|
||||
configuration.getPersistentData().getPatterns().add(PatternConfigurationProducer.getQName(aClass));
|
||||
}
|
||||
return FINAL_CHOICE;
|
||||
@@ -81,7 +81,7 @@ public class AddToTestsPatternAction extends AnAction {
|
||||
final DataContext dataContext = e.getDataContext();
|
||||
final PsiElement[] psiElements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext);
|
||||
if (psiElements != null) {
|
||||
final Set<PsiMember> foundMembers = PatternConfigurationProducer.collectTestMembers(psiElements);
|
||||
final Set<PsiElement> foundMembers = PatternConfigurationProducer.collectTestMembers(psiElements);
|
||||
if (foundMembers.isEmpty()) return;
|
||||
final Project project = CommonDataKeys.PROJECT.getData(dataContext);
|
||||
if (project != null) {
|
||||
@@ -96,7 +96,7 @@ public class AddToTestsPatternAction extends AnAction {
|
||||
}
|
||||
}
|
||||
|
||||
private static List<JUnitConfiguration> collectPatternConfigurations(Set<PsiMember> foundClasses, Project project) {
|
||||
private static List<JUnitConfiguration> collectPatternConfigurations(Set<PsiElement> foundClasses, Project project) {
|
||||
final List<RunConfiguration> configurations = RunManager.getInstance(project).getConfigurationsList(
|
||||
JUnitConfigurationType.getInstance());
|
||||
final List<JUnitConfiguration> foundConfigurations = new ArrayList<JUnitConfiguration>();
|
||||
|
||||
+1
-1
@@ -43,6 +43,6 @@ public class AllInPackageConfigurationProducer extends JUnitConfigurationProduce
|
||||
|
||||
@Override
|
||||
public boolean isPreferredConfiguration(ConfigurationFromContext self, ConfigurationFromContext other) {
|
||||
return !other.isProducedBy(AllInDirectoryConfigurationProducer.class);
|
||||
return !other.isProducedBy(AllInDirectoryConfigurationProducer.class) && !other.isProducedBy(PatternConfigurationProducer.class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.intellij.execution.configurations.ModuleBasedConfiguration;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
@@ -67,8 +66,8 @@ public class PatternConfigurationProducer extends JUnitConfigurationProducer {
|
||||
});
|
||||
}
|
||||
|
||||
static Set<PsiMember> collectTestMembers(PsiElement[] psiElements) {
|
||||
final Set<PsiMember> foundMembers = new LinkedHashSet<PsiMember>();
|
||||
static Set<PsiElement> collectTestMembers(PsiElement[] psiElements) {
|
||||
final Set<PsiElement> foundMembers = new LinkedHashSet<PsiElement>();
|
||||
for (PsiElement psiElement : psiElements) {
|
||||
if (psiElement instanceof PsiClassOwner) {
|
||||
final PsiClass[] classes = ((PsiClassOwner)psiElement).getClasses();
|
||||
@@ -79,11 +78,16 @@ public class PatternConfigurationProducer extends JUnitConfigurationProducer {
|
||||
}
|
||||
} else if (psiElement instanceof PsiClass) {
|
||||
if (JUnitUtil.isTestClass((PsiClass)psiElement)) {
|
||||
foundMembers.add((PsiClass)psiElement);
|
||||
foundMembers.add(psiElement);
|
||||
}
|
||||
} else if (psiElement instanceof PsiMethod) {
|
||||
if (JUnitUtil.getTestMethod(psiElement) != null) {
|
||||
foundMembers.add((PsiMethod)psiElement);
|
||||
foundMembers.add(psiElement);
|
||||
}
|
||||
} else if (psiElement instanceof PsiDirectory) {
|
||||
final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage((PsiDirectory)psiElement);
|
||||
if (aPackage != null) {
|
||||
foundMembers.add(aPackage);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -103,7 +107,7 @@ public class PatternConfigurationProducer extends JUnitConfigurationProducer {
|
||||
final DataContext dataContext = context.getDataContext();
|
||||
PsiElement[] elements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext);
|
||||
if (elements != null) {
|
||||
for (PsiMember psiClass : collectTestMembers(elements)) {
|
||||
for (PsiElement psiClass : collectTestMembers(elements)) {
|
||||
classes.add(getQName(psiClass));
|
||||
}
|
||||
return elements;
|
||||
@@ -115,7 +119,7 @@ public class PatternConfigurationProducer extends JUnitConfigurationProducer {
|
||||
for (VirtualFile file : files) {
|
||||
final PsiFile psiFile = psiManager.findFile(file);
|
||||
if (psiFile instanceof PsiClassOwner) {
|
||||
for (PsiMember psiMember : collectTestMembers(((PsiClassOwner)psiFile).getClasses())) {
|
||||
for (PsiElement psiMember : collectTestMembers(((PsiClassOwner)psiFile).getClasses())) {
|
||||
classes.add(((PsiClass)psiMember).getQualifiedName());
|
||||
}
|
||||
psiFiles.add(psiFile);
|
||||
@@ -127,13 +131,17 @@ public class PatternConfigurationProducer extends JUnitConfigurationProducer {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String getQName(PsiMember psiMember) {
|
||||
public static String getQName(PsiElement psiMember) {
|
||||
if (psiMember instanceof PsiClass) {
|
||||
return ((PsiClass)psiMember).getQualifiedName();
|
||||
}
|
||||
else {
|
||||
return psiMember.getContainingClass().getQualifiedName() + "," + psiMember.getName();
|
||||
else if (psiMember instanceof PsiMember) {
|
||||
return ((PsiMember)psiMember).getContainingClass().getQualifiedName() + "," + ((PsiMember)psiMember).getName();
|
||||
} else if (psiMember instanceof PsiPackage) {
|
||||
return ((PsiPackage)psiMember).getQualifiedName();
|
||||
}
|
||||
assert false;
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user