@Nullable
[fedora-idea.git] / lang-impl / src / com / intellij / ide / projectView / impl / nodes / ProjectViewModuleNode.java
blob0505fca1469f488a54b5ba00618931fe4ba09a95
1 package com.intellij.ide.projectView.impl.nodes;
3 import com.intellij.ide.projectView.ViewSettings;
4 import com.intellij.ide.util.treeView.AbstractTreeNode;
5 import com.intellij.openapi.diagnostic.Logger;
6 import com.intellij.openapi.module.Module;
7 import com.intellij.openapi.project.Project;
8 import com.intellij.openapi.roots.ModuleFileIndex;
9 import com.intellij.openapi.roots.ModuleRootManager;
10 import com.intellij.openapi.vfs.VirtualFile;
11 import com.intellij.psi.PsiDirectory;
12 import com.intellij.psi.PsiManager;
13 import org.jetbrains.annotations.NotNull;
15 import java.util.ArrayList;
16 import java.util.Collection;
17 import java.util.List;
19 public class ProjectViewModuleNode extends AbstractModuleNode {
20 private static final Logger LOG = Logger.getInstance("#com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode");
22 public ProjectViewModuleNode(Project project, Module value, ViewSettings viewSettings) {
23 super(project, value, viewSettings);
26 public ProjectViewModuleNode(Project project, Object value, ViewSettings viewSettings) {
27 this(project, (Module)value, viewSettings);
30 @NotNull
31 public Collection<AbstractTreeNode> getChildren() {
32 ModuleRootManager rootManager = ModuleRootManager.getInstance(getValue());
33 ModuleFileIndex moduleFileIndex = rootManager.getFileIndex();
35 final VirtualFile[] contentRoots = rootManager.getContentRoots();
36 final List<AbstractTreeNode> children = new ArrayList<AbstractTreeNode>(contentRoots.length + 1);
37 final PsiManager psiManager = PsiManager.getInstance(getProject());
38 for (final VirtualFile contentRoot : contentRoots) {
39 LOG.assertTrue(contentRoot.isDirectory());
41 if (!moduleFileIndex.isInContent(contentRoot)) continue;
43 final PsiDirectory psiDirectory = psiManager.findDirectory(contentRoot);
44 LOG.assertTrue(psiDirectory != null);
46 PsiDirectoryNode directoryNode = new PsiDirectoryNode(getProject(), psiDirectory, getSettings());
47 children.add(directoryNode);
49 if (getSettings().isShowLibraryContents()) {
50 children.add(new LibraryGroupNode(getProject(), new LibraryGroupElement(getValue()), getSettings()));
52 return children;
55 public int getWeight() {
56 return 10;
59 public int getTypeSortWeight(final boolean sortByType) {
60 return 2;