private DiagramOperationResult RemoveNodeCore(ModelNodeId nodeId, DiagramOperationResult diagramOperationResult) { return(TryGetNode(nodeId) .Match( some => RemoveChildNodes(some, RemoveAllConnectorsOfNode(some, diagramOperationResult)) .Remove(some) .Add(new DiagramNodeRemovedEvent(some)), () => diagramOperationResult )); }
private DiagramEvent CreateDiagramEvent(DiagramOperationResult diagramOperationResult) { if (!diagramOperationResult.Events.Any()) { return(DiagramEvent.None(this)); } var newDiagram = CreateInstance(Model, diagramOperationResult.Nodes, diagramOperationResult.Connectors); return(new DiagramEvent(newDiagram, diagramOperationResult.Events)); }
private DiagramOperationResult RemoveConnectorCore(ModelRelationshipId relationshipId, DiagramOperationResult diagramOperationResult) { return(TryGetConnector(relationshipId) .Match( some => diagramOperationResult .Remove(some) .Add(new DiagramConnectorRemovedEvent(some)), () => diagramOperationResult )); }
private DiagramOperationResult RemoveAllConnectorsOfNode([NotNull] IDiagramNode node, DiagramOperationResult diagramOperationResult) { return(_allShapesGraph.GetAllEdges(node.Id) .Aggregate(diagramOperationResult, (current, connector) => RemoveConnectorCore(connector.Id, current))); }
private DiagramOperationResult RemoveChildNodes([NotNull] IDiagramNode node, DiagramOperationResult diagramOperationResult) { return(GetChildNodes(node.Id) .Aggregate(diagramOperationResult, (current, childNode) => RemoveNodeCore(childNode.Id, current))); }