From 0a3e35742af605aaa70da5d0f1087f2ad1ccc72c Mon Sep 17 00:00:00 2001 From: nik Date: Fri, 22 Oct 2010 13:42:54 +0400 Subject: [PATCH] IDEA-59971: For module created via ProjectStructure dialog no project-level libraries are created from downloaded jars --- .../facet/impl/ProjectFacetsConfigurator.java | 2 +- .../ProjectWizardStepFactoryImpl.java | 20 ++++++++++++++++--- .../ui/configuration/ModulesConfigurator.java | 3 +++ .../LibrariesContainerFactory.java | 10 ++++------ .../openapi/module/JavaModuleType.java | 2 +- .../ProjectWizardStepFactory.java | 6 ++++++ 6 files changed, 32 insertions(+), 11 deletions(-) diff --git a/java/idea-ui/src/com/intellij/facet/impl/ProjectFacetsConfigurator.java b/java/idea-ui/src/com/intellij/facet/impl/ProjectFacetsConfigurator.java index c082ab9d3899..0aeed154483c 100644 --- a/java/idea-ui/src/com/intellij/facet/impl/ProjectFacetsConfigurator.java +++ b/java/idea-ui/src/com/intellij/facet/impl/ProjectFacetsConfigurator.java @@ -357,7 +357,7 @@ public class ProjectFacetsConfigurator implements FacetsProvider, ModuleEditor.C public MyProjectConfigurableContext(final Facet facet, final FacetEditorContext parentContext, final ModuleConfigurationState state) { super(facet, ProjectFacetsConfigurator.this.isNewFacet(facet), parentContext, state, ProjectFacetsConfigurator.this.getSharedModuleData(facet.getModule()), getProjectData()); - myContainer = LibrariesContainerFactory.createContainer(facet.getModule().getProject(), myContext); + myContainer = LibrariesContainerFactory.createContainer(myContext); } public LibrariesContainer getContainer() { 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 1b6d6a317317..08cfddae8478 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 @@ -21,7 +21,9 @@ import com.intellij.ide.util.newProjectWizard.SupportForFrameworksStep; import com.intellij.ide.util.frameworkSupport.FrameworkSupportUtil; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.SdkType; +import com.intellij.openapi.roots.ui.configuration.ModulesConfigurator; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; +import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory; import com.intellij.openapi.util.Computable; import org.jetbrains.annotations.NonNls; @@ -108,10 +110,22 @@ public class ProjectWizardStepFactoryImpl extends ProjectWizardStepFactory { @Override public ModuleWizardStep createSupportForFrameworksStep(WizardContext wizardContext, ModuleBuilder moduleBuilder) { - if (!FrameworkSupportUtil.getProviders(moduleBuilder).isEmpty()) { - return new SupportForFrameworksStep(moduleBuilder, LibrariesContainerFactory.createContainer(wizardContext.getProject())); + return createSupportForFrameworksStep(wizardContext, moduleBuilder, ModulesProvider.EMPTY_MODULES_PROVIDER); + } + + @Override + public ModuleWizardStep createSupportForFrameworksStep(WizardContext context, ModuleBuilder builder, ModulesProvider modulesProvider) { + if (!FrameworkSupportUtil.getProviders(builder).isEmpty()) { + final LibrariesContainer container; + if (modulesProvider instanceof ModulesConfigurator) { + ModulesConfigurator configurator = (ModulesConfigurator)modulesProvider; + container = LibrariesContainerFactory.createContainer(configurator.getContext()); + } + else { + container = LibrariesContainerFactory.createContainer(context.getProject()); + } + return new SupportForFrameworksStep(builder, container); } return null; } - } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java index 058d8b732a6d..8ce7f6bdb6b7 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java @@ -576,4 +576,7 @@ public class ModulesConfigurator implements ModulesProvider, ModuleEditor.Change } } + public StructureConfigurableContext getContext() { + return myContext; + } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/LibrariesContainerFactory.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/LibrariesContainerFactory.java index f8444ad44229..97755fdca547 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/LibrariesContainerFactory.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/LibrariesContainerFactory.java @@ -68,8 +68,8 @@ public class LibrariesContainerFactory { return new LibrariesContainerImpl(null, null, null); } - public static LibrariesContainer createContainer(@NotNull Project project, StructureConfigurableContext context) { - return new StructureConfigurableLibrariesContainer(project, context); + public static LibrariesContainer createContainer(StructureConfigurableContext context) { + return new StructureConfigurableLibrariesContainer(context); } public static Library createLibrary(@Nullable LibrariesContainer container1, @NotNull LibrariesContainer container2, @@ -243,11 +243,9 @@ public class LibrariesContainerFactory { } private static class StructureConfigurableLibrariesContainer extends LibrariesContainerBase { - private final Project myProject; private final StructureConfigurableContext myContext; - public StructureConfigurableLibrariesContainer(final Project project, final StructureConfigurableContext context) { - myProject = project; + public StructureConfigurableLibrariesContainer(final StructureConfigurableContext context) { myContext = context; } @@ -280,7 +278,7 @@ public class LibrariesContainerFactory { @Nullable public Project getProject() { - return myProject; + return myContext.getProject(); } @NotNull diff --git a/java/java-impl/src/com/intellij/openapi/module/JavaModuleType.java b/java/java-impl/src/com/intellij/openapi/module/JavaModuleType.java index 789beee84679..869dc6e7a891 100644 --- a/java/java-impl/src/com/intellij/openapi/module/JavaModuleType.java +++ b/java/java-impl/src/com/intellij/openapi/module/JavaModuleType.java @@ -75,7 +75,7 @@ public class JavaModuleType extends ModuleType { return projectJdk == null || projectJdk.getSdkType() != JavaSdk.getInstance() ? Boolean.TRUE : Boolean.FALSE; } }, getWizardIcon(), "reference.dialogs.new.project.fromScratch.sdk")); - final ModuleWizardStep supportForFrameworksStep = wizardFactory.createSupportForFrameworksStep(wizardContext, moduleBuilder); + final ModuleWizardStep supportForFrameworksStep = wizardFactory.createSupportForFrameworksStep(wizardContext, moduleBuilder, modulesProvider); if (supportForFrameworksStep != null) { steps.add(supportForFrameworksStep); } 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 fcb3216c4509..74f9c39671da 100644 --- a/java/openapi/src/com/intellij/ide/util/projectWizard/ProjectWizardStepFactory.java +++ b/java/openapi/src/com/intellij/ide/util/projectWizard/ProjectWizardStepFactory.java @@ -62,6 +62,12 @@ public abstract class ProjectWizardStepFactory { @Nullable public abstract Sdk getNewProjectSdk(WizardContext wizardContext); + /** + * @deprecated use {@link #createSupportForFrameworksStep(WizardContext, ModuleBuilder, com.intellij.openapi.roots.ui.configuration.ModulesProvider)} instead + */ @Nullable public abstract ModuleWizardStep createSupportForFrameworksStep(WizardContext context, ModuleBuilder builder); + + @Nullable + public abstract ModuleWizardStep createSupportForFrameworksStep(WizardContext context, ModuleBuilder builder, ModulesProvider modulesProvider); }