void ConnectToWaitingBranche(ICanvasNode node)
        {
            if (!(node is Condition.Node) || !(_waitingBranch is Condition.ConditionBranch))
            {
                _setFormButtonAsConnected();
                Edge e = new Edge();
                node.ClipInputEdge(e);
                _waitingBranch.ClipOutputEdge(e);
                _waitingBranch = null;

                if (_waitingNode != _selectedNode)
                {
                    _waitingNode.Deselect();
                }
                else
                {
                    _waitingNode.DrawBorder(BorderStyle.Selected);
                }
                _waitingNode = null;
                _escapeButtonAbortingState = null;
            }
            else
            {
                if (_escapeButtonAbortingState != null)
                {
                    _escapeButtonAbortingState();
                }
                AbortWaiting();
            }
        }
 void SelectNode(ICanvasNode node)
 {
     if (_selectedNode != null && _waitingBranch == null)
     {
         _selectedNode.Deselect();
     }
     node.Select();
     _selectedNode = node;
 }
        string NodeToString(ICanvasNode node)
        {
            string result = "";

            result += _startGroup;
            result += node.ID.ToString();
            result += TypeSpecificString(node);
            result += _endGroup;
            return(result);
        }
 string TypeSpecificString(ICanvasNode node)
 {
     if (node is Story.Node)
     {
         return(StoryNodeToString((Story.Node)node));
     }
     else
     {
         return(ConditionNodeToString((Condition.Node)node));
     }
 }
 public void RemoveNode(ICanvasNode node)
 {
     node.Clean();
     if (_selectedNode == node)
     {
         _selectedNode = null;
     }
     TurnOffPropertyWindow();
     canvas.Children.Remove((UIElement)node);
     _nodes.Remove(node);
 }
 public void HandleNodeClick(ICanvasNode node)
 {
     if (_waitingBranch == null)
     {
         SelectNode(node);
     }
     else
     {
         ConnectToWaitingBranche(node);
     }
 }
 public void SetAsWaiting(DockBranch b, Action a, Action a2)
 {
     _setFormButtonAsConnected = a;
     if (_escapeButtonAbortingState != null)
     {
         _escapeButtonAbortingState();
         _waitingNode.Deselect();
     }
     _escapeButtonAbortingState = a2;
     _waitingBranch             = b;
     _selectedNode.SelectAsWaiting();
     _waitingNode = _selectedNode;
 }
        public void AbortWaiting()
        {
            _setFormButtonAsConnected = null;
            _waitingBranch            = null;

            if (_waitingNode != _selectedNode)
            {
                _waitingNode.Deselect();
            }
            else
            {
                _waitingNode.DrawBorder(BorderStyle.Selected);
            }

            _waitingNode = null;
            _escapeButtonAbortingState = null;
        }
 void AddNode(ICanvasNode node)
 {
     _nodes.Add(node);
     canvas.Children.Add((UIElement)node);
 }