private void CallInsertNode()
 {
     
     int key = 0;
     if(!int.TryParse(AddNodeValue, out key))
     {
         System.Windows.MessageBox.Show("Invalid key to be inserted\nHint: Try an integer");
     }
     else if (!(selectedNodes != null && selectedNodes.Count > 0)) {
         System.Windows.MessageBox.Show("No node or tree selected");
     }
     else
     {
         Tree tree = new Tree(selectedNodes, Lines);
         if (tree.isValidBST())
         {
             NodeViewModel newNode = new BSTViewModel(new BST() { X = 20, Y = 20, TextOne = key.ToString()});
         newNode.Diameter = 50;
             undoRedo.InsertInUndoRedo(new InsertNodeInTreeCommand(tree, Nodes, selectedNodes, newNode, Lines));
     }
     }
     
 }
 private void CallRemoveNodeInTree()
 {
     Tree tree = new Tree(selectedNodes,Lines);
     Tree wholeTree = new Tree(tree.getWholeTree(),Lines);
     if (selectedNodes == null || selectedNodes.Count != 1)
         System.Windows.MessageBox.Show("You have to mark excactly one node");
     else if (!wholeTree.isValidBST())
         System.Windows.MessageBox.Show("This tree is not valid");
     else
     {
         
         undoRedo.InsertInUndoRedo(new RemoveNodeInTreeCommand(tree, Nodes, selectedNodes, Lines));
     }        
 }