From bf2b7cc9df123d8eedc0b3cf3f3eb3058b228e48 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 19 Apr 2011 20:32:11 +0200 Subject: [PATCH] create project from existing sources: show project jdk chooser when it is possible that non java modules would be selected (IDEA-14488) --- .../ProjectFromSourcesBuilder.java | 20 +++++++++++++++++++ .../ProjectWizardStepFactoryImpl.java | 3 ++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectFromSourcesBuilder.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectFromSourcesBuilder.java index e44a923557f9..d089a896946d 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectFromSourcesBuilder.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/ProjectFromSourcesBuilder.java @@ -38,11 +38,13 @@ import com.intellij.openapi.roots.ui.configuration.ModulesProvider; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.InvalidDataException; +import com.intellij.openapi.util.JDOMUtil; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; +import org.jdom.Element; import org.jdom.JDOMException; import org.jetbrains.annotations.NotNull; @@ -316,6 +318,24 @@ public class ProjectFromSourcesBuilder extends ProjectBuilder implements SourceP @Override public boolean isSuitableSdk(final Sdk sdk) { + final List suggestedModules = myModuleInsight.getSuggestedModules(); + if (suggestedModules != null) { + for (ModuleDescriptor moduleDescriptor : suggestedModules) { + try { + final File file = new File(moduleDescriptor.computeModuleFilePath()); + if (file.exists()) { + final Element rootElement = JDOMUtil.loadDocument(file).getRootElement(); + final String type = rootElement.getAttributeValue("type"); + if (type != null) { + final ModuleType moduleType = ModuleTypeManager.getInstance().findByID(type); + if (moduleType != null && !moduleType.createModuleBuilder().isSuitableSdk(sdk)) return false; + } + } + } + catch (Exception ignore) { + } + } + } return sdk.getSdkType() == JavaSdk.getInstance(); } } 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 08cfddae8478..61ccac7c8666 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 @@ -97,7 +97,8 @@ public class ProjectWizardStepFactoryImpl extends ProjectWizardStepFactory { public ModuleWizardStep createProjectJdkStep(final WizardContext wizardContext) { return new ProjectJdkStep(wizardContext){ public boolean isStepVisible() { - return AddModuleWizard.getNewProjectJdk(wizardContext) == null; + final Sdk newProjectJdk = AddModuleWizard.getNewProjectJdk(wizardContext); + return newProjectJdk == null || !wizardContext.getProjectBuilder().isSuitableSdk(newProjectJdk); } }; }