mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-244301 [JUnit] Implement new UI for editing run configuration settings
setting the right browser for class GitOrigin-RevId: 116393318f3ebbe8b7403e5e2ba6e737bcab3712
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3407ae8a27
commit
48d836a6b8
@@ -1,6 +1,7 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.execution.application;
|
||||
|
||||
import com.intellij.execution.configuration.BrowseModuleValueActionListener;
|
||||
import com.intellij.execution.ui.ClassBrowser;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.highlighter.JavaFileType;
|
||||
@@ -18,6 +19,7 @@ import com.intellij.ui.EditorTextField;
|
||||
import com.intellij.ui.ExtendableEditorSupport;
|
||||
import com.intellij.ui.components.fields.ExtendableTextComponent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
@@ -28,7 +30,8 @@ public final class ClassEditorField extends EditorTextField {
|
||||
|
||||
public static ClassEditorField createClassField(Project project,
|
||||
Computable<? extends Module> moduleSelector,
|
||||
JavaCodeFragment.VisibilityChecker visibilityChecker) {
|
||||
JavaCodeFragment.VisibilityChecker visibilityChecker,
|
||||
@Nullable BrowseModuleValueActionListener<?> classBrowser) {
|
||||
PsiElement defaultPackage = JavaPsiFacade.getInstance(project).findPackage("");
|
||||
JavaCodeFragmentFactory factory = JavaCodeFragmentFactory.getInstance(project);
|
||||
JavaCodeFragment fragment = factory.createReferenceCodeFragment("", defaultPackage, true, true);
|
||||
@@ -36,7 +39,11 @@ public final class ClassEditorField extends EditorTextField {
|
||||
Document document = PsiDocumentManager.getInstance(project).getDocument(fragment);
|
||||
|
||||
ClassEditorField field = new ClassEditorField(document, project, JavaFileType.INSTANCE);
|
||||
ClassBrowser.AppClassBrowser<EditorTextField> browser = new ClassBrowser.AppClassBrowser<EditorTextField>(project, moduleSelector) {
|
||||
if (classBrowser != null) {
|
||||
classBrowser.setTextAccessor(field);
|
||||
}
|
||||
BrowseModuleValueActionListener<?> browser = classBrowser != null ? classBrowser :
|
||||
new ClassBrowser.AppClassBrowser<EditorTextField>(project, moduleSelector) {
|
||||
@Override
|
||||
public String getText() {
|
||||
return field.getText();
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ public final class JavaApplicationSettingsEditor extends JavaSettingsEditorBase<
|
||||
@NotNull
|
||||
private SettingsEditorFragment<ApplicationConfiguration, EditorTextField> createMainClass(ModuleClasspathCombo classpathCombo) {
|
||||
EditorTextField mainClass = ClassEditorField.createClassField(myProject, () -> classpathCombo.getSelectedModule(),
|
||||
JavaCodeFragment.VisibilityChecker.PROJECT_SCOPE_VISIBLE);
|
||||
JavaCodeFragment.VisibilityChecker.PROJECT_SCOPE_VISIBLE, null);
|
||||
mainClass.setShowPlaceholderWhenFocused(true);
|
||||
UIUtil.setMonospaced(mainClass);
|
||||
String placeholder = ExecutionBundle.message("application.configuration.main.class.placeholder");
|
||||
|
||||
+13
-9
@@ -13,7 +13,7 @@ import java.awt.event.ActionListener;
|
||||
|
||||
public abstract class BrowseModuleValueActionListener<T extends JComponent> implements ActionListener {
|
||||
private final Project myProject;
|
||||
private ComponentWithBrowseButton<T> myField;
|
||||
private TextAccessor myField;
|
||||
|
||||
protected BrowseModuleValueActionListener(Project project) {
|
||||
myProject = project;
|
||||
@@ -24,22 +24,26 @@ public abstract class BrowseModuleValueActionListener<T extends JComponent> impl
|
||||
}
|
||||
|
||||
public JComponent getField() {
|
||||
return myField;
|
||||
return (JComponent)myField;
|
||||
}
|
||||
|
||||
public void setField(@NotNull ComponentWithBrowseButton<T> field) {
|
||||
myField = field;
|
||||
myField.addActionListener(this);
|
||||
myField.setButtonEnabled(!myProject.isDefault());
|
||||
setTextAccessor((TextAccessor)field);
|
||||
field.addActionListener(this);
|
||||
field.setButtonEnabled(!myProject.isDefault());
|
||||
}
|
||||
|
||||
public void setTextAccessor(@NotNull TextAccessor accessor) {
|
||||
myField = accessor;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return ((TextAccessor)myField).getText();
|
||||
return myField.getText();
|
||||
}
|
||||
|
||||
public void detach() {
|
||||
if (myField != null) {
|
||||
myField.removeActionListener(this);
|
||||
if (myField instanceof ComponentWithBrowseButton) {
|
||||
((ComponentWithBrowseButton<?>)myField).removeActionListener(this);
|
||||
myField = null;
|
||||
}
|
||||
}
|
||||
@@ -48,7 +52,7 @@ public abstract class BrowseModuleValueActionListener<T extends JComponent> impl
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
String text = showDialog();
|
||||
if (text != null) {
|
||||
((TextAccessor)myField).setText(text);
|
||||
myField.setText(text);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -611,7 +611,7 @@ public class JUnitConfigurable<T extends JUnitConfiguration> extends SettingsEdi
|
||||
private final ConfigurationModuleSelector myModuleSelector;
|
||||
private final EditorTextFieldWithBrowseButton myPackageTextField;
|
||||
|
||||
TestClassBrowser(final Project project, ConfigurationModuleSelector moduleSelector, EditorTextFieldWithBrowseButton packageTextField) {
|
||||
TestClassBrowser(final Project project, @NotNull ConfigurationModuleSelector moduleSelector, EditorTextFieldWithBrowseButton packageTextField) {
|
||||
super(project, ExecutionBundle.message("choose.test.class.dialog.title"));
|
||||
myModuleSelector = moduleSelector;
|
||||
myPackageTextField = packageTextField;
|
||||
|
||||
+7
-8
@@ -68,11 +68,9 @@ public class JUnitTestKindFragment extends SettingsEditorFragment<JUnitConfigura
|
||||
InsertPathAction.addTo(directoryField.getTextField(), dirFileChooser);
|
||||
FileChooserFactory.getInstance().installFileCompletion(directoryField.getTextField(), dirFileChooser, true, null);
|
||||
|
||||
BrowseModuleValueActionListener<?>[] browsers =
|
||||
JUnitConfigurable.createBrowsers(project, moduleSelector, packageField, pattern, category, () -> getClassName());
|
||||
EditorTextField classField = ClassEditorField.createClassField(project, () -> moduleSelector.getModule(),
|
||||
JUnitConfigurable.createClassVisibilityChecker(
|
||||
(JUnitConfigurable.TestClassBrowser)browsers[CLASS]));
|
||||
BrowseModuleValueActionListener<?>[] browsers = JUnitConfigurable.createBrowsers(project, moduleSelector, packageField, pattern, category, () -> getClassName());
|
||||
JavaCodeFragment.VisibilityChecker classVisibilityChecker = JUnitConfigurable.createClassVisibilityChecker((JUnitConfigurable.TestClassBrowser)browsers[CLASS]);
|
||||
EditorTextField classField = ClassEditorField.createClassField(project, () -> moduleSelector.getModule(), classVisibilityChecker, browsers[CLASS]);
|
||||
EditorTextFieldWithBrowseButton methodField = new EditorTextFieldWithBrowseButton(project, true,
|
||||
JavaCodeFragment.VisibilityChecker.EVERYTHING_VISIBLE,
|
||||
PlainTextLanguage.INSTANCE.getAssociatedFileType());
|
||||
@@ -100,10 +98,11 @@ public class JUnitTestKindFragment extends SettingsEditorFragment<JUnitConfigura
|
||||
|
||||
private void kindChanged(int kind) {
|
||||
myTypeChooser.setItem(kind);
|
||||
for (JComponent field : myFields) {
|
||||
field.setVisible(false);
|
||||
}
|
||||
Arrays.stream(myFields).forEach(field -> field.setVisible(false));
|
||||
myFields[kind].setVisible(true);
|
||||
if (METHOD == kind) {
|
||||
myFields[CLASS].setVisible(true);
|
||||
}
|
||||
fireEditorStateChanged();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user