/// <summary> /// redoes the editing /// </summary> public override void Redo() { base.Redo(); foreach (GeometryObject geomObj in movedObjects) { GeomNode node = geomObj as GeomNode; if (node != null) { GeometryGraphEditor.DragNode(node, Delta, GetRestoreData(node) as NodeRestoreData); foreach (GeomEdge edge in node.OutEdges) { GeometryGraphEditor.DragEdgeWithSource(Delta, edge, GetRestoreData(edge) as EdgeRestoreData); } foreach (GeomEdge edge in node.InEdges) { GeometryGraphEditor.DragEdgeWithTarget(Delta, edge, GetRestoreData(edge) as EdgeRestoreData); } foreach (GeomEdge edge in node.SelfEdges) { GeometryGraphEditor.DragEdge(Delta, edge, GetRestoreData(edge) as EdgeRestoreData, movedObjects); } } else { GeomEdge edge = geomObj as GeomEdge; if (edge != null) { GeometryGraphEditor.DragEdge(Delta, edge, GetRestoreData(edge) as EdgeRestoreData, movedObjects); } else { GeomLabel label = geomObj as GeomLabel; if (label != null) { GeometryGraphEditor.DragLabel(label, Delta, (GetRestoreData(label) as LabelRestoreData).Center); } else { throw new System.NotImplementedException(); } } } } }
/// <summary> /// Undoes the editing /// </summary> public override void Undo() { base.Undo(); Point point = new Point(); foreach (GeometryObject geomObj in movedObjects) { GeomNode node = geomObj as GeomNode; if (node != null) { GeometryGraphEditor.DragNode(node, point, GetRestoreData(node) as NodeRestoreData); foreach (GeomEdge edge in node.Edges) { RestoreEdge(edge); } } else { GeomEdge edge = geomObj as GeomEdge; if (edge != null) { GeometryGraphEditor.DragEdge(point, edge, GetRestoreData(edge) as EdgeRestoreData, movedObjects); } else { GeomLabel label = geomObj as GeomLabel; if (label != null) { GeometryGraphEditor.DragLabel(label, point, (GetRestoreData(label) as LabelRestoreData).Center); } else { throw new System.NotImplementedException(); } } } } }