Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        private void KeyInputHandler(KeyEventArgs e, InteractionType type)
        {
            var interaction = new DiagramInteractionEventArguments(type)
            {
                Key = e.Key
            };

            DiagramInteractionManager.HandleDiagramInput(interaction, this);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
 /// <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);
         }
     }
 }
Beispiel #7
0
        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);
                }
            }
        }