From 6aab284c25eeccd0c72964678ab3b0ba4c0a8e26 Mon Sep 17 00:00:00 2001 From: nik Date: Wed, 7 Jun 2017 19:28:58 +0200 Subject: [PATCH] Project View: show special icon for content root of unloaded modules (IDEA-27471) --- .../intellij/psi/impl/JavaDirectoryIconProvider.java | 3 +++ .../ide/projectView/impl/ProjectRootsUtil.java | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/java/java-impl/src/com/intellij/psi/impl/JavaDirectoryIconProvider.java b/java/java-impl/src/com/intellij/psi/impl/JavaDirectoryIconProvider.java index f6b3baa8b3a7..e3f5e0638ecf 100644 --- a/java/java-impl/src/com/intellij/psi/impl/JavaDirectoryIconProvider.java +++ b/java/java-impl/src/com/intellij/psi/impl/JavaDirectoryIconProvider.java @@ -59,6 +59,9 @@ public class JavaDirectoryIconProvider extends IconProvider implements DumbAware Module module = ProjectRootManager.getInstance(project).getFileIndex().getModuleForFile(vFile); symbolIcon = module != null ? ModuleType.get(module).getIcon() : PlatformIcons.CONTENT_ROOT_ICON_CLOSED; } + else if (ProjectRootsUtil.computeNameOfUnloadedModuleByContentRoot(vFile, project) != null) { + symbolIcon = AllIcons.Modules.UnloadedModule; + } else if ((sourceFolder = ProjectRootsUtil.getModuleSourceRoot(vFile, project)) != null) { symbolIcon = SourceRootPresentation.getSourceRootIcon(sourceFolder); } diff --git a/platform/projectModel-impl/src/com/intellij/ide/projectView/impl/ProjectRootsUtil.java b/platform/projectModel-impl/src/com/intellij/ide/projectView/impl/ProjectRootsUtil.java index 12ae255f1694..0eef44a2d908 100644 --- a/platform/projectModel-impl/src/com/intellij/ide/projectView/impl/ProjectRootsUtil.java +++ b/platform/projectModel-impl/src/com/intellij/ide/projectView/impl/ProjectRootsUtil.java @@ -18,6 +18,8 @@ package com.intellij.ide.projectView.impl; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.*; +import com.intellij.openapi.roots.impl.DirectoryIndex; +import com.intellij.openapi.roots.impl.DirectoryInfo; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiCodeFragment; import com.intellij.psi.PsiDirectory; @@ -90,6 +92,14 @@ public class ProjectRootsUtil { return directoryFile.equals(contentRootForFile); } + public static String computeNameOfUnloadedModuleByContentRoot(@NotNull final VirtualFile root, @NotNull Project project) { + final DirectoryInfo info = DirectoryIndex.getInstance(project).getInfoForFile(root); + if (info.isExcluded(root) && root.equals(info.getContentRoot()) && info.getUnloadedModuleName() != null) { + return info.getUnloadedModuleName(); + } + return null; + } + public static boolean isProjectHome(@NotNull PsiDirectory psiDirectory) { return psiDirectory.getVirtualFile().equals(psiDirectory.getProject().getBaseDir()); }