diff --git a/java/idea-ui/src/com/intellij/ide/util/projectWizard/SdkSettingsStep.java b/java/idea-ui/src/com/intellij/ide/util/projectWizard/SdkSettingsStep.java index 4e42026647e2..9acbbd5b9fad 100644 --- a/java/idea-ui/src/com/intellij/ide/util/projectWizard/SdkSettingsStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/projectWizard/SdkSettingsStep.java @@ -17,8 +17,12 @@ package com.intellij.ide.util.projectWizard; import com.intellij.CommonBundle; import com.intellij.ide.IdeBundle; +import com.intellij.ide.util.PropertiesComponent; +import com.intellij.openapi.module.ModuleType; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; +import com.intellij.openapi.projectRoots.ProjectJdkTable; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.SdkTypeId; import com.intellij.openapi.roots.ProjectRootManager; @@ -31,6 +35,8 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; /** * @author Dmitry Avdeev @@ -47,7 +53,9 @@ public class SdkSettingsStep extends ModuleWizardStep { @NotNull Condition sdkFilter) { this(settingsStep.getContext(), moduleBuilder, sdkFilter); - settingsStep.addSettingsField(getSdkFieldLabel(settingsStep.getContext().getProject()), myJdkPanel); + if (!isEmpty()) { + settingsStep.addSettingsField(getSdkFieldLabel(settingsStep.getContext().getProject()), myJdkPanel); + } } public SdkSettingsStep(WizardContext context, @@ -60,12 +68,60 @@ public class SdkSettingsStep extends ModuleWizardStep { Project project = myWizardContext.getProject(); myModel.reset(project); - myJdkComboBox = JdkComboBox.createSdkComboBox(moduleBuilder, sdkFilter, project, myModel); + myJdkComboBox = new JdkComboBox(myModel, sdkFilter); myJdkPanel = new JPanel(new BorderLayout(4, 0)); + + final PropertiesComponent component = project == null ? PropertiesComponent.getInstance() : PropertiesComponent.getInstance(project); + ModuleType moduleType = moduleBuilder.getModuleType(); + final String selectedJdkProperty = "jdk.selected." + (moduleType == null ? "" : moduleType.getId()); + myJdkComboBox.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Sdk jdk = myJdkComboBox.getSelectedJdk(); + if (jdk != null) { + component.setValue(selectedJdkProperty, jdk.getName()); + } + } + }); + + if (project != null) { + Sdk sdk = ProjectRootManager.getInstance(project).getProjectSdk(); + if (sdk != null && moduleBuilder.isSuitableSdkType(sdk.getSdkType())) { + // use project SDK + return; + } + } + else { + // set default project SDK + Project defaultProject = ProjectManager.getInstance().getDefaultProject(); + Sdk sdk = ProjectRootManager.getInstance(defaultProject).getProjectSdk(); + if (sdk != null && sdkFilter.value(sdk.getSdkType())) { + myJdkComboBox.setSelectedJdk(sdk); + } + } + + String value = component.getValue(selectedJdkProperty); + if (value != null) { + Sdk jdk = ProjectJdkTable.getInstance().findJdk(value); + if (jdk != null) { + myJdkComboBox.setSelectedJdk(jdk); + } + } + + JButton button = new JButton("Ne\u001Bw..."); + myJdkComboBox.setSetupButton(button, project, myModel, + project == null ? new JdkComboBox.NoneJdkComboBoxItem() : new JdkComboBox.ProjectJdkComboBoxItem(), + null, + false); + myJdkPanel.add(myJdkComboBox); myJdkPanel.add(myJdkComboBox.getSetUpButton(), BorderLayout.EAST); } + public boolean isEmpty() { + return myJdkPanel.getComponentCount() == 0; + } + @NotNull protected String getSdkFieldLabel(@Nullable Project project) { return (project == null ? "Project" : "Module") + " \u001BSDK:"; diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java index 8a8a55461cb9..43344ae2d023 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java @@ -16,19 +16,13 @@ package com.intellij.openapi.roots.ui.configuration; import com.intellij.ide.DataManager; -import com.intellij.ide.util.PropertiesComponent; -import com.intellij.ide.util.projectWizard.ModuleBuilder; import com.intellij.ide.util.projectWizard.ProjectJdkListRenderer; import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.module.ModuleType; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; -import com.intellij.openapi.project.ProjectManager; -import com.intellij.openapi.projectRoots.ProjectJdkTable; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.SdkType; import com.intellij.openapi.projectRoots.SdkTypeId; -import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.roots.ui.configuration.projectRoot.JdkListConfigurable; import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel; import com.intellij.openapi.ui.ComboBoxWithWidePopup; @@ -92,7 +86,7 @@ public class JdkComboBox extends ComboBoxWithWidePopup { else if (value instanceof ProjectJdkComboBoxItem) { final Sdk jdk = jdkModel.getProjectSdk(); if (jdk != null) { - setIcon(((SdkType) jdk.getSdkType()).getIcon()); + setIcon(((SdkType)jdk.getSdkType()).getIcon()); append(ProjectBundle.message("project.roots.project.jdk.inherited"), SimpleTextAttributes.REGULAR_ATTRIBUTES); append(" (" + jdk.getName() + ")", SimpleTextAttributes.GRAYED_ATTRIBUTES); } @@ -110,57 +104,6 @@ public class JdkComboBox extends ComboBoxWithWidePopup { }); } - public static JdkComboBox createSdkComboBox(ModuleBuilder moduleBuilder, - Condition sdkFilter, - Project project, - ProjectSdksModel model) { - final JdkComboBox comboBox = new JdkComboBox(model, sdkFilter); - - final PropertiesComponent component = project == null ? PropertiesComponent.getInstance() : PropertiesComponent.getInstance(project); - ModuleType moduleType = moduleBuilder.getModuleType(); - final String selectedJdkProperty = "jdk.selected." + (moduleType == null ? "" : moduleType.getId()); - comboBox.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - Sdk jdk = comboBox.getSelectedJdk(); - if (jdk != null) { - component.setValue(selectedJdkProperty, jdk.getName()); - } - } - }); - - if (project != null) { - Sdk sdk = ProjectRootManager.getInstance(project).getProjectSdk(); - if (sdk != null && moduleBuilder.isSuitableSdkType(sdk.getSdkType())) { - // use project SDK - return null; - } - } - else { - // set default project SDK - Project defaultProject = ProjectManager.getInstance().getDefaultProject(); - Sdk sdk = ProjectRootManager.getInstance(defaultProject).getProjectSdk(); - if (sdk != null && sdkFilter.value(sdk.getSdkType())) { - comboBox.setSelectedJdk(sdk); - } - } - - String value = component.getValue(selectedJdkProperty); - if (value != null) { - Sdk jdk = ProjectJdkTable.getInstance().findJdk(value); - if (jdk != null) { - comboBox.setSelectedJdk(jdk); - } - } - - JButton button = new JButton("Ne\u001Bw..."); - comboBox.setSetupButton(button, project, model, - project == null ? new NoneJdkComboBoxItem() : new ProjectJdkComboBoxItem(), - null, - false); - return comboBox; - } - @Override public Dimension getPreferredSize() { final Rectangle rec = ScreenUtil.getScreenRectangle(0, 0);