private void CommandAddNode_Executed(object sender, ExecutedRoutedEventArgs e) { AddNodeParameters p = e.Parameter as AddNodeParameters; if (p.Method == null) { p.Method = methodEditor.Method.Method; Point mouseLoc = Mouse.GetPosition(methodEditor.methodEditorWindow); p.PositionX = mouseLoc.X; p.PositionY = mouseLoc.Y; } // Make sure the node will on the canvas if (p.PositionX < 0) { p.PositionX = 0; } if (p.PositionY < 0) { p.PositionY = 0; } object[] parameters = new object[] { p.Method }.Concat(p.ConstructorParameters).ToArray(); Node node = Activator.CreateInstance(p.NodeType, parameters) as Node; node.PositionX = p.PositionX; node.PositionY = p.PositionY; methodEditor.grid.ContextMenu.IsOpen = false; }
private void CommandAddNode_Executed(object sender, ExecutedRoutedEventArgs e) { AddNodeParameters p = e.Parameter as AddNodeParameters; if (p.Method == null) { p.Method = methodEditor.Method.Method; Point mouseLoc = Mouse.GetPosition(methodEditor.methodEditorWindow.drawCanvas); p.PositionX = mouseLoc.X - mouseLoc.X % MethodEditorControl.GridCellSize; p.PositionY = mouseLoc.Y - mouseLoc.Y % MethodEditorControl.GridCellSize; } // Make sure the node will on the canvas if (p.PositionX < 0) { p.PositionX = 0; } if (p.PositionY < 0) { p.PositionY = 0; } object[] parameters = new object[] { p.Method }.Concat(p.ConstructorParameters).ToArray(); Node node = Activator.CreateInstance(p.NodeType, parameters) as Node; node.PositionX = p.PositionX; node.PositionY = p.PositionY; // If the node was created as part of a suggestion, connect it // to the relevant node pin. if (methodEditor?.SuggestionPin != null) { methodEditor.SuggestionPin.ConnectRelevant(node); methodEditor.SuggestionPin = null; } methodEditor.grid.ContextMenu.IsOpen = false; }