From 8eb0cc4553d9aff9d0756c0d03f840b869d14ab7 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 2 Nov 2012 11:04:59 +0400 Subject: [PATCH] IDEA-94042 Create Project From Template: the SDK set as default one is not applied while creating projects from template --- .../ide/util/projectWizard/JavaSettingsStep.java | 3 ++- .../ProjectWizardStepFactoryImpl.java | 3 ++- .../ide/util/projectWizard/SdkSettingsStep.java | 14 ++++++++++++-- .../roots/ui/configuration/JdkComboBox.java | 3 ++- .../ui/configuration/ProjectJdksConfigurable.java | 7 ++----- .../projectRoot/JdkListConfigurable.java | 4 ++-- .../projectWizard/ProjectWizardStepFactory.java | 3 ++- .../projectRoots/impl/ProjectJdkTableImpl.java | 2 +- 8 files changed, 25 insertions(+), 14 deletions(-) diff --git a/java/idea-ui/src/com/intellij/ide/util/projectWizard/JavaSettingsStep.java b/java/idea-ui/src/com/intellij/ide/util/projectWizard/JavaSettingsStep.java index 696ec24c4898..786f83292c21 100644 --- a/java/idea-ui/src/com/intellij/ide/util/projectWizard/JavaSettingsStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/projectWizard/JavaSettingsStep.java @@ -27,6 +27,7 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.components.JBCheckBox; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.TestOnly; import javax.swing.*; @@ -46,7 +47,7 @@ public class JavaSettingsStep extends SdkSettingsStep { private TextFieldWithBrowseButton mySourcePath; private JPanel myPanel; - public JavaSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, Condition sdkFilter) { + public JavaSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, @NotNull Condition sdkFilter) { super(settingsStep, moduleBuilder, sdkFilter); myModuleBuilder = moduleBuilder; diff --git a/java/idea-ui/src/com/intellij/ide/util/projectWizard/ProjectWizardStepFactoryImpl.java b/java/idea-ui/src/com/intellij/ide/util/projectWizard/ProjectWizardStepFactoryImpl.java index 6a205bbb5457..49cdd8872947 100644 --- a/java/idea-ui/src/com/intellij/ide/util/projectWizard/ProjectWizardStepFactoryImpl.java +++ b/java/idea-ui/src/com/intellij/ide/util/projectWizard/ProjectWizardStepFactoryImpl.java @@ -27,6 +27,7 @@ import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContaine import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Condition; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -140,7 +141,7 @@ public class ProjectWizardStepFactoryImpl extends ProjectWizardStepFactory { } @Override - public ModuleWizardStep createJavaSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, Condition sdkFilter) { + public ModuleWizardStep createJavaSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, @NotNull Condition sdkFilter) { return new JavaSettingsStep(settingsStep, moduleBuilder, sdkFilter); } } 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 601e5198a146..9dc69d2e1e12 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,12 +17,14 @@ package com.intellij.ide.util.projectWizard; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.SdkTypeId; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.roots.ui.configuration.JdkComboBox; import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel; import com.intellij.openapi.util.Condition; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.*; @@ -36,7 +38,7 @@ public class SdkSettingsStep extends ModuleWizardStep { protected final WizardContext myWizardContext; protected final ProjectSdksModel myModel; - public SdkSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, Condition sdkFilter) { + public SdkSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, @NotNull Condition sdkFilter) { myWizardContext = settingsStep.getContext(); myModel = new ProjectSdksModel(); @@ -48,10 +50,18 @@ public class SdkSettingsStep extends ModuleWizardStep { if (project != null) { Sdk sdk = ProjectRootManager.getInstance(project).getProjectSdk(); if (sdk != null && moduleBuilder.isSuitableSdkType(sdk.getSdkType())) { - // use default project SDK + // 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); + } + } JButton button = new JButton("\u001BNew..."); myJdkComboBox.setSetupButton(button, project, myModel, 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 ff43b623745e..f81f84064583 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 @@ -234,7 +234,8 @@ public class JdkComboBox extends ComboBoxWithWidePopup { } } else { - if (jdk.equals(elementAt.getJdk())) { + Sdk elementAtJdk = elementAt.getJdk(); + if (elementAtJdk != null && jdk.getName().equals(elementAtJdk.getName())) { return idx; } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectJdksConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectJdksConfigurable.java index b14a13e67f1e..356eddb1c5ff 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectJdksConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectJdksConfigurable.java @@ -47,10 +47,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; import java.awt.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Set; +import java.util.*; public class ProjectJdksConfigurable extends MasterDetailsComponent { @@ -99,7 +96,7 @@ public class ProjectJdksConfigurable extends MasterDetailsComponent { myProjectJdksModel.reset(myProject); myRoot.removeAllChildren(); - final HashMap sdks = myProjectJdksModel.getProjectSdks(); + final Map sdks = myProjectJdksModel.getProjectSdks(); for (Sdk sdk : sdks.keySet()) { final JdkConfigurable configurable = new JdkConfigurable((ProjectJdkImpl)sdks.get(sdk), myProjectJdksModel, TREE_UPDATER, myHistory, myProject); addNode(new MyNode(configurable), myRoot); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkListConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkListConfigurable.java index 843f0e23ab29..b6050927aefa 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkListConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkListConfigurable.java @@ -40,8 +40,8 @@ import org.jetbrains.annotations.Nullable; import javax.swing.tree.TreePath; import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.List; +import java.util.Map; public class JdkListConfigurable extends BaseStructureConfigurable { private final ProjectSdksModel myJdksTreeModel; @@ -123,7 +123,7 @@ public class JdkListConfigurable extends BaseStructureConfigurable { @Override protected void loadTree() { - final HashMap sdks = myJdksTreeModel.getProjectSdks(); + final Map sdks = myJdksTreeModel.getProjectSdks(); for (Sdk sdk : sdks.keySet()) { final JdkConfigurable configurable = new JdkConfigurable((ProjectJdkImpl)sdks.get(sdk), myJdksTreeModel, TREE_UPDATER, myHistory, myProject); diff --git a/java/openapi/src/com/intellij/ide/util/projectWizard/ProjectWizardStepFactory.java b/java/openapi/src/com/intellij/ide/util/projectWizard/ProjectWizardStepFactory.java index ee18af999805..9cb5fa0896dc 100644 --- a/java/openapi/src/com/intellij/ide/util/projectWizard/ProjectWizardStepFactory.java +++ b/java/openapi/src/com/intellij/ide/util/projectWizard/ProjectWizardStepFactory.java @@ -23,6 +23,7 @@ import com.intellij.openapi.roots.ui.configuration.ModulesProvider; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Condition; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; @@ -73,5 +74,5 @@ public abstract class ProjectWizardStepFactory { @Nullable public abstract ModuleWizardStep createSupportForFrameworksStep(WizardContext context, ModuleBuilder builder, ModulesProvider modulesProvider); - public abstract ModuleWizardStep createJavaSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, Condition sdkFilter); + public abstract ModuleWizardStep createJavaSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, @NotNull Condition sdkFilter); } diff --git a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkTableImpl.java b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkTableImpl.java index 1d8573953766..c828e239893f 100644 --- a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkTableImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/ProjectJdkTableImpl.java @@ -191,7 +191,7 @@ public class ProjectJdkTableImpl extends ProjectJdkTable implements PersistentSt ((ProjectJdkImpl)modifiedJdk).copyTo((ProjectJdkImpl)originalJdk); - if (previousName != null ? !previousName.equals(newName) : newName != null) { + if (!previousName.equals(newName)) { // fire changes because after renaming JDK its name may match the associated jdk name of modules/project myMessageBus.syncPublisher(JDK_TABLE_TOPIC).jdkNameChanged(originalJdk, previousName); }