/// <inheritdoc/> public override void StartInteraction(DiagramInteractionEventArguments interaction) { var diagram = interaction.Diagram; var mousePosition = interaction.MousePosition; RiftStartDiagramPoint = diagram.GetDiagramPointFromViewPoint(mousePosition); Mode = RiftMode.None; X = mousePosition.X; Y = mousePosition.Y; RiftWidth = 0; RiftHeight = 0; _undoRiftCommand = new MoveNodesToCurrentPositionCommand(_nodesBeingRifted); }
private void CheckIfRiftShouldStart(double riftDeltaX, double riftDeltaY) { if (Math.Abs(riftDeltaX) > MinimimDistanceToStartRift) { Mode = riftDeltaX > 0 ? RiftMode.Right : RiftMode.Left; } else if (Math.Abs(riftDeltaY) > MinimimDistanceToStartRift) { Mode = riftDeltaY > 0 ? RiftMode.Down : RiftMode.Up; } }
/// <inheritdoc/> public override void StopInteraction(DiagramInteractionEventArguments interaction) { Mode = RiftMode.None; _lastRiftDeltaX = 0; _lastRiftDeltaY = 0; if (_nodesBeingRifted == null) { return; } if (!interaction.IsCtrlKeyPressed) { foreach (var node in _nodesBeingRifted) { node.X = interaction.Diagram.SnapToGrid(node.X); node.Y = interaction.Diagram.SnapToGrid(node.Y); } } var doRiftCommand = new MoveNodesToCurrentPositionCommand(_nodesBeingRifted); _transactor.Transact(doRiftCommand, _undoRiftCommand, null); _nodesBeingRifted = null; }