reuse ModulesComboBox in ConfigurationModuleSelector

This commit is contained in:
nik
2015-09-28 12:27:47 +03:00
parent b81f943b2c
commit 3a7e36d354
11 changed files with 56 additions and 52 deletions
@@ -64,7 +64,7 @@
<grid row="5" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<componentClass value="javax.swing.JComboBox"/>
<componentClass value="com.intellij.application.options.ModulesComboBox"/>
<labelLocation value="West"/>
<text resource-bundle="messages/ExecutionBundle" key="application.configuration.use.classpath.and.jdk.of.module.label"/>
</properties>
@@ -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<AppletConfiguration> impl
private TextFieldWithBrowseButton myHtmlFile;
private JTextField myWidth;
private JTextField myHeight;
private LabeledComponent<JComboBox> myModule;
private LabeledComponent<ModulesComboBox> myModule;
private JPanel myTablePlace;
private JBLabel myHtmlFileLabel;
private JBLabel myClassNameLabel;
@@ -175,7 +176,7 @@ public class AppletConfigurable extends SettingsEditor<AppletConfiguration> impl
myTable.scrollRectToVisible(myTable.getCellRect(index, 0, true));
}
private JComboBox getModuleComponent() {
private ModulesComboBox getModuleComponent() {
return myModule.getComponent();
}
@@ -35,7 +35,7 @@
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<componentClass value="javax.swing.JComboBox"/>
<componentClass value="com.intellij.application.options.ModulesComboBox"/>
<labelLocation value="West"/>
<text resource-bundle="messages/ExecutionBundle" key="application.configuration.use.classpath.and.jdk.of.module.label"/>
</properties>
@@ -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<ApplicationConfiguration> implements PanelWithAnchor {
private CommonJavaParametersPanel myCommonProgramParameters;
private LabeledComponent<EditorTextFieldWithBrowseButton> myMainClass;
private LabeledComponent<JComboBox> myModule;
private LabeledComponent<ModulesComboBox> myModule;
private JPanel myWholePanel;
private final ConfigurationModuleSelector myModuleSelector;
@@ -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<RemoteConfiguration> {
private ConfigurationArgumentsHelpArea myHelpArea;
@NonNls private ConfigurationArgumentsHelpArea myJDK13HelpArea;
private ConfigurationArgumentsHelpArea myJDK14HelpArea;
private LabeledComponent<JComboBox> myModule;
private LabeledComponent<ModulesComboBox> myModule;
private String myHostName = "";
@NonNls
protected static final String LOCALHOST = "localhost";
@@ -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<T extends TestDiscoveryConfiguration> ext
private final ConfigurationModuleSelector myModuleSelector;
// Fields
private JPanel myWholePanel = new JPanel(new BorderLayout());
private LabeledComponent<JComboBox> myModule = new LabeledComponent<JComboBox>();
private LabeledComponent<ModulesComboBox> myModule = new LabeledComponent<ModulesComboBox>();
private CommonJavaParametersPanel myCommonJavaParameters = new CommonJavaParametersPanel();
private AlternativeJREPanel myAlternativeJREPanel = new AlternativeJREPanel();
private LabeledComponent<EditorTextFieldWithBrowseButton> myClass = new LabeledComponent<EditorTextFieldWithBrowseButton>();
@@ -65,7 +66,7 @@ public class TestDiscoveryConfigurable<T extends TestDiscoveryConfiguration> 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<T extends TestDiscoveryConfiguration> ext
updateComponents();
}
public JComboBox getModulesComponent() {
public ModulesComboBox getModulesComponent() {
return myModule.getComponent();
}
@@ -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<Object> myModules = new SortedComboBoxModel<Object>(new Comparator<Object>() {
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, "<no module>");
}
public ConfigurationModuleSelector(final Project project, final JComboBox modulesList, String noModule) {
myNoModule = noModule;
public ConfigurationModuleSelector(Project project, ModulesComboBox modulesComboBox) {
this(project, modulesComboBox, "<no module>");
}
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<Module>(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<Module> modules) {
myModules.clear();
myModules.add(null);
for (Module module : modules) {
myModules.add(module);
if (myModulesList instanceof ModulesComboBox) {
((ModulesComboBox)myModulesList).setModules(modules);
}
else {
SortedComboBoxModel<Module> model = (SortedComboBoxModel<Module>)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();
}
}