diff --git a/java/idea-ui/src/com/intellij/ide/util/importProject/FacetBasedDetectedFrameworkDescriptionInWizard.java b/java/idea-ui/src/com/intellij/ide/util/importProject/FacetBasedDetectedFrameworkDescriptionInWizard.java index be7887da7420..3387210c772b 100644 --- a/java/idea-ui/src/com/intellij/ide/util/importProject/FacetBasedDetectedFrameworkDescriptionInWizard.java +++ b/java/idea-ui/src/com/intellij/ide/util/importProject/FacetBasedDetectedFrameworkDescriptionInWizard.java @@ -17,15 +17,19 @@ package com.intellij.ide.util.importProject; import com.intellij.facet.Facet; import com.intellij.facet.FacetConfiguration; +import com.intellij.facet.FacetTypeId; import com.intellij.framework.detection.FacetBasedFrameworkDetector; import com.intellij.framework.detection.impl.FacetBasedDetectedFrameworkDescription; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.ModifiableModelsProvider; +import com.intellij.openapi.roots.ui.configuration.FacetsProvider; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; +import java.util.Collection; +import java.util.Collections; import java.util.Set; /** @@ -49,9 +53,14 @@ public class FacetBasedDetectedFrameworkDescriptionInWizard getExistentFacets(FacetTypeId underlyingFacetType) { + return Collections.emptyList(); } } diff --git a/java/idea-ui/src/com/intellij/ide/util/importProject/FrameworkDetectionStep.java b/java/idea-ui/src/com/intellij/ide/util/importProject/FrameworkDetectionStep.java index 1daa39ae23b0..8848913f0960 100644 --- a/java/idea-ui/src/com/intellij/ide/util/importProject/FrameworkDetectionStep.java +++ b/java/idea-ui/src/com/intellij/ide/util/importProject/FrameworkDetectionStep.java @@ -21,6 +21,7 @@ import com.intellij.framework.detection.DetectionExcludesConfiguration; import com.intellij.framework.detection.FrameworkDetectionContext; import com.intellij.framework.detection.FrameworkDetector; import com.intellij.framework.detection.impl.FrameworkDetectionProcessor; +import com.intellij.framework.detection.impl.FrameworkDetectionUtil; import com.intellij.framework.detection.impl.ui.DetectedFrameworksComponent; import com.intellij.ide.util.newProjectWizard.ProjectFromSourcesBuilder; import com.intellij.ide.util.projectWizard.AbstractStepWithProgress; @@ -30,8 +31,6 @@ import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; -import com.intellij.openapi.roots.PlatformModifiableModelsProvider; -import com.intellij.openapi.roots.ui.configuration.DefaultModulesProvider; import com.intellij.openapi.util.Comparing; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -45,7 +44,7 @@ import java.util.List; /** * @author nik */ -public abstract class FrameworkDetectionStep extends AbstractStepWithProgress> +public abstract class FrameworkDetectionStep extends AbstractStepWithProgress> implements ProjectFromSourcesBuilder.ProjectConfigurationUpdater { private final Icon myIcon; private List myLastRoots = null; @@ -89,7 +88,7 @@ public abstract class FrameworkDetectionStep extends AbstractStepWithProgress
  • calculate() { + protected List calculate() { myLastRoots = getRoots(); ProgressIndicator progressIndicator = ProgressManager.getInstance().getProgressIndicator(); @@ -113,7 +112,7 @@ public abstract class FrameworkDetectionStep extends AbstractStepWithProgress
  • result, final boolean canceled) { + protected void onFinished(final List result, final boolean canceled) { myDetectedFrameworksComponent.getTree().rebuildTree(result); if (result.isEmpty()) { myFrameworksDetectedLabel.setText(ProjectBundle.message("label.text.no.frameworks.detected")); @@ -137,10 +136,7 @@ public abstract class FrameworkDetectionStep extends AbstractStepWithProgress
  • allDetectedFrameworks) { + return true; + } + + public abstract void setupFramework(@NotNull ModifiableModelsProvider modifiableModelsProvider, @NotNull ModulesProvider modulesProvider); public abstract boolean equals(Object obj); diff --git a/platform/lang-impl/src/com/intellij/framework/detection/FacetBasedFrameworkDetector.java b/platform/lang-impl/src/com/intellij/framework/detection/FacetBasedFrameworkDetector.java index 0685c304ed2f..3384b05e39ab 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/FacetBasedFrameworkDetector.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/FacetBasedFrameworkDetector.java @@ -25,6 +25,7 @@ import org.jetbrains.annotations.NotNull; import java.util.Collection; import java.util.List; +import java.util.Set; /** * @author nik @@ -53,4 +54,8 @@ public abstract class FacetBasedFrameworkDetector files) { + return true; + } } diff --git a/platform/lang-impl/src/com/intellij/framework/detection/FrameworkDetectionContext.java b/platform/lang-impl/src/com/intellij/framework/detection/FrameworkDetectionContext.java index a39faa354e74..a01c62c27f35 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/FrameworkDetectionContext.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/FrameworkDetectionContext.java @@ -36,7 +36,4 @@ public interface FrameworkDetectionContext { List createDetectedFacetDescriptions(@NotNull FacetBasedFrameworkDetector detector, @NotNull Collection files); - - abstract class FacetConfigurationCreator { - } } diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/FacetBasedDetectedFrameworkDescription.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/FacetBasedDetectedFrameworkDescription.java index 0032b5432456..59947462fb90 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/FacetBasedDetectedFrameworkDescription.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/FacetBasedDetectedFrameworkDescription.java @@ -19,10 +19,14 @@ import com.intellij.facet.*; import com.intellij.framework.FrameworkType; import com.intellij.framework.detection.DetectedFrameworkDescription; import com.intellij.framework.detection.FacetBasedFrameworkDetector; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.ModifiableModelsProvider; +import com.intellij.openapi.util.Condition; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.text.UniqueNameGenerator; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.Set; @@ -31,6 +35,7 @@ import java.util.Set; * @author nik */ public abstract class FacetBasedDetectedFrameworkDescription extends DetectedFrameworkDescription { + private static final Logger LOG = Logger.getInstance("#com.intellij.framework.detection.impl.FacetBasedDetectedFrameworkDescription"); private final FacetBasedFrameworkDetector myDetector; private final C myConfiguration; private final Set myRelatedFiles; @@ -57,6 +62,12 @@ public abstract class FacetBasedDetectedFrameworkDescription underlyingTypeId = myFacetType.getUnderlyingFacetType(); + return underlyingTypeId != null ? createFrameworkType(FacetTypeRegistry.getInstance().findFacetType(underlyingTypeId)) : null; + } + @NotNull @Override public Collection getRelatedFiles() { @@ -75,14 +86,64 @@ public abstract class FacetBasedDetectedFrameworkDescription allDetectedFrameworks) { + final FacetTypeId underlyingId = myFacetType.getUnderlyingFacetType(); + if (underlyingId == null) { + return true; + } + + final Collection facets = getExistentFacets(underlyingId); + for (Facet facet : facets) { + if (myDetector.isSuitableUnderlyingFacetConfiguration(facet.getConfiguration(), myConfiguration, myRelatedFiles)) { + return true; + } + } + for (DetectedFrameworkDescription framework : allDetectedFrameworks) { + if (framework instanceof FacetBasedDetectedFrameworkDescription) { + final FacetBasedDetectedFrameworkDescription description = (FacetBasedDetectedFrameworkDescription)framework; + if (underlyingId.equals(description.myFacetType.getId()) && + myDetector.isSuitableUnderlyingFacetConfiguration(description.getConfiguration(), myConfiguration, myRelatedFiles)) { + return true; + } + } + } + return false; + } + + @NotNull + protected abstract Collection getExistentFacets(FacetTypeId underlyingFacetType); + + protected void doSetup(ModifiableModelsProvider modifiableModelsProvider, final Module module) { final ModifiableFacetModel model = modifiableModelsProvider.getFacetModifiableModel(module); - final F facet = FacetManager.getInstance(module).createFacet(myFacetType, myFacetType.getDefaultFacetName(), myConfiguration, null); + final String name = UniqueNameGenerator.generateUniqueName(myFacetType.getDefaultFacetName(), new Condition() { + @Override + public boolean value(String s) { + return FacetManager.getInstance(module).findFacet(myFacetType.getId(), s) == null; + } + }); + final F facet = FacetManager.getInstance(module).createFacet(myFacetType, name, myConfiguration, + findUnderlyingFacet(module)); model.addFacet(facet); modifiableModelsProvider.commitFacetModifiableModel(module, model); myDetector.setupFacet(facet); } + @Nullable + private Facet findUnderlyingFacet(Module module) { + final FacetTypeId underlyingTypeId = myFacetType.getUnderlyingFacetType(); + if (underlyingTypeId == null) return null; + + final Collection parentFacets = FacetManager.getInstance(module).getFacetsByType(underlyingTypeId); + for (Facet facet : parentFacets) { + if (myDetector.isSuitableUnderlyingFacetConfiguration(facet.getConfiguration(), myConfiguration, myRelatedFiles)) { + return facet; + } + } + LOG.error("Cannot find suitable underlying facet in " + parentFacets); + return null; + } + @Override public boolean equals(Object obj) { if (!(obj instanceof FacetBasedDetectedFrameworkDescription)) { diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/FacetBasedDetectedFrameworkDescriptionImpl.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/FacetBasedDetectedFrameworkDescriptionImpl.java index cd66eb6878d3..a2504cbf3d8f 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/FacetBasedDetectedFrameworkDescriptionImpl.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/FacetBasedDetectedFrameworkDescriptionImpl.java @@ -17,15 +17,17 @@ package com.intellij.framework.detection.impl; import com.intellij.facet.Facet; import com.intellij.facet.FacetConfiguration; -import com.intellij.facet.FacetType; +import com.intellij.facet.FacetManager; +import com.intellij.facet.FacetTypeId; import com.intellij.framework.detection.FacetBasedFrameworkDetector; -import com.intellij.framework.detection.FrameworkDetectionContext; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.ModifiableModelsProvider; +import com.intellij.openapi.roots.ui.configuration.FacetsProvider; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; +import java.util.Collection; import java.util.Set; /** @@ -46,7 +48,12 @@ public class FacetBasedDetectedFrameworkDescriptionImpl getExistentFacets(FacetTypeId underlyingFacetType) { + return FacetManager.getInstance(myModule).getFacetsByType(underlyingFacetType); } } diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionManager.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionManager.java index 81d644a7f765..53b3320087e6 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionManager.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionManager.java @@ -26,9 +26,7 @@ import com.intellij.notification.Notification; import com.intellij.notification.NotificationGroup; import com.intellij.notification.NotificationListener; import com.intellij.notification.NotificationType; -import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.components.AbstractProjectComponent; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; @@ -36,8 +34,6 @@ import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; -import com.intellij.openapi.roots.PlatformModifiableModelsProvider; -import com.intellij.openapi.roots.ui.configuration.DefaultModulesProvider; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -222,7 +218,7 @@ public class FrameworkDetectionManager extends AbstractProjectComponent implemen private void showSetupFrameworksDialog(Notification notification) { IdentityHashMap frameworksToId = new IdentityHashMap(); - List descriptions = getValidDetectedFrameworks(frameworksToId); + List descriptions = getValidDetectedFrameworks(frameworksToId); if (descriptions.isEmpty()) { Messages.showInfoMessage(myProject, "No frameworks are detected", "Framework Detection"); return; @@ -232,21 +228,14 @@ public class FrameworkDetectionManager extends AbstractProjectComponent implemen if (dialog.isOK()) { notification.expire(); List selected = dialog.getSelectedFrameworks(); - AccessToken token = WriteAction.start(); - try { - final PlatformModifiableModelsProvider provider = new PlatformModifiableModelsProvider(); - for (DetectedFrameworkDescription description : selected) { - description.configureFramework(provider, new DefaultModulesProvider(myProject)); - myDetectedFrameworksData.putExistentFrameworkFiles(frameworksToId.get(description), description.getRelatedFiles()); - } - } - finally { - token.finish(); + FrameworkDetectionUtil.setupFrameworks(selected, myProject); + for (DetectedFrameworkDescription description : selected) { + myDetectedFrameworksData.putExistentFrameworkFiles(frameworksToId.get(description), description.getRelatedFiles()); } } } - private List getValidDetectedFrameworks(IdentityHashMap frameworksToId) { + private List getValidDetectedFrameworks(IdentityHashMap frameworksToId) { final MultiMap frameworksMap = myDetectedFrameworksData.getDetectedFrameworks(); List descriptions = new ArrayList(); final FileBasedIndex index = FileBasedIndex.getInstance(); @@ -277,7 +266,7 @@ public class FrameworkDetectionManager extends AbstractProjectComponent implemen frameworksToId.put(framework, id); } } - return descriptions; + return FrameworkDetectionUtil.removeDisabled(descriptions); } @TestOnly @@ -287,7 +276,7 @@ public class FrameworkDetectionManager extends AbstractProjectComponent implemen } @TestOnly - public List getDetectedFrameworks() { + public List getDetectedFrameworks() { return getValidDetectedFrameworks(new IdentityHashMap()); } diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionProcessor.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionProcessor.java index 8dd037bb5984..4c43979af990 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionProcessor.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionProcessor.java @@ -56,7 +56,7 @@ public class FrameworkDetectionProcessor { myContext = context; } - public List processRoots(List roots) { + public List processRoots(List roots) { myProcessedFiles = new HashSet(); for (File root : roots) { VirtualFile virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(root); @@ -67,7 +67,7 @@ public class FrameworkDetectionProcessor { for (FrameworkDetectorData data : myDetectorsByFileType.values()) { result.addAll(data.myDetector.detect(data.mySuitableFiles, myContext)); } - return result; + return FrameworkDetectionUtil.removeDisabled(result); } private void collectSuitableFiles(@NotNull VirtualFile file) { diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionUtil.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionUtil.java new file mode 100644 index 000000000000..3cc0563e0e16 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionUtil.java @@ -0,0 +1,83 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.framework.detection.impl; + +import com.intellij.framework.detection.DetectedFrameworkDescription; +import com.intellij.openapi.application.AccessToken; +import com.intellij.openapi.application.WriteAction; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.PlatformModifiableModelsProvider; +import com.intellij.openapi.roots.ui.configuration.DefaultModulesProvider; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author nik + */ +public class FrameworkDetectionUtil { + private FrameworkDetectionUtil() { + } + + public static List getDisabledDescriptions(@NotNull List allDescriptions) { + List disabled = new ArrayList(); + for (DetectedFrameworkDescription description : allDescriptions) { + if (!description.canSetupFramework(allDescriptions)) { + disabled.add(description); + } + } + if (!disabled.isEmpty()) { + List remaining = new ArrayList(allDescriptions); + remaining.removeAll(disabled); + disabled.addAll(getDisabledDescriptions(remaining)); + } + return disabled; + } + + public static List removeDisabled(@NotNull List allDescriptions) { + final List disabled = getDisabledDescriptions(allDescriptions); + if (disabled.isEmpty()) return allDescriptions; + final List descriptions = new ArrayList(allDescriptions); + descriptions.removeAll(disabled); + return descriptions; + } + + public static void setupFrameworks(List descriptions, final Project project) { + AccessToken token = WriteAction.start(); + try { + final PlatformModifiableModelsProvider provider = new PlatformModifiableModelsProvider(); + final DefaultModulesProvider modulesProvider = new DefaultModulesProvider(project); + List sortedDescriptions = new ArrayList(); + for (DetectedFrameworkDescription description : descriptions) { + if (description.getUnderlyingType() == null) { + sortedDescriptions.add(description); + } + } + for (DetectedFrameworkDescription description : descriptions) { + if (description.getUnderlyingType() != null) { + sortedDescriptions.add(description); + } + } + for (DetectedFrameworkDescription description : sortedDescriptions) { + description.setupFramework(provider, modulesProvider); + } + } + finally { + token.finish(); + } + } +} diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/ConfigureDetectedFrameworksDialog.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/ConfigureDetectedFrameworksDialog.java index 558c17974376..74d9f39d63c0 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/ConfigureDetectedFrameworksDialog.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/ConfigureDetectedFrameworksDialog.java @@ -31,7 +31,7 @@ public class ConfigureDetectedFrameworksDialog extends DialogWrapper { private final DetectedFrameworksComponent myComponent; private final Project myProject; - public ConfigureDetectedFrameworksDialog(Project project, List descriptions) { + public ConfigureDetectedFrameworksDialog(Project project, List descriptions) { super(project, true); myProject = project; setTitle("Setup Frameworks"); diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworksComponent.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworksComponent.java index 38e2ed455cc1..c6811bd8538f 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworksComponent.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworksComponent.java @@ -51,6 +51,7 @@ public class DetectedFrameworksComponent { myTree = new DetectedFrameworksTree(context, GroupByOption.TYPE) { @Override protected void onNodeStateChanged(CheckedTreeNode node) { + super.onNodeStateChanged(node); updateOptionsPanel(); } }; diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworksTree.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworksTree.java index 6b2936e65ade..ef07d21ae3b4 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworksTree.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/ui/DetectedFrameworksTree.java @@ -18,6 +18,7 @@ package com.intellij.framework.detection.impl.ui; import com.intellij.framework.FrameworkType; import com.intellij.framework.detection.DetectedFrameworkDescription; import com.intellij.framework.detection.FrameworkDetectionContext; +import com.intellij.framework.detection.impl.FrameworkDetectionUtil; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.CheckboxTree; @@ -27,18 +28,16 @@ import com.intellij.util.ui.tree.TreeUtil; import org.jetbrains.annotations.NotNull; import javax.swing.*; +import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author nik */ public class DetectedFrameworksTree extends CheckboxTree { - private List myDetectedFrameworks; + private List myDetectedFrameworks; private final FrameworkDetectionContext myContext; private DetectedFrameworksComponent.GroupByOption myGroupByOption; @@ -50,7 +49,7 @@ public class DetectedFrameworksTree extends CheckboxTree { setRootVisible(false); } - private void createNodesGroupedByDirectory(CheckedTreeNode root, final List frameworks) { + private void createNodesGroupedByDirectory(CheckedTreeNode root, final List frameworks) { Map nodes = new HashMap(); List externalNodes = new ArrayList(); for (DetectedFrameworkDescription framework : frameworks) { @@ -93,6 +92,18 @@ public class DetectedFrameworksTree extends CheckboxTree { }); } + @Override + protected void onNodeStateChanged(CheckedTreeNode node) { + final List checked = Arrays.asList(getCheckedNodes(DetectedFrameworkDescription.class, null)); + final List disabled = FrameworkDetectionUtil.getDisabledDescriptions(checked); + for (DetectedFrameworkDescription description : disabled) { + final DefaultMutableTreeNode treeNode = TreeUtil.findNodeWithObject(getRoot(), description); + if (treeNode instanceof CheckedTreeNode) { + ((CheckedTreeNode)treeNode).setChecked(false); + } + } + } + private static FrameworkDirectoryNode collapseDirectoryNode(FrameworkDirectoryNode node) { if (node.getChildCount() == 1) { final TreeNode child = node.getChildAt(0); @@ -129,7 +140,7 @@ public class DetectedFrameworksTree extends CheckboxTree { return newNode; } - private void createNodesGroupedByType(CheckedTreeNode root, final List frameworks) { + private void createNodesGroupedByType(CheckedTreeNode root, final List frameworks) { Map groupNodes = new HashMap(); for (DetectedFrameworkDescription framework : frameworks) { final FrameworkType type = framework.getFrameworkType(); @@ -155,7 +166,7 @@ public class DetectedFrameworksTree extends CheckboxTree { } } - public void rebuildTree(final List frameworks) { + public void rebuildTree(final List frameworks) { final CheckedTreeNode root = getRoot(); root.removeAllChildren(); if (myGroupByOption == DetectedFrameworksComponent.GroupByOption.TYPE) {