Ejemplo n.º 1
0
        private void UpdateNodeCore(
            ModelNodeId nodeId,
            [NotNull] Func <IDiagramNode, IDiagramNode> nodeMutatorFunc,
            DiagramNodeMember updatedMember)
        {
            if (!_nodes.ContainsKey(nodeId))
            {
                return;
            }

            var oldNode = _nodes[nodeId];
            var newNode = nodeMutatorFunc(oldNode);

            _nodes[newNode.Id] = newNode;

            _shapeEvents.Add(new DiagramNodeChangedEvent(oldNode, newNode, updatedMember));

            if (updatedMember.In(ParentNodeChildrenAreaSizeAffectingMembers))
            {
                UpdateParentNodeChildrenAreaSize(newNode);
            }

            if (updatedMember.In(AbsolutePositionAffectingMembers))
            {
                UpdateAbsolutePosition(newNode);
            }

            if (updatedMember.In(ChildrenAbsolutePositionAffectingMembers))
            {
                UpdateChildrenAbsolutePosition(newNode);
            }
        }
 public DiagramNodeChangedEvent(
     [NotNull] IDiagramNode oldNode,
     [NotNull] IDiagramNode newNode,
     DiagramNodeMember changedMember)
 {
     OldNode       = oldNode;
     NewNode       = newNode;
     ChangedMember = changedMember;
 }