From ab18e955ca68dcb98393a00fb498a6efaa44ab55 Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Sun, 8 Feb 2015 00:38:09 +0300 Subject: [PATCH] [vcs-log] new meaning to collapse and expand buttons in linear bek graph --- .../graph/linearBek/LinearBekController.java | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekController.java b/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekController.java index e3c9c8342633..044bd777b551 100644 --- a/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekController.java +++ b/platform/vcs-log/graph/src/com/intellij/vcs/log/graph/linearBek/LinearBekController.java @@ -33,7 +33,10 @@ import com.intellij.vcs.log.graph.utils.LinearGraphUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Set; public class LinearBekController extends CascadeLinearGraphController { private static final Logger LOG = Logger.getInstance(LinearBekController.class); @@ -67,7 +70,8 @@ public class LinearBekController extends CascadeLinearGraphController { GraphEdge edge = (GraphEdge)graphElement; if (edge.getType() == GraphEdgeType.DOTTED) { return new LinearGraphAnswer(GraphChangesUtil.edgesReplaced(Collections.singleton(edge), myCompiledGraph.expandEdge(edge), - getDelegateLinearGraphController().getCompiledGraph()), null, null, null); + getDelegateLinearGraphController().getCompiledGraph()), null, null, + null); } } else if (graphElement instanceof GraphNode) { @@ -93,6 +97,39 @@ public class LinearBekController extends CascadeLinearGraphController { } } } + else if (action.getType() == GraphAction.Type.BUTTON_COLLAPSE) { + return new LinearGraphAnswer(GraphChangesUtil.SOME_CHANGES, null, null, null) { + @Nullable + @Override + public Runnable getGraphUpdater() { + return new Runnable() { + @Override + public void run() { + myLinearBekGraphBuilder.collapseAll(); + } + }; + } + }; + } + else if (action.getType() == GraphAction.Type.BUTTON_EXPAND) { + return new LinearGraphAnswer(GraphChangesUtil.SOME_CHANGES, null, null, null) { + @Nullable + @Override + public Runnable getGraphUpdater() { + return new Runnable() { + @Override + public void run() { + Set allEdges = myCompiledGraph.myDottedEdges.getEdges(); + for (GraphEdge e : allEdges) { + if (myCompiledGraph.myDottedEdges.hasEdge(e.getUpNodeIndex(), e.getDownNodeIndex())) { + myCompiledGraph.expandEdge(e); + } + } + } + }; + } + }; + } return null; }