From 3a7e36d3545f2a21abc07c48bc63918d25e521a5 Mon Sep 17 00:00:00 2001 From: nik Date: Mon, 28 Sep 2015 12:25:44 +0300 Subject: [PATCH] reuse ModulesComboBox in ConfigurationModuleSelector --- .../execution/applet/AppletConfigurable.form | 2 +- .../execution/applet/AppletConfigurable.java | 5 +- .../application/ApplicationConfigurable.form | 2 +- .../application/ApplicationConfigurable.java | 3 +- .../execution/remote/RemoteConfigurable.java | 3 +- .../TestDiscoveryConfigurable.java | 7 +- .../ui/ConfigurationModuleSelector.java | 71 +++++++++---------- .../configuration/JUnitConfigurable.form | 2 +- .../configuration/JUnitConfigurable.java | 5 +- .../TestNGConfigurationEditor.form | 1 + .../TestNGConfigurationEditor.java | 7 +- 11 files changed, 56 insertions(+), 52 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurable.form b/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurable.form index 5a122ebee17c..decd17c17f37 100644 --- a/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurable.form +++ b/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurable.form @@ -64,7 +64,7 @@ - + diff --git a/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurable.java b/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurable.java index d7027dd5a517..5e23915c7be3 100644 --- a/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurable.java +++ b/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurable.java @@ -15,6 +15,7 @@ */ package com.intellij.execution.applet; +import com.intellij.application.options.ModulesComboBox; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.impl.CheckableRunConfigurationEditor; import com.intellij.execution.ui.AlternativeJREPanel; @@ -57,7 +58,7 @@ public class AppletConfigurable extends SettingsEditor impl private TextFieldWithBrowseButton myHtmlFile; private JTextField myWidth; private JTextField myHeight; - private LabeledComponent myModule; + private LabeledComponent myModule; private JPanel myTablePlace; private JBLabel myHtmlFileLabel; private JBLabel myClassNameLabel; @@ -175,7 +176,7 @@ public class AppletConfigurable extends SettingsEditor impl myTable.scrollRectToVisible(myTable.getCellRect(index, 0, true)); } - private JComboBox getModuleComponent() { + private ModulesComboBox getModuleComponent() { return myModule.getComponent(); } diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.form b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.form index 75c7ef537017..9803e48deb67 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.form +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.form @@ -35,7 +35,7 @@ - + diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java index 27958a922d2c..0f6b641976c5 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java @@ -15,6 +15,7 @@ */ package com.intellij.execution.application; +import com.intellij.application.options.ModulesComboBox; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.JavaExecutionUtil; import com.intellij.execution.configurations.ConfigurationUtil; @@ -44,7 +45,7 @@ import java.awt.event.ActionListener; public class ApplicationConfigurable extends SettingsEditor implements PanelWithAnchor { private CommonJavaParametersPanel myCommonProgramParameters; private LabeledComponent myMainClass; - private LabeledComponent myModule; + private LabeledComponent myModule; private JPanel myWholePanel; private final ConfigurationModuleSelector myModuleSelector; diff --git a/java/execution/impl/src/com/intellij/execution/remote/RemoteConfigurable.java b/java/execution/impl/src/com/intellij/execution/remote/RemoteConfigurable.java index 5cfd535d081b..f40c81bac8ba 100644 --- a/java/execution/impl/src/com/intellij/execution/remote/RemoteConfigurable.java +++ b/java/execution/impl/src/com/intellij/execution/remote/RemoteConfigurable.java @@ -20,6 +20,7 @@ */ package com.intellij.execution.remote; +import com.intellij.application.options.ModulesComboBox; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.configurations.RemoteConnection; import com.intellij.execution.ui.ConfigurationArgumentsHelpArea; @@ -52,7 +53,7 @@ public class RemoteConfigurable extends SettingsEditor { private ConfigurationArgumentsHelpArea myHelpArea; @NonNls private ConfigurationArgumentsHelpArea myJDK13HelpArea; private ConfigurationArgumentsHelpArea myJDK14HelpArea; - private LabeledComponent myModule; + private LabeledComponent myModule; private String myHostName = ""; @NonNls protected static final String LOCALHOST = "localhost"; 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 83a585f55881..be87a810c784 100644 --- a/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryConfigurable.java +++ b/java/execution/impl/src/com/intellij/execution/testDiscovery/TestDiscoveryConfigurable.java @@ -15,6 +15,7 @@ */ package com.intellij.execution.testDiscovery; +import com.intellij.application.options.ModulesComboBox; import com.intellij.execution.MethodBrowser; import com.intellij.execution.ui.AlternativeJREPanel; import com.intellij.execution.ui.ClassBrowser; @@ -51,7 +52,7 @@ public class TestDiscoveryConfigurable ext private final ConfigurationModuleSelector myModuleSelector; // Fields private JPanel myWholePanel = new JPanel(new BorderLayout()); - private LabeledComponent myModule = new LabeledComponent(); + private LabeledComponent myModule = new LabeledComponent(); private CommonJavaParametersPanel myCommonJavaParameters = new CommonJavaParametersPanel(); private AlternativeJREPanel myAlternativeJREPanel = new AlternativeJREPanel(); private LabeledComponent myClass = new LabeledComponent(); @@ -65,7 +66,7 @@ public class TestDiscoveryConfigurable ext public TestDiscoveryConfigurable(final Project project) { myModule.setText("Use classpath of"); myModule.setLabelLocation(BorderLayout.WEST); - myModule.setComponent(new JComboBox()); + myModule.setComponent(new ModulesComboBox()); myModuleSelector = new ConfigurationModuleSelector(project, getModulesComponent()); myCommonJavaParameters.setModuleContext(myModuleSelector.getModule()); myCommonJavaParameters.setHasModuleMacro(); @@ -225,7 +226,7 @@ public class TestDiscoveryConfigurable ext updateComponents(); } - public JComboBox getModulesComponent() { + public ModulesComboBox getModulesComponent() { return myModule.getComponent(); } diff --git a/java/execution/impl/src/com/intellij/execution/ui/ConfigurationModuleSelector.java b/java/execution/impl/src/com/intellij/execution/ui/ConfigurationModuleSelector.java index 24a93afade62..1e58a5c15fdf 100644 --- a/java/execution/impl/src/com/intellij/execution/ui/ConfigurationModuleSelector.java +++ b/java/execution/impl/src/com/intellij/execution/ui/ConfigurationModuleSelector.java @@ -15,6 +15,8 @@ */ package com.intellij.execution.ui; +import com.intellij.application.options.ModuleListCellRenderer; +import com.intellij.application.options.ModulesComboBox; import com.intellij.execution.configurations.JavaRunConfigurationModule; import com.intellij.execution.configurations.ModuleBasedConfiguration; import com.intellij.openapi.module.Module; @@ -22,38 +24,42 @@ import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.ModuleType; import com.intellij.openapi.module.ModuleTypeManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ui.configuration.ModulesAlphaComparator; import com.intellij.psi.PsiClass; import com.intellij.ui.ComboboxSpeedSearch; -import com.intellij.ui.ListCellRendererWrapper; import com.intellij.ui.SortedComboBoxModel; import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.util.ArrayList; import java.util.Collection; -import java.util.Comparator; import java.util.List; public class ConfigurationModuleSelector { - - private final String myNoModule; private final Project myProject; private final JComboBox myModulesList; - private final SortedComboBoxModel myModules = new SortedComboBoxModel(new Comparator() { - public int compare(final Object module, final Object module1) { - if (module instanceof Module && module1 instanceof Module){ - return ((Module)module).getName().compareToIgnoreCase(((Module)module1).getName()); - } - return -1; - } - }); + /** + * @deprecated use {@link #ConfigurationModuleSelector(Project, ModulesComboBox)} instead + */ public ConfigurationModuleSelector(final Project project, final JComboBox modulesList) { this(project, modulesList, ""); } - public ConfigurationModuleSelector(final Project project, final JComboBox modulesList, String noModule) { - myNoModule = noModule; + public ConfigurationModuleSelector(Project project, ModulesComboBox modulesComboBox) { + this(project, modulesComboBox, ""); + } + + public ConfigurationModuleSelector(Project project, ModulesComboBox modulesComboBox, String noModule) { + myProject = project; + myModulesList = modulesComboBox; + modulesComboBox.allowEmptySelection(noModule); + } + + /** + * @deprecated use {@link #ConfigurationModuleSelector(Project, ModulesComboBox, String)} instead + */ + public ConfigurationModuleSelector(final Project project, final JComboBox modulesList, final String noModule) { myProject = project; myModulesList = modulesList; new ComboboxSpeedSearch(modulesList){ @@ -61,25 +67,13 @@ public class ConfigurationModuleSelector { if (element instanceof Module){ return ((Module)element).getName(); } else if (element == null) { - return myNoModule; + return noModule; } return super.getElementText(element); } }; - myModulesList.setModel(myModules); - myModulesList.setRenderer(new ListCellRendererWrapper() { - @Override - public void customize(final JList list, final Object value, final int index, final boolean selected, final boolean hasFocus) { - if (value instanceof Module) { - final Module module = (Module)value; - setIcon(ModuleType.get(module).getIcon()); - setText(module.getName()); - } - else if (value == null) { - setText(myNoModule); - } - } - }); + myModulesList.setModel(new SortedComboBoxModel(ModulesAlphaComparator.INSTANCE)); + myModulesList.setRenderer(new ModuleListCellRenderer(noModule)); } public void applyTo(final ModuleBasedConfiguration configurationModule) { @@ -93,7 +87,7 @@ public class ConfigurationModuleSelector { if (isModuleAccepted(module)) list.add(module); } setModules(list); - myModules.setSelectedItem(configuration.getConfigurationModule().getModule()); + myModulesList.setSelectedItem(configuration.getConfigurationModule().getModule()); } public boolean isModuleAccepted(final Module module) { @@ -106,20 +100,23 @@ public class ConfigurationModuleSelector { public JavaRunConfigurationModule getConfigurationModule() { final JavaRunConfigurationModule configurationModule = new JavaRunConfigurationModule(getProject(), false); - configurationModule.setModule((Module)myModules.getSelectedItem()); + configurationModule.setModule(getModule()); return configurationModule; } private void setModules(final Collection modules) { - myModules.clear(); - myModules.add(null); - for (Module module : modules) { - myModules.add(module); + if (myModulesList instanceof ModulesComboBox) { + ((ModulesComboBox)myModulesList).setModules(modules); + } + else { + SortedComboBoxModel model = (SortedComboBoxModel)myModulesList.getModel(); + model.setAll(modules); + model.add(null); } } public Module getModule() { - return (Module)myModules.getSelectedItem(); + return (Module)myModulesList.getSelectedItem(); } @Nullable @@ -128,7 +125,7 @@ public class ConfigurationModuleSelector { } public String getModuleName() { - final Module module = (Module)myModules.getSelectedItem(); + final Module module = getModule(); return module == null ? "" : module.getName(); } } diff --git a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.form b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.form index c6e75f041219..2ffaf5333282 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.form +++ b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.form @@ -62,7 +62,7 @@ - + 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 4512a7ce0851..0278535a81be 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java +++ b/plugins/junit/src/com/intellij/execution/junit2/configuration/JUnitConfigurable.java @@ -16,6 +16,7 @@ package com.intellij.execution.junit2.configuration; +import com.intellij.application.options.ModulesComboBox; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.MethodBrowser; import com.intellij.execution.configuration.BrowseModuleValueActionListener; @@ -91,7 +92,7 @@ public class JUnitConfigurable extends SettingsEdi private LabeledComponent myCategory; // Fields private JPanel myWholePanel; - private LabeledComponent myModule; + private LabeledComponent myModule; private CommonJavaParametersPanel myCommonJavaParameters; private JRadioButton myWholeProjectScope; private JRadioButton mySingleModuleScope; @@ -385,7 +386,7 @@ public class JUnitConfigurable extends SettingsEdi } } - public JComboBox getModulesComponent() { + public ModulesComboBox getModulesComponent() { return myModule.getComponent(); } diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.form b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.form index c6b8186688f3..d6144e862d76 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.form +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.form @@ -153,6 +153,7 @@ + diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java index f8fe6a20d837..896de6a09ad0 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationEditor.java @@ -22,6 +22,7 @@ */ package com.theoryinpractice.testng.configuration; +import com.intellij.application.options.ModulesComboBox; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.JavaExecutionUtil; import com.intellij.execution.MethodBrowser; @@ -78,7 +79,7 @@ public class TestNGConfigurationEditor extends SettingsEditor classField; - private LabeledComponent moduleClasspath; + private LabeledComponent moduleClasspath; private AlternativeJREPanel alternateJDK; private final ConfigurationModuleSelector moduleSelector; private JRadioButton suiteTest; @@ -288,7 +289,7 @@ public class TestNGConfigurationEditor extends SettingsEditor