vcs: introduce interface for FilePath-providing grouping nodes

GitOrigin-RevId: 1497337e87d2a41b2c06a0fc6c442ede0926871c
This commit is contained in:
Aleksey Pivovarov
2022-08-12 12:21:57 +00:00
committed by intellij-monorepo-bot
parent 1a22c9f26c
commit 2d1d0f86e0
3 changed files with 19 additions and 5 deletions
@@ -114,8 +114,8 @@ abstract class AbstractChangesBrowserFilePathNode<U>(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
@@ -14,7 +14,7 @@ import com.intellij.vcsUtil.VcsUtil;
import org.jetbrains.annotations.NotNull;
public class ChangesBrowserModuleNode extends ChangesBrowserNode<Module> {
public class ChangesBrowserModuleNode extends ChangesBrowserNode<Module> implements ChangesBrowserNode.NodeWithFilePath {
@NotNull private final FilePath myModuleRoot;
protected ChangesBrowserModuleNode(Module userObject) {
@@ -24,7 +24,10 @@ public class ChangesBrowserModuleNode extends ChangesBrowserNode<Module> {
}
@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<Module> {
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<Module> {
return myModuleRoot;
}
@Override
public @NotNull FilePath getNodeFilePath() {
return getModuleRoot();
}
@Override
public String getTextPresentation() {
return getUserObject().getName();
@@ -487,4 +487,9 @@ public abstract class ChangesBrowserNode<T> extends DefaultMutableTreeNode imple
public Stream<ChangesBrowserNode<?>> getNodesUnderStream() {
return traverse().toStream();
}
interface NodeWithFilePath {
@NotNull
FilePath getNodeFilePath();
}
}