public AutoBalanceCommand(Tree _tree, ObservableCollection<NodeViewModel> _nodes, List<NodeViewModel> _selectedNodes, ObservableCollection<LineViewModel> _lines) { tree = _tree; nodes = _nodes; lines = _lines; foreach (NodeViewModel n in _selectedNodes) { selectedNodes.Add(n); nodePositions.Add(new Point(n.X, n.Y)); foreach (LineViewModel l in lines) { if ((l.From == n || l.To == n) && !originalLines.Contains(l)) { originalLines.Add(l); } } } tree.nodes = new List<NodeViewModel>(); foreach(NodeViewModel n in selectedNodes) { tree.nodes.Add(n); } }
public RemoveNodeInTreeCommand(Tree _tree, ObservableCollection<NodeViewModel> _nodes, List<NodeViewModel> _selectedNodes, ObservableCollection<LineViewModel> _lines) { nodes = _nodes; lines = _lines; tree = _tree; foreach (NodeViewModel n in _selectedNodes) selNodes.Add(n); }
public InsertNodeInTreeCommand(Tree _tree, ObservableCollection<NodeViewModel> _nodes, List<NodeViewModel> _selectedNodes, NodeViewModel _newNode, ObservableCollection<LineViewModel> _lines) { tree = _tree; nodes = _nodes; lines = _lines; newNode = _newNode; foreach(NodeViewModel n in _selectedNodes) { selNodes.Add(n); } tree.nodes = selNodes; }
public void Execute() { Tree selTree = new Tree(selectedNodes, null); selTree.makePretty(false); }
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 CallMakePretty() { Tree tree = new Tree(selectedNodes,Lines); Tree wholeTree = new Tree(tree.getWholeTree(),Lines); if (wholeTree.allNodesOneParentAndLessThanThreeChildren()) undoRedo.InsertInUndoRedo(new MakePrettyCommand(Nodes, selectedNodes)); }
private void CallAutoBalance() { if (selectedNodes.Count != 0) { if (selectedNodes.ElementAt(0) is BSTViewModel) { Tree treeTest = new Tree(selectedNodes,Lines); if (treeTest.hasIntKeysAndBSTNodes()) { undoRedo.InsertInUndoRedo(new AutoBalanceCommand(treeTest, Nodes, selectedNodes, Lines)); } } else if (selectedNodes.ElementAt(0) is T234ViewModel) { if (validT234Tree()) { undoRedo.InsertInUndoRedo(new AutoBalance234(Nodes, selectedNodes, Lines)); } }else System.Windows.MessageBox.Show("Tree contains red/black nodes."); } }
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)); } }
private void MouseUpCanvas(MouseButtonEventArgs e) { if (!isAddingLine && MouseDownCanvasCalled) { Console.WriteLine("Inside"); MouseDownCanvasCalled = false; var SelectionBoxEnd = Mouse.GetPosition(e.MouseDevice.Target); var smallX = Math.Min(SelectionBoxStart.X, SelectionBoxEnd.X); var smallY = Math.Min(SelectionBoxStart.Y, SelectionBoxEnd.Y); var largeX = Math.Max(SelectionBoxStart.X, SelectionBoxEnd.X); var largeY = Math.Max(SelectionBoxStart.Y, SelectionBoxEnd.Y); foreach (NodeViewModel n in Nodes) if(!(n.X > largeX || n.X+n.Diameter < smallX || n.Y > largeY || n.Y+n.Diameter < smallY)) { addToSelectedNodes(n); } Tree yolo = new Tree(selectedNodes); SelectionBoxX = SelectionBoxY = SelectionBoxWidth = SelectionBoxHeight = 0; RaisePropertyChanged(() => SelectionBoxX); RaisePropertyChanged(() => SelectionBoxY); RaisePropertyChanged(() => SelectionBoxWidth); RaisePropertyChanged(() => SelectionBoxHeight); e.MouseDevice.Target.ReleaseMouseCapture(); } }