From 5485ead59da93ec9f040b371cd6d3be5838108b5 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 24 Jan 2014 15:29:15 +0400 Subject: [PATCH] filtering frameworks by template --- .../ide/projectWizard/ProjectCategory.java | 3 +++ .../ide/projectWizard/ProjectTypeStep.java | 6 ++++-- .../SupportForFrameworksStep.java | 15 +++++++++++++++ .../ide/util/projectWizard/WizardContext.java | 11 +++++++++++ .../com/intellij/platform/ProjectTemplate.java | 0 5 files changed, 33 insertions(+), 2 deletions(-) rename platform/{platform-impl => lang-api}/src/com/intellij/platform/ProjectTemplate.java (100%) diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectCategory.java b/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectCategory.java index 7ef2e82feab3..d5c9b09ce19b 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectCategory.java +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectCategory.java @@ -64,6 +64,9 @@ public abstract class ProjectCategory { return new FrameworkRole[] {createModuleBuilder().getDefaultAcceptableRole()}; } + /** + * Describes "main" frameworks to be shown on top of the tree + */ @NotNull public String[] getAssociatedFrameworkIds() { return ArrayUtil.EMPTY_STRING_ARRAY; diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java b/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java index c397b5ffe44e..3402e6f56377 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/ProjectTypeStep.java @@ -382,8 +382,10 @@ public class ProjectTypeStep extends ModuleWizardStep implements Disposable, Act } private void updateSelection() { - ModuleBuilder builder = getSelectedBuilder(); - if (builder != null) { + ProjectTemplate template = getSelectedTemplate(); + if (template != null) { + myContext.setProjectTemplate(template); + ModuleBuilder builder = myBuilders.get(template); myContext.setProjectBuilder(builder); myWizard.getSequence().setType(builder.getBuilderId()); } diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SupportForFrameworksStep.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SupportForFrameworksStep.java index 74badcc38f69..9f0e4dd00942 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SupportForFrameworksStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/SupportForFrameworksStep.java @@ -18,6 +18,8 @@ package com.intellij.ide.util.newProjectWizard; import com.intellij.CommonBundle; import com.intellij.framework.addSupport.FrameworkSupportInModuleProvider; +import com.intellij.ide.projectWizard.ProjectCategory; +import com.intellij.ide.projectWizard.ProjectCategoryTemplate; import com.intellij.ide.util.frameworkSupport.FrameworkSupportUtil; import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportModelBase; import com.intellij.ide.util.projectWizard.ModuleBuilder; @@ -32,10 +34,13 @@ import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContaine import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.platform.ProjectTemplate; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import javax.swing.*; +import java.util.Iterator; import java.util.List; /** @@ -54,6 +59,7 @@ public class SupportForFrameworksStep extends ModuleWizardStep { myContext = context; myBuilder = builder; List providers = FrameworkSupportUtil.getProviders(builder); + filterByCategory(providers, context.getProjectTemplate()); myFrameworkSupportModel = new FrameworkSupportModelInWizard(librariesContainer, builder); mySupportForFrameworksPanel = new AddSupportForFrameworksPanel(providers, myFrameworkSupportModel, false); myConfigurationUpdater = new ModuleBuilder.ModuleConfigurationUpdater() { @@ -69,6 +75,15 @@ public class SupportForFrameworksStep extends ModuleWizardStep { return path != null ? FileUtil.toSystemIndependentName(path) : ""; } + private static void filterByCategory(List providers, @Nullable ProjectTemplate template) { + if (!(template instanceof ProjectCategoryTemplate)) return; + ProjectCategory category = ((ProjectCategoryTemplate)template).getCategory(); + for (Iterator iterator = providers.iterator(); iterator.hasNext(); ) { + FrameworkSupportInModuleProvider provider = iterator.next(); + + } + } + public Icon getIcon() { return ICON; } diff --git a/platform/lang-api/src/com/intellij/ide/util/projectWizard/WizardContext.java b/platform/lang-api/src/com/intellij/ide/util/projectWizard/WizardContext.java index fde32d08f71d..67513572535a 100644 --- a/platform/lang-api/src/com/intellij/ide/util/projectWizard/WizardContext.java +++ b/platform/lang-api/src/com/intellij/ide/util/projectWizard/WizardContext.java @@ -24,6 +24,7 @@ import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.UserDataHolderBase; +import com.intellij.platform.ProjectTemplate; import com.intellij.util.SystemProperties; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -46,6 +47,7 @@ public class WizardContext extends UserDataHolderBase { private String myCompilerOutputDirectory; private Sdk myProjectJdk; private ProjectBuilder myProjectBuilder; + private ProjectTemplate myProjectTemplate; private final List myListeners = ContainerUtil.createLockFreeCopyOnWriteList(); private StorageScheme myProjectStorageFormat = StorageScheme.DIRECTORY_BASED; private boolean myNewWizard; @@ -163,6 +165,15 @@ public class WizardContext extends UserDataHolderBase { myProjectBuilder = projectBuilder; } + @Nullable + public ProjectTemplate getProjectTemplate() { + return myProjectTemplate; + } + + public void setProjectTemplate(ProjectTemplate projectTemplate) { + myProjectTemplate = projectTemplate; + } + public String getPresentationName() { return myProject == null ? IdeBundle.message("project.new.wizard.project.identification") : IdeBundle.message("project.new.wizard.module.identification"); } diff --git a/platform/platform-impl/src/com/intellij/platform/ProjectTemplate.java b/platform/lang-api/src/com/intellij/platform/ProjectTemplate.java similarity index 100% rename from platform/platform-impl/src/com/intellij/platform/ProjectTemplate.java rename to platform/lang-api/src/com/intellij/platform/ProjectTemplate.java