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); }
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); }