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;
        }
示例#2
0
        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;
        }