diff --git a/platform/lang-api/src/com/intellij/ui/FileColorManager.java b/platform/lang-api/src/com/intellij/ui/FileColorManager.java index 757d37d232f8..ed1cffff61da 100644 --- a/platform/lang-api/src/com/intellij/ui/FileColorManager.java +++ b/platform/lang-api/src/com/intellij/ui/FileColorManager.java @@ -18,6 +18,7 @@ package com.intellij.ui; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -53,4 +54,10 @@ public abstract class FileColorManager { public abstract boolean isShared(@NotNull final String scopeName); public abstract boolean isColored(@NotNull String scopeName, final boolean shared); + + @Nullable + public abstract Color getRendererBackground(VirtualFile file); + + @Nullable + public abstract Color getRendererBackground(PsiFile file); } diff --git a/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesTableCellRenderer.java b/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesTableCellRenderer.java index b0dbdddca199..6e6e5bfae424 100644 --- a/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesTableCellRenderer.java +++ b/platform/lang-impl/src/com/intellij/find/actions/ShowUsagesTableCellRenderer.java @@ -123,11 +123,8 @@ class ShowUsagesTableCellRenderer implements TableCellRenderer { Project project = myUsageView.getProject(); PsiFile psiFile = PsiManager.getInstance(project).findFile(virtualFile); if (psiFile != null && psiFile.isValid()) { - final FileColorManager colorManager = FileColorManager.getInstance(project); - if (colorManager.isEnabled()) { - final Color color = colorManager.getFileColor(psiFile); - if (color != null) fileBgColor = color; - } + final Color color = FileColorManager.getInstance(project).getRendererBackground(psiFile); + if (color != null) fileBgColor = color; } } } @@ -151,4 +148,4 @@ class ShowUsagesTableCellRenderer implements TableCellRenderer { panel.add(renderer); } } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/ide/bookmarks/actions/BookmarksAction.java b/platform/lang-impl/src/com/intellij/ide/bookmarks/actions/BookmarksAction.java index c9c2c1132c3c..0c90da88575b 100644 --- a/platform/lang-impl/src/com/intellij/ide/bookmarks/actions/BookmarksAction.java +++ b/platform/lang-impl/src/com/intellij/ide/bookmarks/actions/BookmarksAction.java @@ -30,7 +30,6 @@ import com.intellij.openapi.editor.highlighter.EditorHighlighterFactory; import com.intellij.openapi.editor.markup.EffectType; import com.intellij.openapi.editor.markup.TextAttributes; import com.intellij.openapi.fileEditor.FileDocumentManager; -import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.InputValidator; @@ -48,7 +47,10 @@ import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; -import com.intellij.ui.*; +import com.intellij.ui.ColoredListCellRenderer; +import com.intellij.ui.FileColorManager; +import com.intellij.ui.ListUtil; +import com.intellij.ui.SimpleTextAttributes; import com.intellij.ui.speedSearch.FilteringListModel; import com.intellij.util.Alarm; import com.intellij.util.Function; @@ -310,17 +312,12 @@ public class BookmarksAction extends AnAction implements DumbAware { if (!selected) { FileColorManager colorManager = FileColorManager.getInstance(project); - if (colorManager.isEnabled()) { - if (fileOrDir instanceof PsiFile) { - Color color = colorManager.getFileColor((PsiFile)fileOrDir); - if (color != null) { - renderer.setBackground(color); - } + if (fileOrDir instanceof PsiFile) { + Color color = colorManager.getRendererBackground((PsiFile)fileOrDir); + if (color != null) { + renderer.setBackground(color); } } - else if (FileEditorManager.getInstance(project).isFileOpen(file)) { - renderer.setBackground(LightColors.SLIGHTLY_GREEN); - } } String description = myBookmark.getDescription(); diff --git a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyNodeRenderer.java b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyNodeRenderer.java index e6bef519d586..2f92f23370af 100644 --- a/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyNodeRenderer.java +++ b/platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyNodeRenderer.java @@ -55,9 +55,7 @@ public final class HierarchyNodeRenderer extends ColoredTreeCellRenderer { final PsiFile psiFile = descriptor.getContainingFile(); if (psiFile != null && psiFile.isValid()) { final FileColorManager colorManager = FileColorManager.getInstance(descriptor.getProject()); - if (colorManager.isEnabled()) { - return colorManager.getFileColor(psiFile); - } + return colorManager.getRendererBackground(psiFile); } return null; } diff --git a/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java b/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java index 66b1948ed62d..3cf8e5eaaf61 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java +++ b/platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java @@ -21,20 +21,19 @@ import com.intellij.navigation.ItemPresentation; import com.intellij.navigation.NavigationItem; import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.editor.colors.EditorColorsManager; import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.markup.EffectType; import com.intellij.openapi.editor.markup.TextAttributes; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vcs.FileStatus; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.project.Project; import com.intellij.problems.WolfTheProblemSolver; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiUtilBase; import com.intellij.ui.ColoredListCellRenderer; -import com.intellij.ui.SimpleTextAttributes; import com.intellij.ui.FileColorManager; +import com.intellij.ui.SimpleTextAttributes; import com.intellij.util.IconUtil; import com.intellij.util.ui.UIUtil; @@ -107,11 +106,9 @@ public class NavigationItemListCellRenderer extends JPanel implements ListCellRe isProblemFile = WolfTheProblemSolver.getInstance(project).isProblemFile(virtualFile); final FileColorManager fileColorManager = FileColorManager.getInstance(project); - if (virtualFile != null && fileColorManager.isEnabled()) { - final Color fileColor = fileColorManager.getFileColor(psiElement.getContainingFile()); - if (fileColor != null) { - bgColor = fileColor; - } + final Color fileColor = fileColorManager.getRendererBackground(psiElement.getContainingFile()); + if (fileColor != null) { + bgColor = fileColor; } } } diff --git a/platform/lang-impl/src/com/intellij/ide/util/PsiElementListCellRenderer.java b/platform/lang-impl/src/com/intellij/ide/util/PsiElementListCellRenderer.java index 71d2c66d802d..278cd1f1e4e2 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/PsiElementListCellRenderer.java +++ b/platform/lang-impl/src/com/intellij/ide/util/PsiElementListCellRenderer.java @@ -81,10 +81,8 @@ public abstract class PsiElementListCellRenderer extends J final FileColorManager colorManager = FileColorManager.getInstance(psiFile.getProject()); if (colorManager.isEnabled()) { - if (psiFile.isValid()) { - final Color fileBgColor = colorManager.getFileColor(psiFile); - bgColor = fileBgColor == null ? bgColor : fileBgColor; - } + final Color fileBgColor = colorManager.getRendererBackground(psiFile); + bgColor = fileBgColor == null ? bgColor : fileBgColor; } } } diff --git a/platform/lang-impl/src/com/intellij/ui/tabs/FileColorManagerImpl.java b/platform/lang-impl/src/com/intellij/ui/tabs/FileColorManagerImpl.java index 7cb079d8479a..8b26ee0c648f 100644 --- a/platform/lang-impl/src/com/intellij/ui/tabs/FileColorManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/ui/tabs/FileColorManagerImpl.java @@ -20,9 +20,13 @@ import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.components.State; import com.intellij.openapi.components.Storage; +import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiManager; import com.intellij.ui.FileColorManager; +import com.intellij.ui.LightColors; import com.intellij.util.containers.hash.LinkedHashMap; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -154,6 +158,28 @@ public class FileColorManagerImpl extends FileColorManager implements Persistent return myModel.isColored(scopeName, shared); } + @Nullable + @Override + public Color getRendererBackground(VirtualFile file) { + return getRendererBackground(PsiManager.getInstance(myProject).findFile(file)); + } + + @Nullable + @Override + public Color getRendererBackground(PsiFile file) { + if (file == null) return null; + + if (isEnabled()) { + final Color fileColor = getFileColor(file); + if (fileColor != null) return fileColor; + } + + final VirtualFile vFile = file.getVirtualFile(); + if (vFile == null) return null; + + return FileEditorManager.getInstance(myProject).isFileOpen(vFile) ? LightColors.SLIGHTLY_GREEN : null; + } + @Nullable public Color getFileColor(@NotNull final PsiFile file) { final String colorName = myModel.getColor(file);