mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[vcs-log] create default implementation for changes
This commit is contained in:
+85
-1
@@ -41,8 +41,92 @@ public interface GraphChanges<NodeId> {
|
||||
@Nullable
|
||||
NodeId downNodeId();
|
||||
@Nullable
|
||||
NodeId additionInfo();
|
||||
NodeId targetId();
|
||||
|
||||
boolean removed();
|
||||
}
|
||||
|
||||
class NodeImpl<NodeId> implements Node<NodeId> {
|
||||
@NotNull private final NodeId myNodeId;
|
||||
private final boolean myRemoved;
|
||||
|
||||
public NodeImpl(@NotNull NodeId nodeId, boolean removed) {
|
||||
myNodeId = nodeId;
|
||||
myRemoved = removed;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public NodeId getNodeId() {
|
||||
return myNodeId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removed() {
|
||||
return myRemoved;
|
||||
}
|
||||
}
|
||||
|
||||
class EdgeImpl<NodeId> implements Edge<NodeId> {
|
||||
@Nullable private final NodeId myUpNodeId;
|
||||
@Nullable private final NodeId myDownNodeId;
|
||||
@Nullable private final NodeId myTargetId;
|
||||
private final boolean myRemoved;
|
||||
|
||||
public EdgeImpl(@Nullable NodeId upNodeId, @Nullable NodeId downNodeId, @Nullable NodeId targetId, boolean removed) {
|
||||
myUpNodeId = upNodeId;
|
||||
myDownNodeId = downNodeId;
|
||||
myTargetId = targetId;
|
||||
myRemoved = removed;
|
||||
}
|
||||
|
||||
public EdgeImpl(NodeId upNodeId, NodeId downNodeId, boolean removed) {
|
||||
this(upNodeId, downNodeId, null, removed);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public NodeId upNodeId() {
|
||||
return myUpNodeId;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public NodeId downNodeId() {
|
||||
return myDownNodeId;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public NodeId targetId() {
|
||||
return myTargetId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removed() {
|
||||
return myRemoved;
|
||||
}
|
||||
}
|
||||
|
||||
class GraphChangesImpl<NodeId> implements GraphChanges<NodeId> {
|
||||
private final Collection<Node<NodeId>> myChangedNodes;
|
||||
private final Collection<Edge<NodeId>> myChangedEdges;
|
||||
|
||||
public GraphChangesImpl(Collection<Node<NodeId>> changedNodes, Collection<Edge<NodeId>> changedEdges) {
|
||||
myChangedNodes = changedNodes;
|
||||
myChangedEdges = changedEdges;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<Node<NodeId>> getChangedNodes() {
|
||||
return myChangedNodes;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<Edge<NodeId>> getChangedEdges() {
|
||||
return myChangedEdges;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+9
-53
@@ -68,8 +68,9 @@ public class LinearBekController extends CascadeLinearGraphController {
|
||||
if (graphElement instanceof GraphEdge) {
|
||||
GraphEdge edge = (GraphEdge)graphElement;
|
||||
if (edge.getType() == GraphEdgeType.DOTTED) {
|
||||
return new LinearGraphAnswer(calculateChanges(edge, myCompiledGraph.expandEdge(edge),
|
||||
getDelegateLinearGraphController().getCompiledGraph()), null, null, null);
|
||||
return new LinearGraphAnswer(
|
||||
calculateChanges(edge, myCompiledGraph.expandEdge(edge), getDelegateLinearGraphController().getCompiledGraph()), null, null,
|
||||
null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -148,60 +149,15 @@ public class LinearBekController extends CascadeLinearGraphController {
|
||||
private static GraphChanges<Integer> calculateChanges(GraphEdge expanded, Collection<GraphEdge> addedEdges, LinearGraph delegateGraph) {
|
||||
final Set<GraphChanges.Edge<Integer>> edgeChanges = ContainerUtil.newHashSet();
|
||||
|
||||
edgeChanges.add(new ChangedEdge(delegateGraph.getNodeId(expanded.getUpNodeIndex()), delegateGraph.getNodeId(expanded.getDownNodeIndex()), true));
|
||||
edgeChanges.add(new GraphChanges.EdgeImpl<Integer>(delegateGraph.getNodeId(expanded.getUpNodeIndex()),
|
||||
delegateGraph.getNodeId(expanded.getDownNodeIndex()), null, true));
|
||||
|
||||
for (GraphEdge edge : addedEdges) {
|
||||
edgeChanges.add(new ChangedEdge(delegateGraph.getNodeId(edge.getUpNodeIndex()), delegateGraph.getNodeId(edge.getDownNodeIndex()), false));
|
||||
edgeChanges.add(
|
||||
new GraphChanges.EdgeImpl<Integer>(delegateGraph.getNodeId(edge.getUpNodeIndex()), delegateGraph.getNodeId(edge.getDownNodeIndex()),
|
||||
false));
|
||||
}
|
||||
|
||||
return new GraphChanges<Integer>() {
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<Node<Integer>> getChangedNodes() {
|
||||
return Collections.emptySet();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<Edge<Integer>> getChangedEdges() {
|
||||
return edgeChanges;
|
||||
}
|
||||
};
|
||||
return new GraphChanges.GraphChangesImpl<Integer>(Collections.<GraphChanges.Node<Integer>>emptySet(), edgeChanges);
|
||||
}
|
||||
|
||||
private static class ChangedEdge implements GraphChanges.Edge<Integer> {
|
||||
private final int myUpNodeId;
|
||||
private final int myDownNodeId;
|
||||
private final boolean myRemoved;
|
||||
|
||||
private ChangedEdge(int upNodeId, int downNodeId, boolean removed) {
|
||||
myUpNodeId = upNodeId;
|
||||
myDownNodeId = downNodeId;
|
||||
myRemoved = removed;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Integer upNodeId() {
|
||||
return myUpNodeId;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Integer downNodeId() {
|
||||
return myDownNodeId;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Integer additionInfo() {
|
||||
return null; // TODO huh?
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removed() {
|
||||
return myRemoved;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user