mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
test method browser: remove duplicates in component completion
This commit is contained in:
@@ -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<PsiMethod> filter = getFilter(testClass);
|
||||
for (PsiMethod psiMethod : testClass.getAllMethods()) {
|
||||
if (filter.value(psiMethod)) {
|
||||
result.addElement(LookupElementBuilder.create(psiMethod.getName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}.apply(field);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+5
-22
@@ -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<T extends TestDiscoveryConfiguration> 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<PsiMethod> getFilter(final PsiClass testClass) {
|
||||
@@ -149,6 +131,7 @@ public class TestDiscoveryConfigurable<T extends TestDiscoveryConfiguration> ext
|
||||
}
|
||||
};
|
||||
methodBrowser.setField(textFieldWithBrowseButton);
|
||||
methodBrowser.installCompletion(textFieldWithBrowseButton.getChildComponent());
|
||||
|
||||
panelWithSettings.add(myMethod, gc);
|
||||
panelWithSettings.add(myChangesRb, gc);
|
||||
|
||||
+3
-20
@@ -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<T extends JUnitConfiguration> 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<T extends JUnitConfiguration> 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);
|
||||
}
|
||||
|
||||
|
||||
+7
-21
@@ -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<TestNGConfiguratio
|
||||
}
|
||||
|
||||
browseListeners[i].setField((ComponentWithBrowseButton)field);
|
||||
if (browseListeners[i] instanceof MethodBrowser) {
|
||||
((MethodBrowser)browseListeners[i]).installCompletion((EditorTextField)((ComponentWithBrowseButton)field).getChildComponent());
|
||||
}
|
||||
}
|
||||
model.setType(TestType.CLASS);
|
||||
propertiesFile.getComponent().getTextField().setDocument(model.getPropertiesFileDocument());
|
||||
@@ -422,22 +424,6 @@ public class TestNGConfigurationEditor extends SettingsEditor<TestNGConfiguratio
|
||||
final EditorTextFieldWithBrowseButton methodEditorTextField = 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 = getClassName();
|
||||
if (className.trim().length() == 0) {
|
||||
return;
|
||||
}
|
||||
final PsiClass testClass = getModuleSelector().findClass(className);
|
||||
if (testClass == null) return;
|
||||
for (PsiMethod psiMethod : testClass.getAllMethods()) {
|
||||
if (TestNGUtil.hasTest(psiMethod)) {
|
||||
result.addElement(LookupElementBuilder.create(psiMethod.getName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}.apply(methodEditorTextField.getChildComponent());
|
||||
methodField.setComponent(methodEditorTextField);
|
||||
|
||||
groupField.setComponent(new TextFieldWithBrowseButton.NoPathCompletion());
|
||||
|
||||
Reference in New Issue
Block a user