mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs-log][linear-bek] simplify edges expanding
This commit is contained in:
+16
-32
@@ -23,7 +23,6 @@ import com.intellij.vcs.log.graph.api.elements.GraphEdge;
|
||||
import com.intellij.vcs.log.graph.api.elements.GraphEdgeType;
|
||||
import com.intellij.vcs.log.graph.api.elements.GraphNode;
|
||||
import com.intellij.vcs.log.graph.collapsing.EdgeStorageWrapper;
|
||||
import com.intellij.vcs.log.graph.utils.LinearGraphUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -76,44 +75,29 @@ public class LinearBekGraph implements LinearGraph {
|
||||
}
|
||||
|
||||
public Collection<GraphEdge> expandEdge(@NotNull final GraphEdge edge) {
|
||||
Set<GraphEdge> result = ContainerUtil.newHashSet();
|
||||
|
||||
assert edge.getType() == GraphEdgeType.DOTTED;
|
||||
final Integer tail = edge.getUpNodeIndex();
|
||||
final Integer firstChild = edge.getDownNodeIndex();
|
||||
myDottedEdges.removeEdge(edge);
|
||||
|
||||
Integer tail = edge.getUpNodeIndex();
|
||||
Integer firstChild = edge.getDownNodeIndex();
|
||||
assert tail != null : "Collapsed from to an unloaded node";
|
||||
assert firstChild != null : "Collapsed edge to an unloaded node";
|
||||
|
||||
myDottedEdges.removeEdge(edge);
|
||||
|
||||
Set<GraphEdge> addedEdges = ContainerUtil.newHashSet();
|
||||
addedEdges.addAll(myGraph.getAdjacentEdges(tail, EdgeFilter.NORMAL_DOWN));
|
||||
addedEdges.addAll(myGraph.getAdjacentEdges(firstChild, EdgeFilter.NORMAL_UP));
|
||||
|
||||
for (GraphEdge hiddenEdge : addedEdges) {
|
||||
myHiddenEdges.removeEdge(hiddenEdge);
|
||||
}
|
||||
if (edge.getType() == GraphEdgeType.DOTTED) {
|
||||
myHiddenEdges.removeEdge(edge);
|
||||
}
|
||||
|
||||
List<GraphEdge> downDottedEdges =
|
||||
ContainerUtil.filter(myHiddenEdges.getAdjacentEdges(tail, EdgeFilter.ALL), new Condition<GraphEdge>() {
|
||||
@Override
|
||||
public boolean value(GraphEdge graphEdge) {
|
||||
return LinearGraphUtils.isEdgeDown(graphEdge, tail);
|
||||
}
|
||||
});
|
||||
List<GraphEdge> upDottedEdges = ContainerUtil.filter(myHiddenEdges.getAdjacentEdges(firstChild, EdgeFilter.ALL), new Condition<GraphEdge>() {
|
||||
@Override
|
||||
public boolean value(GraphEdge graphEdge) {
|
||||
return LinearGraphUtils.isEdgeUp(graphEdge, firstChild);
|
||||
List<GraphEdge> downDottedEdges = myHiddenEdges.getAdjacentEdges(tail, EdgeFilter.NORMAL_DOWN);
|
||||
List<GraphEdge> upDottedEdges = myHiddenEdges.getAdjacentEdges(firstChild, EdgeFilter.NORMAL_UP);
|
||||
for (GraphEdge e : ContainerUtil.concat(downDottedEdges, upDottedEdges)) {
|
||||
myHiddenEdges.removeEdge(e);
|
||||
if (e.getType() == GraphEdgeType.DOTTED) {
|
||||
result.addAll(expandEdge(e));
|
||||
}
|
||||
else {
|
||||
result.add(e);
|
||||
}
|
||||
});
|
||||
for (GraphEdge graphEdge : ContainerUtil.concat(downDottedEdges, upDottedEdges)) {
|
||||
assert graphEdge.getType() == GraphEdgeType.DOTTED;
|
||||
addedEdges.addAll(expandEdge(graphEdge));
|
||||
}
|
||||
|
||||
return addedEdges;
|
||||
return result;
|
||||
}
|
||||
|
||||
public static class WorkingLinearBekGraph extends LinearBekGraph {
|
||||
|
||||
Reference in New Issue
Block a user