hide "facets" in Project Settings and do not show facet detection step in wizard if facets aren't available

This commit is contained in:
nik
2009-10-07 13:27:22 +04:00
parent 71a1e4e024
commit 097348c848
4 changed files with 53 additions and 8 deletions
@@ -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<Map<Mo
return myIcon;
}
public static boolean isEnabled(@NotNull ModuleType moduleType) {
for (FacetType<?,?> facetType : FacetTypeRegistry.getInstance().getFacetTypes()) {
if (facetType.isSuitableModuleType(moduleType)) {
final Ref<Boolean> 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";
@@ -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<ModuleDescriptor> getModuleDescriptors() {
return projectBuilder.getModules();
}
};
projectBuilder.addConfigurationUpdater(facetDetectionStep);
sequence.addCommonStep(facetDetectionStep);
if (FacetDetectionStep.isEnabled(StdModuleTypes.JAVA)) {
FacetDetectionStep facetDetectionStep = new FacetDetectionStep(icon, StdModuleTypes.JAVA) {
protected List<ModuleDescriptor> getModuleDescriptors() {
return projectBuilder.getModules();
}
};
projectBuilder.addConfigurationUpdater(facetDetectionStep);
sequence.addCommonStep(facetDetectionStep);
}
return sequence;
}
@@ -205,7 +205,9 @@ public class ProjectStructureConfigurable extends BaseConfigurable implements Se
}
private void addFacetsConfig() {
addConfigurable(myFacetStructureConfigurable);
if (FacetStructureConfigurable.isEnabled()) {
addConfigurable(myFacetStructureConfigurable);
}
}
private void addJdkListConfig() {
@@ -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);