public override bool OnMouseMove(MouseEditorEventArgs args)
        {
            removeAdorner();

            // Find an element under the mouse with NodeInput DataContext
            var feWithNodeInputDC = VisualTreeUtils.HitTestWithDataContext <NodeInput>(nodeEditor, args.Position);

            if (feWithNodeInputDC != null)
            {
                toNodeInput = feWithNodeInputDC.DataContext as NodeInput;
                toNode      = VisualTreeUtils.GetDataContextOnParents <Node>(feWithNodeInputDC);
                previewConnectionPath.DataContext = new Connection(node, nodeOutput, toNode, toNodeInput);

                // Create the adorner
                feWithNodeInputDC = VisualTreeUtils.GetLastParentWithDataContextOfType <NodeInput>(feWithNodeInputDC);
                mAdorner          = new SimpleCircleAdorner(feWithNodeInputDC);
                var myAdornerLayer = AdornerLayer.GetAdornerLayer(feWithNodeInputDC);
                myAdornerLayer.Add(mAdorner);
            }
            else
            {
                toNode      = null;
                toNodeInput = null;
                previewConnectionPath.DataContext = new Connection(node, nodeOutput, null, null);
            }

            nodeEditor.InvalidatePreview();

            return(true);
        }
Beispiel #2
0
        public override bool OnMouseButtonDown(MouseButtonEditorEventArgs args)
        {
            if (args.Button == MouseButton.Left)
            {
                mIsDragging    = true;
                mDragLastPoint = args.Position;

                var mNodeFEToDrag = VisualTreeUtils.HitTestWithDataContext <Node>(nodeEditor, args.Position);
                if (mNodeFEToDrag != null)
                {
                    var node = (Node)mNodeFEToDrag.DataContext;
                    nodeEditor.BeginInteraction(new MoveNodeHandler(nodeEditor, node, mDragLastPoint));
                }
            }
            else if (args.Button == MouseButton.Right)
            {
                mIsRightButtonDown = true;
            }

            return(true);
        }