public SearchViewModel(TreenodeViewModel root) { RootNode = root; searchWorker = new BackgroundWorker() { WorkerReportsProgress = true, WorkerSupportsCancellation = false }; searchWorker.DoWork += new DoWorkEventHandler(SearchWorker_DoWork); searchWorker.ProgressChanged += new ProgressChangedEventHandler(SearchWorker_ProgressChanged); searchWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(searchWorker_RunWorkerCompleted); progressUpdateTimer.Elapsed += new ElapsedEventHandler(ProgressUpdateTimer_Elapsed); SearchCommand = new _SearchCommand(this); searchDpt = new DepthFirstSearch(TreenodeViewModel.GetTreenode(root)); predicate = ((_SearchCommand)SearchCommand).SearchPredicate; }
private void NextDifferenceCommandBinding_Executed(object sender) { if (nextDiffSearch == null) { TreenodeViewModel startNode = LeftFsmTree.SelectedItem ?? LeftFsmTree.RootNode; nextDiffSearch = new DepthFirstSearch(TreenodeViewModel.GetTreenode(startNode)); } bool result = false; nextDiffSearch.FindNode((s) => { Treenode other = Treenode.NodeFromPath(s.FullPath, TreenodeViewModel.GetTreenode(RightFsmTree.RootNode)); result = other == null || (other.DataType == DataType.ByteBlock && s.DataType == DataType.ByteBlock && other.DataAsString != s.DataAsString); if (result) { LeftFsmTree.SelectNode(s); if (other != null) { RightFsmTree.SelectNode(other); //try { // TextDiffTool diff = new TextDiffTool(Properties.Settings.Default.DiffToolPath); // string tmpl = Path.GetTempFileName(); // string tmpr = Path.GetTempFileName(); // using (StreamWriter sw = new StreamWriter(tmpl)) { // sw.WriteLine(LeftFsmTree.SelectedItem.DataAsString); // sw.Flush(); // } // using (StreamWriter sw = new StreamWriter(tmpr)) { // sw.WriteLine(RightFsmTree.SelectedItem.DataAsString); // sw.Flush(); // } // List<Change> changes = diff.Diff(tmpl, tmpr); //} catch (Exception ex) { // MessageBox.Show("Error generating diff: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); //} } } return result; }); if (result == false) { MessageBox.Show("No more differences found", "No Differences", MessageBoxButton.OK); nextDiffSearch = null; } }