private void ProcessDiagramChange(DiagramShapeEventBase diagramShapeEvent, IModel model, IDiagram diagram) { switch (diagramShapeEvent) { case DiagramNodeAddedEvent diagramNodeAddedEvent: var modelNode = diagramNodeAddedEvent.NewNode.ModelNode; ShowModelRelationshipsIfBothEndsAreVisible(modelNode, model, diagram); break; case DiagramNodeRemovedEvent _: // TODO: optimize: should check only surrounding nodes of the deleted one (not all in diagram) foreach (var diagramNode in diagram.Nodes) { ShowModelRelationshipsIfBothEndsAreVisible(diagramNode.ModelNode, model, diagram); } break; case DiagramConnectorAddedEvent _: HideRedundantConnectors(diagram); break; // DiagramConnectorRemovedEvent is not handled // because that would put back removed connectors immediately // (because nodes are removed after connectors) } }
private void DispatchDiagramChangeEvent(DiagramShapeEventBase diagramShapeEvent) { switch (diagramShapeEvent) { case DiagramNodeAddedEvent nodeAddedEvent: AddNode(nodeAddedEvent.NewNode); break; case DiagramNodeRemovedEvent nodeRemovedEvent: RemoveNode(nodeRemovedEvent.OldNode); break; case DiagramConnectorAddedEvent connectorAddedEvent: AddConnector(connectorAddedEvent.NewConnector); break; case DiagramConnectorRemovedEvent connectorRemovedEvent: RemoveConnector(connectorRemovedEvent.OldConnector); break; case DiagramConnectorRouteChangedEvent diagramConnectorRouteChangedEvent: UpdateConnectorRoute(diagramConnectorRouteChangedEvent.NewConnector); break; case DiagramNodeChangedEvent diagramNodeChangedEvent: UpdateNode(diagramNodeChangedEvent.NewNode); break; } }
private void ProcessDiagramChange(DiagramShapeEventBase diagramShapeEvent) { if (diagramShapeEvent is DiagramNodeAddedEvent diagramNodeAddedEvent) { RemoveModelNode(diagramNodeAddedEvent.NewNode.Id); } }
public static DiagramEvent Create([NotNull] IDiagram diagram, DiagramShapeEventBase shapeEvent = null) { var shapeEvents = shapeEvent == null ? Enumerable.Empty <DiagramShapeEventBase>() : new[] { shapeEvent }; return(new DiagramEvent(diagram, shapeEvents)); }
private void ProcessDiagramChange(DiagramShapeEventBase diagramShapeEvent) { if (diagramShapeEvent is DiagramNodeChangedEvent diagramNodeChangedEvent && DiagramNodeIdEqualityComparer.Instance.Equals(diagramNodeChangedEvent.NewNode, DiagramNode)) { DiagramShape = diagramNodeChangedEvent.NewNode; PopulateFromDiagramNode(diagramNodeChangedEvent.NewNode); } }
private void ProcessDiagramChange(DiagramShapeEventBase diagramShapeEvent) { if (diagramShapeEvent is DiagramConnectorRouteChangedEvent diagramConnectorRouteChangedEvent && DiagramConnectorIdEqualityComparer.Instance.Equals(diagramConnectorRouteChangedEvent.NewConnector, DiagramConnector)) { DiagramShape = diagramConnectorRouteChangedEvent.NewConnector; RoutePoints = diagramConnectorRouteChangedEvent.NewConnector.Route.ToWpf(); } }
private void DispatchDiagramEvent(DiagramShapeEventBase diagramShapeEvent) { switch (diagramShapeEvent) { case DiagramNodeChangedEvent @event when @event.ChangedMember == DiagramNodeMember.Position: FollowDiagramNode(@event.OldNode.Id); break; } }
private void ProcessShapeEvent([NotNull] DiagramShapeEventBase shapeEvent) { switch (shapeEvent) { case DiagramNodeAddedEvent diagramNodeAddedEvent: ShowParentNode(diagramNodeAddedEvent.NewNode); break; } }
private static bool IsLayoutTriggeringChange(DiagramShapeEventBase diagramShapeEvent) { switch (diagramShapeEvent) { case DiagramNodeChangedEvent nodeChangedEvent when nodeChangedEvent.ChangedMember.In(DiagramMembersAffectedByLayout): case DiagramConnectorRouteChangedEvent _: return(false); default: return(true); } }
private static ModelNodeId?GetParentId( [NotNull] IDiagram oldDiagram, [NotNull] IDiagram newDiagram, [NotNull] DiagramShapeEventBase diagramShapeEvent) { return(diagramShapeEvent switch { DiagramNodeAddedEvent i => GetParentId(i.NewNode), DiagramNodeChangedEvent i => GetParentId(i.NewNode), DiagramNodeRemovedEvent i => GetParentId(i.OldNode), DiagramConnectorAddedEvent i => GetParentId(i.NewConnector, newDiagram), DiagramConnectorRouteChangedEvent i => GetParentId(i.NewConnector, newDiagram), DiagramConnectorRemovedEvent i => GetParentId(i.OldConnector, oldDiagram), _ => throw new Exception($"Unexpected DiagramShapeEvent: {diagramShapeEvent}") });
public DiagramOperationResult Add(DiagramShapeEventBase @event) { return(new DiagramOperationResult(Nodes, Connectors, Events.Add(@event))); }