diff --git a/java/java-impl/src/com/intellij/ide/projectView/impl/JavaProjectViewDirectoryHelper.java b/java/java-impl/src/com/intellij/ide/projectView/impl/JavaProjectViewDirectoryHelper.java index 8f8df9554190..a12e54670176 100644 --- a/java/java-impl/src/com/intellij/ide/projectView/impl/JavaProjectViewDirectoryHelper.java +++ b/java/java-impl/src/com/intellij/ide/projectView/impl/JavaProjectViewDirectoryHelper.java @@ -19,14 +19,13 @@ import com.intellij.ide.projectView.ViewSettings; import com.intellij.ide.projectView.impl.nodes.PackageElement; import com.intellij.ide.projectView.impl.nodes.PackageUtil; import com.intellij.ide.projectView.impl.nodes.ProjectViewDirectoryHelper; +import com.intellij.ide.projectView.impl.nodes.PsiFileSystemItemFilter; import com.intellij.ide.util.treeView.TreeViewUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.impl.DirectoryIndex; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.JavaDirectoryService; import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFileSystemItem; import com.intellij.psi.PsiPackage; import com.intellij.util.FontUtil; import org.jetbrains.annotations.NotNull; @@ -95,7 +94,7 @@ public class JavaProjectViewDirectoryHelper extends ProjectViewDirectoryHelper { @Override public boolean isEmptyMiddleDirectory(final PsiDirectory directory, final boolean strictlyEmpty, - @Nullable Condition filter) { + @Nullable PsiFileSystemItemFilter filter) { return JavaDirectoryService.getInstance().getPackage(directory) != null && TreeViewUtil.isEmptyMiddlePackage(directory, strictlyEmpty, filter); } diff --git a/java/java-impl/src/com/intellij/ide/util/treeView/TreeViewUtil.java b/java/java-impl/src/com/intellij/ide/util/treeView/TreeViewUtil.java index 773757abacc9..8cec8eaf2742 100644 --- a/java/java-impl/src/com/intellij/ide/util/treeView/TreeViewUtil.java +++ b/java/java-impl/src/com/intellij/ide/util/treeView/TreeViewUtil.java @@ -15,9 +15,9 @@ */ package com.intellij.ide.util.treeView; +import com.intellij.ide.projectView.impl.nodes.PsiFileSystemItemFilter; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.UserDataHolderEx; import com.intellij.openapi.vfs.VirtualFile; @@ -97,7 +97,7 @@ public class TreeViewUtil { */ public static boolean isEmptyMiddlePackage(@NotNull PsiDirectory dir, boolean strictlyEmpty, - @Nullable Condition filter) { + @Nullable PsiFileSystemItemFilter filter) { final VirtualFile[] files = dir.getVirtualFile().getChildren(); if (files.length == 0) { return false; @@ -110,10 +110,10 @@ public class TreeViewUtil { if (!file.isDirectory()) { if (filter == null) return false; PsiFile childFile = manager.findFile(file); - if (childFile != null && filter.value(childFile)) return false; + if (childFile != null && filter.accept(childFile)) return false; } PsiDirectory childDir = manager.findDirectory(file); - if (childDir != null && (filter == null || filter.value(childDir))) { + if (childDir != null && (filter == null || filter.accept(childDir))) { directoriesCount++; if (strictlyEmpty && directoriesCount > 1) return false; if (JavaDirectoryService.getInstance().getPackage(childDir) != null) { 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 6eb26042bca4..dca406edfb96 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 @@ -35,7 +35,6 @@ import com.intellij.openapi.roots.impl.DirectoryIndex; import com.intellij.openapi.roots.impl.DirectoryInfo; import com.intellij.openapi.roots.ui.configuration.ModuleSourceRootEditHandler; import com.intellij.openapi.util.Comparing; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.vfs.VirtualFile; @@ -129,7 +128,7 @@ public class ProjectViewDirectoryHelper { public boolean isEmptyMiddleDirectory(PsiDirectory directory, final boolean strictlyEmpty, - @Nullable Condition filter) { + @Nullable PsiFileSystemItemFilter filter) { return false; } @@ -160,7 +159,7 @@ public class ProjectViewDirectoryHelper { public Collection getDirectoryChildren(final PsiDirectory psiDirectory, final ViewSettings settings, final boolean withSubDirectories, - @Nullable Condition filter) { + @Nullable PsiFileSystemItemFilter filter) { final List children = new ArrayList(); final Project project = psiDirectory.getProject(); final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex(); @@ -178,7 +177,7 @@ public class ProjectViewDirectoryHelper { if (withSubDirectories) { PsiDirectory[] subdirs = psiDirectory.getSubdirectories(); for (PsiDirectory subdir : subdirs) { - if (!skipDirectory(subdir) || filter != null && !filter.value(subdir)) { + if (!skipDirectory(subdir) || filter != null && !filter.accept(subdir)) { continue; } VirtualFile directoryFile = subdir.getVirtualFile(); @@ -277,7 +276,7 @@ public class ProjectViewDirectoryHelper { @Nullable ModuleFileIndex moduleFileIndex, ViewSettings viewSettings, boolean withSubDirectories, - @Nullable Condition filter) { + @Nullable PsiFileSystemItemFilter filter) { for (PsiElement child : children) { LOG.assertTrue(child.isValid()); @@ -292,7 +291,7 @@ public class ProjectViewDirectoryHelper { if (moduleFileIndex != null && !moduleFileIndex.isInContent(vFile)) { continue; } - if (filter != null && !filter.value((PsiFileSystemItem)child)) { + if (filter != null && !filter.accept((PsiFileSystemItem)child)) { continue; } if (child instanceof PsiFile) { @@ -320,11 +319,11 @@ public class ProjectViewDirectoryHelper { PsiDirectory dir, @Nullable ModuleFileIndex moduleFileIndex, ViewSettings viewSettings, - @Nullable Condition filter) { + @Nullable PsiFileSystemItemFilter filter) { final Project project = dir.getProject(); PsiDirectory[] subdirs = dir.getSubdirectories(); for (PsiDirectory subdir : subdirs) { - if (skipDirectory(subdir) || filter != null && !filter.value(subdir)) { + if (skipDirectory(subdir) || filter != null && !filter.accept(subdir)) { continue; } if (moduleFileIndex != null && !moduleFileIndex.isInContent(subdir.getVirtualFile())) { diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java index 75de92b83fea..991755ff8b7e 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java @@ -34,7 +34,6 @@ import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.roots.libraries.LibraryUtil; import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService; import com.intellij.openapi.util.Comparing; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtilCore; @@ -43,7 +42,6 @@ import com.intellij.pom.NavigatableWithText; import com.intellij.projectImport.ProjectAttachProcessor; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiFile; -import com.intellij.psi.PsiFileSystemItem; import com.intellij.psi.PsiManager; import com.intellij.psi.impl.file.PsiDirectoryFactory; import com.intellij.ui.SimpleTextAttributes; @@ -58,19 +56,19 @@ import java.util.Collection; public class PsiDirectoryNode extends BasePsiNode implements NavigatableWithText { - private final Condition myFilter; + private final PsiFileSystemItemFilter myFilter; public PsiDirectoryNode(Project project, PsiDirectory value, ViewSettings viewSettings) { this(project, value, viewSettings, null); } - public PsiDirectoryNode(Project project, PsiDirectory value, ViewSettings viewSettings, @Nullable Condition filter) { + public PsiDirectoryNode(Project project, PsiDirectory value, ViewSettings viewSettings, @Nullable PsiFileSystemItemFilter filter) { super(project, value, viewSettings); myFilter = filter; } @Nullable - public Condition getFilter() { + public PsiFileSystemItemFilter getFilter() { return myFilter; } @@ -188,13 +186,13 @@ public class PsiDirectoryNode extends BasePsiNode implements Navig } final Project project = value.getProject(); - Condition filter = getFilter(); + PsiFileSystemItemFilter filter = getFilter(); if (filter != null) { PsiFile psiFile = PsiManager.getInstance(project).findFile(file); - if (psiFile != null && !filter.value(psiFile)) return false; + if (psiFile != null && !filter.accept(psiFile)) return false; PsiDirectory psiDirectory = PsiManager.getInstance(project).findDirectory(file); - if (psiDirectory != null && !filter.value(psiDirectory)) return false; + if (psiDirectory != null && !filter.accept(psiDirectory)) return false; } if (Registry.is("ide.hide.excluded.files")) { diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiFileSystemItemFilter.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiFileSystemItemFilter.java new file mode 100644 index 000000000000..ca035cee0684 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiFileSystemItemFilter.java @@ -0,0 +1,24 @@ +/* + * Copyright 2000-2016 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.ide.projectView.impl.nodes; + +import com.intellij.psi.PsiFileSystemItem; +import org.jetbrains.annotations.NotNull; + +public interface PsiFileSystemItemFilter { + + boolean accept(@NotNull PsiFileSystemItem item); +} diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/projectView/GradleTreeStructureProvider.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/projectView/GradleTreeStructureProvider.java index a4949c12f477..1c6b82c4352e 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/projectView/GradleTreeStructureProvider.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/projectView/GradleTreeStructureProvider.java @@ -19,10 +19,7 @@ import com.intellij.ide.projectView.PresentationData; import com.intellij.ide.projectView.TreeStructureProvider; import com.intellij.ide.projectView.ViewSettings; import com.intellij.ide.projectView.impl.ProjectRootsUtil; -import com.intellij.ide.projectView.impl.nodes.ProjectViewModuleGroupNode; -import com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode; -import com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode; -import com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode; +import com.intellij.ide.projectView.impl.nodes.*; import com.intellij.ide.util.treeView.AbstractTreeNode; import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil; import com.intellij.openapi.module.Module; @@ -30,14 +27,12 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; -import com.intellij.psi.PsiFileSystemItem; import com.intellij.ui.SimpleTextAttributes; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -231,7 +226,7 @@ public class GradleTreeStructureProvider implements TreeStructureProvider { ViewSettings settings, Module module, String sourceSetName, - Condition filter) { + PsiFileSystemItemFilter filter) { super(project, psiDirectory, settings, filter); mySourceSetName = sourceSetName; myModule = module;