public override void ProcessInteraction(DiagramInteractionEventArguments interaction) { if (interaction.Type == InteractionType.MouseMoved) { SetEnd(interaction.MousePosition.X, interaction.MousePosition.Y); } }
public override void StopInteraction(DiagramInteractionEventArguments interaction) { if (ContextTerminal != null) { ContextTerminal.HighlightVisible = false; } }
public void HandleDiagramInput(DiagramInteractionEventArguments interaction, Diagram diagram) { interaction.Diagram = diagram; PutViewModelMouseIsOverInInteraction(interaction); PutKeyStatesInInteraction(interaction); SendInteractionToInteractors(interaction); }
public override void StartInteraction(DiagramInteractionEventArguments interaction) { _reachedMinimunMouseDeltaToStartPanning = false; StartMouseLocation = interaction.MousePosition; StartPanX = interaction.Diagram.PanX; StartPanY = interaction.Diagram.PanY; }
private void SendInteractionToActiveInteractions(DiagramInteractionEventArguments interaction) { var activeInteractors = ActiveDiagramInteractors.ToArray(); foreach (var activeInteractor in activeInteractors) { activeInteractor.ProcessInteraction(interaction); } }
public override void ProcessInteraction(DiagramInteractionEventArguments interaction) { if (interaction.Type == InteractionType.MouseMoved) { MoveInsertingNode(interaction.Diagram, interaction.MousePosition); interaction.Diagram.UpdateDiagramBoundingBox(); InsertingNodeViewModel.Visible = true; } }
private void StopActiveInteractionsThatShouldStop(DiagramInteractionEventArguments interaction) { var activeInteractors = ActiveDiagramInteractors.ToArray(); foreach (var activeInteractor in activeInteractors) { TryStoppingInteraction(interaction, activeInteractor); } }
public override void ProcessInteraction(DiagramInteractionEventArguments interaction) { if (interaction.Type == InteractionType.MouseMoved) { var diagram = interaction.Diagram; var mousePosition = interaction.MousePosition; ProcessMouseMoved(diagram, mousePosition); } }
public override bool ShouldStartInteraction(DiagramInteractionEventArguments interaction) { if ((interaction.Type == InteractionType.LeftMouseDown || interaction.Type == InteractionType.MouseMoved) && interaction.ViewModelUnderMouse is Node node) { if (!node.ResizeEnabled) { return(false); } var mousePosition = interaction.MousePosition; var diagram = interaction.Diagram; var absoluteLeft = diagram.GetViewPointFromDiagramPointX(node.X + Diagram.NodeBorderWidth); var absoluteTop = diagram.GetViewPointFromDiagramPointY(node.Y + Diagram.NodeBorderWidth); var absoluteRight = diagram.GetViewPointFromDiagramPointX(node.X + node.Width + Diagram.NodeBorderWidth); var absoluteBottom = diagram.GetViewPointFromDiagramPointY(node.Y + node.Height + Diagram.NodeBorderWidth); var topLeftCorner = new Point(absoluteLeft, absoluteTop); var topRightCorner = new Point(absoluteRight, absoluteTop); var bottomLeftCorner = new Point(absoluteLeft, absoluteBottom); var bottomRightCorner = new Point(absoluteRight, absoluteBottom); var scaledMargin = ResizeBorderMargin * diagram.Zoom; if (mousePosition.X > absoluteLeft && mousePosition.X < absoluteRight) { if (mousePosition.Y > absoluteTop && mousePosition.Y < absoluteBottom) { if (scaledMargin > DistanceFromPointToLine(mousePosition, topLeftCorner, topRightCorner)) { Mode = ResizeMode.Top; Mouse.SetCursor(Cursors.SizeNS); } else if (scaledMargin > DistanceFromPointToLine(mousePosition, topRightCorner, bottomRightCorner)) { Mode = ResizeMode.Right; Mouse.SetCursor(Cursors.SizeWE); } else if (scaledMargin > DistanceFromPointToLine(mousePosition, bottomRightCorner, bottomLeftCorner)) { Mode = ResizeMode.Bottom; Mouse.SetCursor(Cursors.SizeNS); } else if (scaledMargin > DistanceFromPointToLine(mousePosition, bottomLeftCorner, topLeftCorner)) { Mode = ResizeMode.Left; Mouse.SetCursor(Cursors.SizeWE); } else { return(false); } return(interaction.Type == InteractionType.LeftMouseDown); } } } return(false); }
public override void ProcessInteraction(DiagramInteractionEventArguments interaction) { var diagram = interaction.Diagram; var selectedNodes = diagram.Nodes.Where(n => n.IsSelected); selectedNodes.ForEach(diagram.RemoveNode); if (!diagram.Nodes.Any()) { diagram.ResetPanAndZoom(); } }
private static void PutViewModelMouseIsOverInInteraction(DiagramInteractionEventArguments interaction) { var elementMouseIsOver = Mouse.DirectlyOver as FrameworkElement; if (!(elementMouseIsOver?.DataContext is Screen viewModelMouseIsOver)) { var contentPresenter = elementMouseIsOver?.DataContext as ContentPresenter; viewModelMouseIsOver = contentPresenter?.DataContext as Screen; } interaction.ViewModelUnderMouse = viewModelMouseIsOver; }
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; }
private bool TryStoppingInteraction(DiagramInteractionEventArguments interaction, DiagramInteractor activeInteractor) { var didInteractionStop = activeInteractor.ShouldStopInteraction(interaction); if (didInteractionStop) { activeInteractor.StopInteraction(interaction); ActiveDiagramInteractors.Remove(activeInteractor); ActiveDiagramInteractorNames.Remove(activeInteractor.GetType().Name); } return(didInteractionStop); }
public override void StopInteraction(DiagramInteractionEventArguments interaction) { if (!interaction.IsCtrlKeyPressed) { foreach (var node in interaction.Diagram.Nodes.Where(n => n.IsSelected)) { node.X = interaction.Diagram.SnapToGrid(node.X); node.Y = interaction.Diagram.SnapToGrid(node.Y); } } interaction.Diagram.ShowSnapGrid = false; }
private void SendInteractionToInteractors(DiagramInteractionEventArguments interaction) { if (!ActiveDiagramInteractors.Any()) { StartAndProcessInteractionsThatShouldStart(interaction); } else { SendInteractionToActiveInteractions(interaction); StopActiveInteractionsThatShouldStop(interaction); } }
public override bool ShouldStartInteraction(DiagramInteractionEventArguments interaction) { if ((interaction.Type == InteractionType.LeftMouseDown) && interaction.ViewModelUnderMouse is Node node && !interaction.IsCtrlKeyPressed) { var mouseX = interaction.MousePosition.X; var mouseY = interaction.MousePosition.Y; var diagram = interaction.Diagram; return(IsMouseOverNodeBorder(node, mouseX, mouseY, diagram)); } return(false); }
public override void ProcessInteraction(DiagramInteractionEventArguments interaction) { var diagram = interaction.Diagram; var mousePosition = interaction.MousePosition; var diagramMousePoint = diagram.GetDiagramPointFromViewPoint(mousePosition); var riftDeltaX = diagramMousePoint.X - RiftStartDiagramPoint.X; var riftDeltaY = diagramMousePoint.Y - RiftStartDiagramPoint.Y; if (interaction.Type == InteractionType.MouseMoved) { ProcessMouseMoved(diagram, mousePosition, riftDeltaX, riftDeltaY); } }
public override void StopInteraction(DiagramInteractionEventArguments interaction) { if (interaction.Type == InteractionType.RightMouseDown) { interaction.Diagram.RemoveNode(InsertingNodeViewModel); } else { InsertingNodeViewModel.X = interaction.Diagram.SnapToGrid(InsertingNodeViewModel.X); InsertingNodeViewModel.Y = interaction.Diagram.SnapToGrid(InsertingNodeViewModel.Y); } InsertingNodeViewModel = null; interaction.Diagram.ShowSnapGrid = false; }
public override void ProcessInteraction(DiagramInteractionEventArguments interaction) { var diagram = interaction.Diagram; if (interaction.Type == InteractionType.MouseMoved) { var mousePosition = interaction.MousePosition; ProcessMouseMoved(diagram, mousePosition); } else if (interaction.Type == InteractionType.LeftMouseUp && !_reachedMinimunMouseDeltaToStartPanning) { ProcessMouseMouseUpAfterNotPanning(diagram); } }
public override void StopInteraction(DiagramInteractionEventArguments interaction) { if (!interaction.IsCtrlKeyPressed) { foreach (var node in interaction.Diagram.Nodes.Where(n => n.IsSelected)) { node.X = interaction.Diagram.SnapToGrid(node.X); node.Y = interaction.Diagram.SnapToGrid(node.Y); node.Width = interaction.Diagram.SnapToGrid(node.Width); node.Height = interaction.Diagram.SnapToGrid(node.Height); } } interaction.Diagram.ShowSnapGrid = false; Mouse.SetCursor(Cursors.Arrow); }
public override void ProcessInteraction(DiagramInteractionEventArguments interaction) { var diagram = interaction.Diagram; var mousePosition = interaction.MousePosition; var elementUnderMouse = interaction.ViewModelUnderMouse; if (interaction.Type == InteractionType.MouseMoved) { ProcessMouseMove(diagram, mousePosition, elementUnderMouse); } else if (interaction.Type == InteractionType.LeftMouseDown) { ProcessLeftMouseDown(diagram, elementUnderMouse); } }
private void StartAndProcessInteractionsThatShouldStart(DiagramInteractionEventArguments interaction) { foreach (var interactor in WeightedDiagramInteractors) { if (interactor.ShouldStartInteraction(interaction)) { interactor.StartInteraction(interaction); ActiveDiagramInteractors.Add(interactor); ActiveDiagramInteractorNames.Add(interactor.GetType().Name); interactor.ProcessInteraction(interaction); if (!TryStoppingInteraction(interaction, interactor)) { break; } } } }
public override void StopInteraction(DiagramInteractionEventArguments interaction) { Mode = RiftMode.None; _lastRiftDeltaX = 0; _lastRiftDeltaY = 0; if (!interaction.IsCtrlKeyPressed) { foreach (var node in NodesBeingRifted) { node.X = interaction.Diagram.SnapToGrid(node.X); node.Y = interaction.Diagram.SnapToGrid(node.Y); } } NodesBeingRifted = null; }
public override void StopInteraction(DiagramInteractionEventArguments interaction) { var diagram = interaction.Diagram; var left = diagram.GetDiagramPointFromViewPointX(X); var top = diagram.GetDiagramPointFromViewPointY(Y); var right = diagram.GetDiagramPointFromViewPointX(X + Width); var bottom = diagram.GetDiagramPointFromViewPointY(Y + Height); foreach (var node in diagram.Nodes) { if (node.X > left && node.X + node.Width < right && node.Y > top && node.Y + node.Height < bottom) { node.IsSelected = true; } } }
public override void ProcessInteraction(DiagramInteractionEventArguments interaction) { if (interaction.Type == InteractionType.RightMouseDown) { _diagram = interaction.Diagram; var availableWidth = _diagram.View != null ? _diagram.View.RenderSize.Width : 0; var availableHeight = _diagram.View != null ? _diagram.View.RenderSize.Height : 0; X = Math.Min(interaction.MousePosition.X, availableWidth - NodeSelectorRightMargin); Y = Math.Min(interaction.MousePosition.Y, availableHeight - NodeSelectorBottomMargin); var viewModelUnderMouse = interaction.ViewModelUnderMouse; if (viewModelUnderMouse is Terminal terminal) { if (terminal.Model.Direction != Direction.West) { X += Terminal.TerminalHeight; } } ShowWithContextFilter(viewModelUnderMouse); } }
private void ProcessMouseUpInteraction(DiagramInteractionEventArguments interaction) { if (_mouseDownPoint.Equals(interaction.MousePosition)) { if (interaction.ViewModelUnderMouse is Diagram) { interaction.Diagram.UnselectNodes(); interaction.Diagram.UnselectTerminals(); } else if (interaction.ViewModelUnderMouse is Node pluginNode) { if (!pluginNode.IsSelected) { if (!interaction.IsCtrlKeyPressed) { interaction.Diagram.UnselectNodes(); } interaction.Diagram.UnselectTerminals(); pluginNode.IsSelected = true; } } } }
public override void ProcessInteraction(DiagramInteractionEventArguments interaction) { if (interaction.Type == InteractionType.LeftMouseDown) { ProcessMouseDownInteraction(interaction); } else if (interaction.Type == InteractionType.LeftMouseUp) { ProcessMouseUpInteraction(interaction); } if (interaction.ViewModelUnderMouse is Node pluginNode) { if (!pluginNode.IsSelected) { if (!interaction.IsCtrlKeyPressed) { interaction.Diagram.UnselectNodes(); } interaction.Diagram.UnselectTerminals(); pluginNode.IsSelected = true; } } }
public override bool ShouldStopInteraction(DiagramInteractionEventArguments interaction) { return(interaction.Type == InteractionType.LeftMouseUp); }
public override bool ShouldStartInteraction(DiagramInteractionEventArguments interaction) { return(interaction.Type == InteractionType.LeftMouseDown && interaction.IsShiftKeyPressed && interaction.ViewModelUnderMouse is Diagram); }
public override void StopInteraction(DiagramInteractionEventArguments interaction) { }