IDEADEV-11587: Light green background for files open in editors now visible in Ctrl...
authorMaxim Shafirov <max@jetbrains.com>
Fri, 20 Nov 2009 15:20:22 +0000 (18:20 +0300)
committerMaxim Shafirov <max@jetbrains.com>
Fri, 20 Nov 2009 15:20:49 +0000 (18:20 +0300)
platform/lang-api/src/com/intellij/ui/FileColorManager.java
platform/lang-impl/src/com/intellij/find/actions/ShowUsagesTableCellRenderer.java
platform/lang-impl/src/com/intellij/ide/bookmarks/actions/BookmarksAction.java
platform/lang-impl/src/com/intellij/ide/hierarchy/HierarchyNodeRenderer.java
platform/lang-impl/src/com/intellij/ide/util/NavigationItemListCellRenderer.java
platform/lang-impl/src/com/intellij/ide/util/PsiElementListCellRenderer.java
platform/lang-impl/src/com/intellij/ui/tabs/FileColorManagerImpl.java

index 757d37d232f8bf83ca8eb3b581505228e1f3a1d0..ed1cffff61da8d3deba9a310949c48be5ef7acbc 100644 (file)
@@ -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);
 }
index b0dbdddca19961c8db19bd3949a2875d7158075e..6e6e5bfae424082164b31a6b78600d313214776b 100644 (file)
@@ -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
+}
index c9c2c1132c3c6ab09dc12a1119e37dad88826c03..0c90da88575beab7745d824df80c05ec2f7bfca5 100644 (file)
@@ -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();
index e6bef519d586e596d945d28aad993f77177ae453..2f92f23370af98d2b7cb68f4cf261083f5b3b60c 100644 (file)
@@ -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;
   }
index 66b1948ed62d00cf9189807908ecc4b2abded54c..3cf8e5eaaf61fb5eaa2a56bfa378d6a80aaeb73c 100644 (file)
@@ -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;
             }
           }
         }
index 71d2c66d802d14095e288b5cf4d8f6050c23dee1..278cd1f1e4e2a844a20e104c1522c0e3fdccab51 100644 (file)
@@ -81,10 +81,8 @@ public abstract class PsiElementListCellRenderer<T extends PsiElement> 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;
             }
           }
         }
index 7cb079d8479ae9029e7da7ef659137ff6a5ca530..8b26ee0c648f8bfdd9f9296d67eaed94822886ca 100644 (file)
@@ -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);