From e2b747be71acd74f7218c1407a9433c0160b6769 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 12 Sep 2012 14:56:51 +0400 Subject: [PATCH] highlight file colors in scopes view (IDEA-90905) --- .../ide/projectView/impl/ProjectViewTree.java | 3 ++- .../ide/scopeView/ScopeTreeViewPanel.java | 17 +++++++++++++++-- .../src/com/intellij/ui/treeStructure/Tree.java | 8 ++++++-- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewTree.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewTree.java index 0f5f9e74ea9e..46f18b525f4c 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewTree.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/ProjectViewTree.java @@ -29,6 +29,7 @@ import com.intellij.ui.ColorUtil; import com.intellij.ui.FileColorManager; import com.intellij.ui.JBTreeWithHintProvider; import com.intellij.ui.tabs.FileColorManagerImpl; +import com.intellij.util.Function; import com.intellij.util.NullableFunction; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -116,7 +117,7 @@ public abstract class ProjectViewTree extends JBTreeWithHintProvider { } @Nullable - public static Color getColorForObject(Object object, Project project, @NotNull NullableFunction converter) { + public static Color getColorForObject(Object object, Project project, @NotNull Function converter) { Color color = null; final PsiElement psi = converter.fun(object); if (psi != null) { diff --git a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java index b0d1730107fc..7fdc489d12d4 100644 --- a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java @@ -26,6 +26,7 @@ import com.intellij.ide.projectView.ProjectViewNodeDecorator; import com.intellij.ide.projectView.impl.AbstractProjectViewPane; import com.intellij.ide.projectView.impl.ModuleGroup; import com.intellij.ide.projectView.impl.ProjectViewPane; +import com.intellij.ide.projectView.impl.ProjectViewTree; import com.intellij.ide.scopeView.nodes.BasePsiNode; import com.intellij.ide.ui.customization.CustomizationUtil; import com.intellij.ide.util.DeleteHandler; @@ -67,6 +68,7 @@ import com.intellij.psi.util.PsiUtilBase; import com.intellij.ui.*; import com.intellij.util.EditSourceOnDoubleClickHandler; import com.intellij.util.Function; +import com.intellij.util.NullableFunction; import com.intellij.util.OpenSourceUtil; import com.intellij.util.containers.HashSet; import com.intellij.util.messages.MessageBusConnection; @@ -101,13 +103,24 @@ public class ScopeTreeViewPanel extends JPanel implements Disposable { private final IdeView myIdeView = new MyIdeView(); private final MyPsiTreeChangeAdapter myPsiTreeChangeAdapter = new MyPsiTreeChangeAdapter(); - private final DnDAwareTree myTree = new DnDAwareTree(); + private final DnDAwareTree myTree = new DnDAwareTree(){ + @Override + public boolean isFileColorsEnabled() { + return ProjectViewTree.isFileColorsEnabledFor(this); + } + + @Nullable + @Override + public Color getFileColorFor(DefaultMutableTreeNode node) { + return ProjectViewTree.getColorForObject(((PackageDependenciesNode)node).getPsiElement(), myProject, Function.ID); + } + }; private final Project myProject; private FileTreeModelBuilder myBuilder; private String CURRENT_SCOPE_NAME; - private TreeExpansionMonitor myTreeExpansionMonitor; + private TreeExpansionMonitor myTreeExpansionMonitor; private CopyPasteDelegator myCopyPasteDelegator; private final MyDeletePSIElementProvider myDeletePSIElementProvider = new MyDeletePSIElementProvider(); private final ModuleDeleteProvider myDeleteModuleProvider = new ModuleDeleteProvider(); diff --git a/platform/platform-api/src/com/intellij/ui/treeStructure/Tree.java b/platform/platform-api/src/com/intellij/ui/treeStructure/Tree.java index 3166079e4c99..79fce417caf8 100644 --- a/platform/platform-api/src/com/intellij/ui/treeStructure/Tree.java +++ b/platform/platform-api/src/com/intellij/ui/treeStructure/Tree.java @@ -345,9 +345,8 @@ public class Tree extends JTree implements ComponentWithEmptyText, ComponentWith if (component instanceof LoadingNode && pathObjects.length > 1) { component = pathObjects[pathObjects.length - 2]; } - final Object object = ((DefaultMutableTreeNode)component).getUserObject(); - Color color = getFileColorFor(object); + Color color = getFileColorFor(((DefaultMutableTreeNode)component)); if (color != null) { g.setColor(color); g.fillRect(0, bounds.y, getWidth(), bounds.height); @@ -373,6 +372,11 @@ public class Tree extends JTree implements ComponentWithEmptyText, ComponentWith return null; } + @Nullable + public Color getFileColorFor(DefaultMutableTreeNode node) { + return getFileColorFor(node.getUserObject()); + } + @Override protected void processKeyEvent(KeyEvent e) { super.processKeyEvent(e);