IDEA-94042 Create Project From Template: the SDK set as default one is not applied while creating projects from template

This commit is contained in:
Dmitry Avdeev
2012-11-02 11:04:59 +04:00
parent 5efd335b70
commit 8eb0cc4553
8 changed files with 25 additions and 14 deletions
@@ -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<SdkTypeId> sdkFilter) {
public JavaSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, @NotNull Condition<SdkTypeId> sdkFilter) {
super(settingsStep, moduleBuilder, sdkFilter);
myModuleBuilder = moduleBuilder;
@@ -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<SdkTypeId> sdkFilter) {
public ModuleWizardStep createJavaSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, @NotNull Condition<SdkTypeId> sdkFilter) {
return new JavaSettingsStep(settingsStep, moduleBuilder, sdkFilter);
}
}
@@ -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<SdkTypeId> sdkFilter) {
public SdkSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, @NotNull Condition<SdkTypeId> 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,
@@ -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;
}
}
@@ -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<Sdk, Sdk> sdks = myProjectJdksModel.getProjectSdks();
final Map<Sdk, Sdk> 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);
@@ -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<Sdk,Sdk> sdks = myJdksTreeModel.getProjectSdks();
final Map<Sdk,Sdk> sdks = myJdksTreeModel.getProjectSdks();
for (Sdk sdk : sdks.keySet()) {
final JdkConfigurable configurable = new JdkConfigurable((ProjectJdkImpl)sdks.get(sdk), myJdksTreeModel, TREE_UPDATER, myHistory,
myProject);
@@ -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<SdkTypeId> sdkFilter);
public abstract ModuleWizardStep createJavaSettingsStep(SettingsStep settingsStep, ModuleBuilder moduleBuilder, @NotNull Condition<SdkTypeId> sdkFilter);
}
@@ -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);
}