diff --git a/java/idea-ui/src/com/intellij/ide/util/importProject/FacetDetectionStep.java b/java/idea-ui/src/com/intellij/ide/util/importProject/FacetDetectionStep.java index a1ca752e975b..e163e238628a 100644 --- a/java/idea-ui/src/com/intellij/ide/util/importProject/FacetDetectionStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/importProject/FacetDetectionStep.java @@ -4,11 +4,18 @@ package com.intellij.ide.util.importProject; +import com.intellij.facet.FacetType; +import com.intellij.facet.FacetTypeRegistry; +import com.intellij.facet.autodetecting.FacetDetector; +import com.intellij.facet.autodetecting.UnderlyingFacetSelector; +import com.intellij.facet.impl.autodetecting.FacetDetectorForWizardRegistry; +import com.intellij.facet.impl.autodetecting.FacetDetectorRegistryEx; import com.intellij.facet.impl.autodetecting.facetsTree.DetectedFacetsTreeComponent; import com.intellij.facet.impl.ui.FacetDetectionProcessor; import com.intellij.ide.util.newProjectWizard.ProjectFromSourcesBuilder; import com.intellij.ide.util.projectWizard.AbstractStepWithProgress; import com.intellij.openapi.application.ApplicationNamesInfo; +import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleType; import com.intellij.openapi.progress.ProgressIndicator; @@ -16,8 +23,11 @@ import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.Ref; +import com.intellij.openapi.vfs.VirtualFileFilter; import com.intellij.ui.ScrollPaneFactory; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.*; @@ -118,6 +128,33 @@ public abstract class FacetDetectionStep extends AbstractStepWithProgress facetType : FacetTypeRegistry.getInstance().getFacetTypes()) { + if (facetType.isSuitableModuleType(moduleType)) { + final Ref hasDetector = Ref.create(false); + //noinspection unchecked + facetType.registerDetectors(new FacetDetectorRegistryEx(new FacetDetectorForWizardRegistry() { + public void register(@NotNull FileType fileType, + @NotNull VirtualFileFilter virtualFileFilter, + @NotNull FacetDetector facetDetector) { + hasDetector.set(true); + } + + public void register(FileType fileType, + @NotNull VirtualFileFilter virtualFileFilter, + FacetDetector facetDetector, + UnderlyingFacetSelector underlyingFacetSelector) { + hasDetector.set(true); + } + }, null)); + if (hasDetector.get()) { + return true; + } + } + } + return false; + } + @NonNls public String getHelpId() { return "reference.dialogs.new.project.fromCode.facets"; diff --git a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromSourcesMode.java b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromSourcesMode.java index 2e0703da8481..9fc65da1ad25 100644 --- a/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromSourcesMode.java +++ b/java/idea-ui/src/com/intellij/ide/util/newProjectWizard/modes/CreateFromSourcesMode.java @@ -53,13 +53,15 @@ public class CreateFromSourcesMode extends WizardMode { sequence.addCommonStep(new ModulesDetectionStep(projectBuilder, moduleInsight, icon, "reference.dialogs.new.project.fromCode.page2")); sequence.addCommonStep(factory.createProjectJdkStep(context)); - FacetDetectionStep facetDetectionStep = new FacetDetectionStep(icon, StdModuleTypes.JAVA) { - protected List getModuleDescriptors() { - return projectBuilder.getModules(); - } - }; - projectBuilder.addConfigurationUpdater(facetDetectionStep); - sequence.addCommonStep(facetDetectionStep); + if (FacetDetectionStep.isEnabled(StdModuleTypes.JAVA)) { + FacetDetectionStep facetDetectionStep = new FacetDetectionStep(icon, StdModuleTypes.JAVA) { + protected List getModuleDescriptors() { + return projectBuilder.getModules(); + } + }; + projectBuilder.addConfigurationUpdater(facetDetectionStep); + sequence.addCommonStep(facetDetectionStep); + } return sequence; } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectStructureConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectStructureConfigurable.java index 069fb2bb004e..577f963216e4 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectStructureConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectStructureConfigurable.java @@ -205,7 +205,9 @@ public class ProjectStructureConfigurable extends BaseConfigurable implements Se } private void addFacetsConfig() { - addConfigurable(myFacetStructureConfigurable); + if (FacetStructureConfigurable.isEnabled()) { + addConfigurable(myFacetStructureConfigurable); + } } private void addJdkListConfig() { diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/FacetStructureConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/FacetStructureConfigurable.java index 4762fdec8944..114de7543271 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/FacetStructureConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/FacetStructureConfigurable.java @@ -57,6 +57,10 @@ public class FacetStructureConfigurable extends BaseStructureConfigurable { return ShowSettingsUtil.getInstance().findProjectConfigurable(project, FacetStructureConfigurable.class); } + public static boolean isEnabled() { + return FacetTypeRegistry.getInstance().getFacetTypes().length > 0; + } + protected void loadTree() { myTree.setRootVisible(false); myTree.setShowsRootHandles(true);