/// <summary>
        /// Initializes the connections based on the selected connection logic
        /// </summary>
        private void InitializeConnections()
        {
            IEnumerable <Node> selectedNodes = NodeEditor.GetSelectedNodes();

            switch (ConnectionLogic)
            {
            case ConnectionStyle.FIRST_SELECTED:
                selectedNodes = new Node[] { selectedNodes.FirstOrDefault() };
                break;

            case ConnectionStyle.LAST_SELECTED:
                selectedNodes = new Node[] { selectedNodes.LastOrDefault() };
                break;
            }

            foreach (Node node in selectedNodes)
            {
                if (node == null)
                {
                    continue;
                }

                Connector connector = ConnectorFactory(NodeEditor, node, NodeEditor.MouseNode);
                NodeEditor.AddConnector(connector);
                newConnections.Add(connector);
            }
        }
 /// <summary>
 /// Handles making the connection, whether it's starting a new
 /// one or completing the existing one
 /// </summary>
 /// <param name="selectedNode">The node to react to</param>
 private void MakeConnection(Node selectedNode)
 {
     if (startNode == null)
     {
         startNode  = selectedNode;
         connection = ConnectorFactory(NodeEditor, startNode, NodeEditor.MouseNode);
         NodeEditor.AddConnector(connection);
         NodeEditor.AddNode(startNode);
     }
     else
     {
         connection.RemoveNode(NodeEditor.MouseNode);
         connection.AddNode(selectedNode);
         startNode  = null;
         connection = null;
     }
 }