From f19dd5dd8cd2942eeb810bbb1e1aa1473aeba059 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 15 Jul 2015 17:08:13 +0300 Subject: [PATCH] test method browser: remove duplicates in component completion --- .../com/intellij/execution/MethodBrowser.java | 25 +++++++++++++++++ .../TestDiscoveryConfigurable.java | 27 ++++-------------- .../configuration/JUnitConfigurable.java | 23 ++------------- .../TestNGConfigurationEditor.java | 28 +++++-------------- 4 files changed, 40 insertions(+), 63 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/MethodBrowser.java b/java/execution/impl/src/com/intellij/execution/MethodBrowser.java index 6fe1aa024260..0ca2ed66b525 100644 --- a/java/execution/impl/src/com/intellij/execution/MethodBrowser.java +++ b/java/execution/impl/src/com/intellij/execution/MethodBrowser.java @@ -15,6 +15,8 @@ */ package com.intellij.execution; +import com.intellij.codeInsight.completion.CompletionResultSet; +import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.execution.configuration.BrowseModuleValueActionListener; import com.intellij.execution.junit.JUnitUtil; import com.intellij.execution.ui.ConfigurationModuleSelector; @@ -23,6 +25,9 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Condition; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; +import com.intellij.ui.EditorTextField; +import com.intellij.util.TextFieldCompletionProvider; +import org.jetbrains.annotations.NotNull; public abstract class MethodBrowser extends BrowseModuleValueActionListener { @@ -58,4 +63,24 @@ public abstract class MethodBrowser extends BrowseModuleValueActionListener { return null; } + public void installCompletion(EditorTextField field) { + new TextFieldCompletionProvider() { + @Override + protected void addCompletionVariants(@NotNull String text, int offset, @NotNull String prefix, @NotNull CompletionResultSet result) { + final String className = getClassName(); + if (className.trim().length() == 0) { + return; + } + final PsiClass testClass = getModuleSelector().findClass(className); + if (testClass == null) return; + final Condition filter = getFilter(testClass); + for (PsiMethod psiMethod : testClass.getAllMethods()) { + if (filter.value(psiMethod)) { + result.addElement(LookupElementBuilder.create(psiMethod.getName())); + } + } + } + }.apply(field); + } + } diff --git a/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryConfigurable.java b/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryConfigurable.java index 4886879edfd0..83a585f55881 100644 --- a/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryConfigurable.java +++ b/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryConfigurable.java @@ -15,10 +15,7 @@ */ package com.intellij.execution.testDiscovery; -import com.intellij.codeInsight.completion.CompletionResultSet; -import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.execution.MethodBrowser; -import com.intellij.execution.junit.JUnitUtil; import com.intellij.execution.ui.AlternativeJREPanel; import com.intellij.execution.ui.ClassBrowser; import com.intellij.execution.ui.CommonJavaParametersPanel; @@ -33,11 +30,13 @@ import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Pair; import com.intellij.openapi.vcs.changes.ChangeListManager; import com.intellij.openapi.vcs.changes.LocalChangeList; -import com.intellij.psi.*; +import com.intellij.psi.JavaCodeFragment; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiMethod; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.ui.EditorTextFieldWithBrowseButton; import com.intellij.ui.PanelWithAnchor; -import com.intellij.util.TextFieldCompletionProvider; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; @@ -110,23 +109,6 @@ public class TestDiscoveryConfigurable ext final EditorTextFieldWithBrowseButton textFieldWithBrowseButton = new EditorTextFieldWithBrowseButton(project, true, JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE, PlainTextLanguage.INSTANCE.getAssociatedFileType()); - new TextFieldCompletionProvider() { - @Override - protected void addCompletionVariants(@NotNull String text, int offset, @NotNull String prefix, @NotNull CompletionResultSet result) { - final String className = myClass.getComponent().getText(); - if (className.trim().length() == 0) { - return; - } - final PsiClass testClass = getModuleSelector().findClass(className); - if (testClass == null) return; - final JUnitUtil.TestMethodFilter filter = new JUnitUtil.TestMethodFilter(testClass); - for (PsiMethod psiMethod : testClass.getAllMethods()) { - if (filter.value(psiMethod)) { - result.addElement(LookupElementBuilder.create(psiMethod.getName())); - } - } - } - }.apply(textFieldWithBrowseButton.getChildComponent()); myMethod.setComponent(textFieldWithBrowseButton); final MethodBrowser methodBrowser = new MethodBrowser(project) { protected Condition getFilter(final PsiClass testClass) { @@ -149,6 +131,7 @@ public class TestDiscoveryConfigurable ext } }; methodBrowser.setField(textFieldWithBrowseButton); + methodBrowser.installCompletion(textFieldWithBrowseButton.getChildComponent()); panelWithSettings.add(myMethod, gc); panelWithSettings.add(myChangesRb, gc); diff --git a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java index dc6c95fa2760..5f5ff0527ebf 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java +++ b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java @@ -16,8 +16,6 @@ package com.intellij.execution.junit2.configuration; -import com.intellij.codeInsight.completion.CompletionResultSet; -import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.MethodBrowser; import com.intellij.execution.configuration.BrowseModuleValueActionListener; @@ -53,7 +51,6 @@ import com.intellij.rt.execution.junit.RepeatCount; import com.intellij.ui.*; import com.intellij.ui.components.JBLabel; import com.intellij.util.IconUtil; -import com.intellij.util.TextFieldCompletionProvider; import com.intellij.util.ui.UIUtil; import gnu.trove.TIntArrayList; import org.jetbrains.annotations.NotNull; @@ -419,6 +416,9 @@ public class JUnitConfigurable extends SettingsEdi myModel.setJUnitDocument(i, document); } myBrowsers[i].setField(field); + if (myBrowsers[i] instanceof MethodBrowser) { + ((MethodBrowser)myBrowsers[i]).installCompletion((EditorTextField)field.getChildComponent()); + } } } @@ -462,23 +462,6 @@ public class JUnitConfigurable extends SettingsEdi final EditorTextFieldWithBrowseButton textFieldWithBrowseButton = new EditorTextFieldWithBrowseButton(myProject, true, JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE, PlainTextLanguage.INSTANCE.getAssociatedFileType()); - new TextFieldCompletionProvider() { - @Override - protected void addCompletionVariants(@NotNull String text, int offset, @NotNull String prefix, @NotNull CompletionResultSet result) { - final String className = getClassName(); - if (className.trim().length() == 0) { - return; - } - final PsiClass testClass = getModuleSelector().findClass(className); - if (testClass == null) return; - final JUnitUtil.TestMethodFilter filter = new JUnitUtil.TestMethodFilter(testClass); - for (PsiMethod psiMethod : testClass.getAllMethods()) { - if (filter.value(psiMethod)) { - result.addElement(LookupElementBuilder.create(psiMethod.getName())); - } - } - } - }.apply(textFieldWithBrowseButton.getChildComponent()); myMethod.setComponent(textFieldWithBrowseButton); } diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java index f28298035d52..afaa0e8f6225 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java @@ -22,13 +22,10 @@ */ package com.theoryinpractice.testng.configuration; -import com.intellij.codeInsight.completion.CompletionResultSet; -import com.intellij.codeInsight.lookup.LookupElementBuilder; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.JavaExecutionUtil; import com.intellij.execution.MethodBrowser; import com.intellij.execution.configuration.BrowseModuleValueActionListener; -import com.intellij.execution.junit.JUnitUtil; import com.intellij.execution.testframework.TestSearchScope; import com.intellij.execution.ui.AlternativeJREPanel; import com.intellij.execution.ui.CommonJavaParametersPanel; @@ -53,9 +50,11 @@ import com.intellij.ui.*; import com.intellij.ui.components.JBList; import com.intellij.ui.table.TableView; import com.intellij.util.IconUtil; -import com.intellij.util.TextFieldCompletionProvider; import com.theoryinpractice.testng.MessageInfoException; -import com.theoryinpractice.testng.configuration.browser.*; +import com.theoryinpractice.testng.configuration.browser.GroupBrowser; +import com.theoryinpractice.testng.configuration.browser.PackageBrowser; +import com.theoryinpractice.testng.configuration.browser.SuiteBrowser; +import com.theoryinpractice.testng.configuration.browser.TestClassBrowser; import com.theoryinpractice.testng.model.*; import com.theoryinpractice.testng.util.TestNGUtil; import org.jetbrains.annotations.NotNull; @@ -211,6 +210,9 @@ public class TestNGConfigurationEditor extends SettingsEditor