private void HighlightList(IList value, string name, bool addAnnotation) { for (int i = 0; i < value.Count; ++i) { if (value[i] is IGraphElement) { HighlightSingleValue(value[i], name + "[" + i + "]", addAnnotation); } if (value[i] is INode && i >= 1) { if (addAnnotation) { ycompClient.AddEdge(name + i, name + "[->]", (INode)value[i - 1], (INode)value[i]); } else { ycompClient.DeleteEdge(name + i); } } } }
// applies changes recorded so far, leaving a graph without visible changes behind (e.g. no annotations) public void ApplyChanges(YCompClient ycompClient) { foreach (INode node in addedNodes.Keys) { ycompClient.ChangeNode(node, null); ycompClient.AnnotateElement(node, null); } foreach (IEdge edge in addedEdges.Keys) { ycompClient.ChangeEdge(edge, null); ycompClient.AnnotateElement(edge, null); } foreach (String edgeName in deletedEdges) { ycompClient.DeleteEdge(edgeName); } foreach (String nodeName in deletedNodes) { ycompClient.DeleteNode(nodeName); } foreach (INode node in retypedNodes.Keys) { ycompClient.ChangeNode(node, null); } foreach (IEdge edge in retypedEdges.Keys) { ycompClient.ChangeEdge(edge, null); } foreach (INode node in annotatedNodes.Keys) { ycompClient.AnnotateElement(node, null); } foreach (IEdge edge in annotatedEdges.Keys) { ycompClient.AnnotateElement(edge, null); } }