private void RecreateNodesOnDiagram(Diagram diagram, Diagram outerDiagram, DiagramState diagramState, DiagramNode diagramNode) { AddNodesToDiagram(diagram, diagramState.Nodes); RewireNodes(diagram, diagramState.InternalWireStates); CreateInputs(diagram, outerDiagram, diagramState.InputWireStates, diagramNode); CreateOutputs(diagram, outerDiagram, diagramState.OutputWireStates, diagramNode); }
public virtual IEnumerator <ccr.ITask> ReplaceHandler(Replace replace) { _state = replace.Body; replace.ResponsePort.Post(dssp.DefaultReplaceResponseType.Instance); base.SendNotification <Replace>(_subMgr, replace); yield break; }
protected override void Start() { // If there was no initial state partner, then the service state will be null. if (_state == null) { // The state MUST be created before the service starts processing messages. _state = new DiagramState(); } // The rest of the start process requires the ability to wait for responses from // services and from the start handler (if any). So execution now proceeds in an // iterator function. SpawnIterator(DoStart); }
/// <inheritdoc/> public override void StopInteraction(DiagramInteractionEventArguments interaction) { var diagram = interaction.Diagram; var interactionRectangle = GetDiagramPontsInteractionRectangle(diagram); DiagramState diagramState = SaveDiagramState(diagram, interactionRectangle); DeleteNodes(diagram, diagramState.Nodes); var diagramNode = _nodeProvider.CreateNodeFromName(typeof(DiagramNode).FullName) as DiagramNode; diagram.AddNode(diagramNode); diagramNode.WhenResolved(d => RecreateNodesOnDiagram(d, diagram, diagramState, diagramNode)); Point nodePosition = CalculateNodePositionToCenterInLasso(interactionRectangle, diagramNode); diagramNode.X = nodePosition.X; diagramNode.Y = nodePosition.Y; }