diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/ProjectViewDirectoryHelper.java')
-rw-r--r-- | platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/ProjectViewDirectoryHelper.java | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/ProjectViewDirectoryHelper.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/ProjectViewDirectoryHelper.java index ee05f0a10283..13ba91900521 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/ProjectViewDirectoryHelper.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/ProjectViewDirectoryHelper.java @@ -25,6 +25,7 @@ import com.intellij.ide.projectView.ViewSettings; import com.intellij.ide.util.treeView.AbstractTreeNode; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.fileTypes.FileTypeRegistry; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModuleFileIndex; @@ -32,7 +33,9 @@ import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.roots.impl.DirectoryIndex; +import com.intellij.openapi.roots.impl.DirectoryInfo; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiElement; @@ -123,7 +126,7 @@ public class ProjectViewDirectoryHelper { final Module module = fileIndex.getModuleForFile(psiDirectory.getVirtualFile()); final ModuleFileIndex moduleFileIndex = module == null ? null : ModuleRootManager.getInstance(module).getFileIndex(); if (!settings.isFlattenPackages() || skipDirectory(psiDirectory)) { - processPsiDirectoryChildren(psiDirectory, directoryChildrenInProject(psiDirectory), + processPsiDirectoryChildren(psiDirectory, directoryChildrenInProject(fileIndex, psiDirectory), children, fileIndex, null, settings, withSubDirectories); } else { // source directory in "flatten packages" mode @@ -137,7 +140,13 @@ public class ProjectViewDirectoryHelper { continue; } VirtualFile directoryFile = subdir.getVirtualFile(); - if (fileIndex.isIgnored(directoryFile)) continue; + + if (Registry.is("ide.hide.excluded.files")) { + if (fileIndex.isExcluded(directoryFile)) continue; + } + else { + if (FileTypeRegistry.getInstance().isFileIgnored(directoryFile)) continue; + } if (withSubDirectories) { children.add(new PsiDirectoryNode(project, subdir, settings)); @@ -163,9 +172,9 @@ public class ProjectViewDirectoryHelper { return topLevelContentRoots; } - private PsiElement[] directoryChildrenInProject(PsiDirectory psiDirectory) { + private PsiElement[] directoryChildrenInProject(ProjectFileIndex fileIndex, PsiDirectory psiDirectory) { VirtualFile dir = psiDirectory.getVirtualFile(); - if (myIndex.getInfoForDirectory(dir) != null) { + if (isInProject(dir)) { return psiDirectory.getChildren(); } @@ -189,6 +198,16 @@ public class ProjectViewDirectoryHelper { return PsiUtilCore.toPsiElementArray(directoriesOnTheWayToContentRoots); } + private boolean isInProject(VirtualFile dir) { + DirectoryInfo directoryInfo = myIndex.getInfoForFile(dir); + if (directoryInfo.isInProject()) return true; + + if (!Registry.is("ide.hide.excluded.files")) { + return directoryInfo.isExcluded(); + } + return false; + } + // used only for non-flatten packages mode public void processPsiDirectoryChildren(final PsiDirectory psiDir, PsiElement[] children, @@ -211,7 +230,7 @@ public class ProjectViewDirectoryHelper { vFile = dir.getVirtualFile(); if (!vFile.equals(projectFileIndex.getSourceRootForFile(vFile))) { // if is not a source root if (viewSettings.isHideEmptyMiddlePackages() && !skipDirectory(psiDir) && isEmptyMiddleDirectory(dir, true)) { - processPsiDirectoryChildren(dir, directoryChildrenInProject(dir), + processPsiDirectoryChildren(dir, directoryChildrenInProject(projectFileIndex, dir), container, projectFileIndex, moduleFileIndex, viewSettings, withSubDirectories); // expand it recursively continue; } |