prefer junit/testng pattern configuration: detect multiple selection directly by context component (IDEA-126045)

This commit is contained in:
Anna Kozlova
2014-06-09 17:03:14 +04:00
parent 27f10a6c30
commit d05243ddc8
3 changed files with 24 additions and 2 deletions
@@ -20,6 +20,7 @@ import com.intellij.execution.Location;
import com.intellij.execution.configurations.RunConfiguration;
import com.intellij.notification.NotificationGroup;
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.fileEditor.OpenFileDescriptor;
@@ -36,6 +37,8 @@ import com.intellij.ui.SystemNotifications;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.util.List;
@@ -74,6 +77,17 @@ public class TestsUIUtil {
return null;
}
public static boolean isMultipleSelectionImpossible(DataContext dataContext) {
final Component component = PlatformDataKeys.CONTEXT_COMPONENT.getData(dataContext);
if (component instanceof JTree) {
final TreePath[] selectionPaths = ((JTree)component).getSelectionPaths();
if (selectionPaths == null || selectionPaths.length <= 1) {
return true;
}
}
return false;
}
public static Navigatable getOpenFileDescriptor(final AbstractTestProxy testProxy, final TestFrameworkRunningModel model) {
final TestConsoleProperties testConsoleProperties = model.getProperties();
return getOpenFileDescriptor(testProxy, testConsoleProperties,
@@ -22,16 +22,23 @@ import com.intellij.execution.actions.ConfigurationContext;
import com.intellij.execution.configurations.ModuleBasedConfiguration;
import com.intellij.execution.junit2.info.MethodLocation;
import com.intellij.execution.testframework.AbstractTestProxy;
import com.intellij.execution.testframework.TestTreeView;
import com.intellij.execution.testframework.TestsUIUtil;
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;
import com.intellij.openapi.util.Ref;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.util.ui.Tree;
import javax.swing.*;
import javax.swing.tree.TreePath;
import java.awt.*;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
@@ -98,7 +105,7 @@ public class PatternConfigurationProducer extends JUnitConfigurationProducer {
}
public static boolean isMultipleElementsSelected(ConfigurationContext context) {
if (AbstractTestProxy.DATA_KEY.getData(context.getDataContext()) != null) return false;
if (TestsUIUtil.isMultipleSelectionImpossible(context.getDataContext())) return false;
final LinkedHashSet<String> classes = new LinkedHashSet<String>();
final PsiElement[] elements = collectPatternElements(context, classes);
if (elements != null && collectTestMembers(elements, false).size() > 1) {
@@ -27,6 +27,7 @@ import com.intellij.execution.configurations.ModuleBasedConfiguration;
import com.intellij.execution.junit.JUnitUtil;
import com.intellij.execution.junit2.info.MethodLocation;
import com.intellij.execution.testframework.AbstractTestProxy;
import com.intellij.execution.testframework.TestsUIUtil;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.LangDataKeys;
@@ -86,7 +87,7 @@ public class TestNGPatternConfigurationProducer extends TestNGConfigurationProdu
}
public static boolean isMultipleElementsSelected(ConfigurationContext context) {
if (AbstractTestProxy.DATA_KEY.getData(context.getDataContext()) != null) return false;
if (TestsUIUtil.isMultipleSelectionImpossible(context.getDataContext())) return false;
final LinkedHashSet<String> classes = new LinkedHashSet<String>();
final PsiElement[] elements = collectPatternElements(context, classes);
if (elements != null && collectTestMembers(elements).size() > 1) {