diff --git a/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekGraph.java b/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekGraph.java index cc6cb6702860..f795caf95d36 100644 --- a/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekGraph.java +++ b/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekGraph.java @@ -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 expandEdge(@NotNull final GraphEdge edge) { + Set 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 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 downDottedEdges = - ContainerUtil.filter(myHiddenEdges.getAdjacentEdges(tail, EdgeFilter.ALL), new Condition() { - @Override - public boolean value(GraphEdge graphEdge) { - return LinearGraphUtils.isEdgeDown(graphEdge, tail); - } - }); - List upDottedEdges = ContainerUtil.filter(myHiddenEdges.getAdjacentEdges(firstChild, EdgeFilter.ALL), new Condition() { - @Override - public boolean value(GraphEdge graphEdge) { - return LinearGraphUtils.isEdgeUp(graphEdge, firstChild); + List downDottedEdges = myHiddenEdges.getAdjacentEdges(tail, EdgeFilter.NORMAL_DOWN); + List 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 {