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(); + } }