From 2d1d0f86e0f435ebeb3e97990429dac7ad10bd1e Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Thu, 11 Aug 2022 11:15:27 +0200 Subject: [PATCH] vcs: introduce interface for FilePath-providing grouping nodes GitOrigin-RevId: 1497337e87d2a41b2c06a0fc6c442ede0926871c --- .../vcs/changes/ui/ChangesBrowserFilePathNode.kt | 4 ++-- .../vcs/changes/ui/ChangesBrowserModuleNode.java | 15 ++++++++++++--- .../vcs/changes/ui/ChangesBrowserNode.java | 5 +++++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserFilePathNode.kt b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserFilePathNode.kt index efb12aca8c95..57094dbb2ae2 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserFilePathNode.kt +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserFilePathNode.kt @@ -114,8 +114,8 @@ abstract class AbstractChangesBrowserFilePathNode(userObject: U, val status: @JvmStatic fun safeCastToFilePath(node: ChangesBrowserNode<*>?): FilePath? { if (node == null) return null - if (node is ChangesBrowserModuleNode) { - return node.moduleRoot + if (node is NodeWithFilePath) { + return node.nodeFilePath } val o = node.userObject if (o is FilePath) return o diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserModuleNode.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserModuleNode.java index 9ffd49a5871f..09501e64d2b1 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserModuleNode.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserModuleNode.java @@ -14,7 +14,7 @@ import com.intellij.vcsUtil.VcsUtil; import org.jetbrains.annotations.NotNull; -public class ChangesBrowserModuleNode extends ChangesBrowserNode { +public class ChangesBrowserModuleNode extends ChangesBrowserNode implements ChangesBrowserNode.NodeWithFilePath { @NotNull private final FilePath myModuleRoot; protected ChangesBrowserModuleNode(Module userObject) { @@ -24,7 +24,10 @@ public class ChangesBrowserModuleNode extends ChangesBrowserNode { } @Override - public void render(@NotNull final ChangesBrowserNodeRenderer renderer, final boolean selected, final boolean expanded, final boolean hasFocus) { + public void render(@NotNull final ChangesBrowserNodeRenderer renderer, + final boolean selected, + final boolean expanded, + final boolean hasFocus) { final Module module = (Module)userObject; renderer.append(module.isDisposed() ? "" : module.getName(), SimpleTextAttributes.REGULAR_ATTRIBUTES); @@ -34,7 +37,8 @@ public class ChangesBrowserModuleNode extends ChangesBrowserNode { if (module.isDisposed()) { renderer.setIcon(ModuleType.EMPTY.getIcon()); - } else { + } + else { renderer.setIcon(ModuleType.get(module).getIcon()); } } @@ -44,6 +48,11 @@ public class ChangesBrowserModuleNode extends ChangesBrowserNode { return myModuleRoot; } + @Override + public @NotNull FilePath getNodeFilePath() { + return getModuleRoot(); + } + @Override public String getTextPresentation() { return getUserObject().getName(); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserNode.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserNode.java index 530fce30c326..8bc463107876 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserNode.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserNode.java @@ -487,4 +487,9 @@ public abstract class ChangesBrowserNode extends DefaultMutableTreeNode imple public Stream> getNodesUnderStream() { return traverse().toStream(); } + + interface NodeWithFilePath { + @NotNull + FilePath getNodeFilePath(); + } }