/// <summary> /// Adds a node to the diagram interactively, allowing the user to move the mouse and click to choose the final position for the node. /// </summary> /// <param name="node">The node to add.</param> public void AddNodeInteractively(Node node) { AddNode(node); var interaction = new DiagramInteractionEventArguments(InteractionType.NodeInserted); DiagramInteractionManager.HandleDiagramInput(interaction, this); }
private void KeyInputHandler(KeyEventArgs e, InteractionType type) { var interaction = new DiagramInteractionEventArguments(type) { Key = e.Key }; DiagramInteractionManager.HandleDiagramInput(interaction, this); }
private void KeyInputHandler(IInputElement sender, KeyEventArgs e, InteractionType type) { var mousePosition = Mouse.GetPosition(sender); var interaction = new DiagramInteractionEventArguments(type) { MousePosition = mousePosition, Key = e.Key }; DiagramInteractionManager.HandleDiagramInput(interaction, this); }
public void AddNode(Node node) { if (node.Model == null) { throw new InvalidOperationException("Can not add a node to the diagram before it has been initialized"); } Model.AddNode(node.Model); AddNodeViewModel(node); var interaction = new DiagramInteractionEventArguments(InteractionType.NodeInserted); DiagramInteractionManager.HandleDiagramInput(interaction, this); }
private void MouseInputHandler(object sender, MouseEventArgs e, InteractionType interactionType) { var relativeMousePosition = e.GetPosition((IInputElement)sender); var interaction = new DiagramInteractionEventArguments(interactionType) { MousePosition = relativeMousePosition }; if (e is MouseWheelEventArgs mouseWheelEventArguments) { interaction.MouseWheelDelta = mouseWheelEventArguments.Delta; } DiagramInteractionManager.HandleDiagramInput(interaction, this); }
/// <summary> /// Creates a new instance of <see cref="Diagram"/>. /// </summary> /// <param name="diagram">The model.</param> /// <param name="nodeProvider">A node provider to create nodes.</param> /// <param name="diagramInteractors">A list of interactors to enable on this diagram.</param> public Diagram( DiagramModel diagram, INodeProvider nodeProvider, IEnumerable <DiagramInteractor> diagramInteractors) { DiagramInteractionManager = new DiagramInteractionManager(() => diagramInteractors); ExecuteWhenViewLoaded(() => Keyboard.Focus(View)); DiagramModel = diagram; DiagramModel.PropertyChanged += DiagramOnPropertyChanged; if (diagram.Nodes != null) { foreach (var nodeModel in diagram.Nodes) { var viewModel = nodeProvider.CreateNodeFromModel(nodeModel); AddNodeViewModel(viewModel); } } }
public Diagram( DiagramModel diagram, IProvideNodes nodeProvider, IEnumerable <DiagramInteractor> diagramInteractors) { _nodeProvider = nodeProvider ?? throw new ArgumentNullException(nameof(nodeProvider)); DiagramInteractionManager = new DiagramInteractionManager(() => diagramInteractors); Model = diagram; Model.PropertyChanged += DiagramOnPropertyChanged; if (diagram.Nodes != null) { foreach (var nodeModel in diagram.Nodes) { var viewModel = nodeProvider.LoadNodeViewModelFromNode(nodeModel); nodeModel.SetTerminalsPropertyChanged(); AddNodeViewModel(viewModel); } } }