private void ToggleItem(ListViewItem item) { if (item.Checked) // expanded { using (new LockRedraw(ComparisonListView.Handle)) { while (ComparisonListView.Items.Count > item.Index + 1 && ComparisonListView.Items[item.Index + 1].IndentCount > item.IndentCount) { ComparisonListView.Items.RemoveAt(item.Index + 1); } item.Checked = false; item.StateImageIndex = StateImageIndexDashPlus; } } else { CustomizationComparison comparison = (CustomizationComparison)item.Tag; if (comparison.Children.Count > 0) { using (new LockRedraw(ComparisonListView.Handle)) { foreach (CustomizationComparison childComparison in comparison.Children.AsEnumerable().Reverse()) { AddItem(childComparison, item); } item.StateImageIndex = StateImageIndexDashMinus; item.Checked = true; } } } }
private void ExportToExcelButton_Click(object sender, EventArgs e) { CustomizationComparison comparison = ComparisonListView.Items[0].Tag as CustomizationComparison; if (comparison != null) { if (SaveToExcelDialog.ShowDialog() == DialogResult.OK) { string fileWithPath = SaveToExcelDialog.FileName; ExportToExcel exportToExcel = new ExportToExcel(fileWithPath, comparison); exportToExcel.Export(); } } }
private void ComparisonListView_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { if (e.IsSelected) { CustomizationComparison comparison = (CustomizationComparison)e.Item.Tag; SourceBusyPicture.Visible = true; TargetBusyPicture.Visible = true; SourceWebBrowser.Document.Body.InnerHtml = ""; TargetWebBrowser.Document.Body.InnerHtml = ""; ThreadPool.QueueUserWorkItem(delegate(object state) { if (comparison.IsDifferent) { CustomizationSerializer serializer = new CustomizationSerializer(); IEnumerable <String> sourceLines = serializer.SerializeObjectToLines(comparison, comparison.SourceValue); IEnumerable <String> targetLines = serializer.SerializeObjectToLines(comparison, comparison.TargetValue); Diff diff = new Diff(); DiffResult <String>[] results = diff.Compare(sourceLines.Take(LineCountLimit).ToArray(), targetLines.Take(LineCountLimit).ToArray()).ToArray(); this.Invoke(_updateBrowsersCaller, comparison, results); } else { CustomizationSerializer serializer = new CustomizationSerializer(); IEnumerable <String> lines = serializer.SerializeObjectToLines(comparison, comparison.TargetValue); DiffResult <String>[] results = new DiffResult <string>[] { new DiffResult <String> { Owner = DiffOwner.Both, } }; results[0].AddValues(lines.ToList()); this.Invoke(_updateBrowsersCaller, comparison, results); } }); } }
private bool CompareFiles(string sourceFileName, string targetFileName) { CustomizationComparer comparer = new CustomizationComparer(); CustomizationComparison comparison = null; // try // { comparison = comparer.Compare(sourceFileName, targetFileName); // } // catch (Exception e) // { // MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); // return false; // } BindList(comparison); return(true); }
private int GetImageIndex(CustomizationComparison comparison) { if (comparison.IsDifferent) { if (comparison.SourceValue == null) { return(DifferenceImageIndexNotInSource); } else if (comparison.TargetValue == null) { return(DifferenceImageIndexNotInTarget); } else { return(DifferenceImageIndexChanged); } } else { return(DifferenceImageIndexUnchanged); } }
private void AddItem(CustomizationComparison comparison, ListViewItem parentItem) { ListViewItem item = new ListViewItem() { Text = comparison.Name, Checked = false, StateImageIndex = comparison.Children.Count > 0 ? StateImageIndexDashPlus : -1, Tag = comparison, ImageIndex = GetImageIndex(comparison), IndentCount = parentItem == null ? 0 : parentItem.IndentCount + 1, }; object obj = comparison.SourceValue ?? comparison.TargetValue; if (obj != null && comparison.Children.Count > 0) { item.SubItems.Add(comparison.GetUnchangedCount().ToString()); item.SubItems.Add(comparison.GetChangedCount().ToString()); item.SubItems.Add(comparison.GetMissingInSourceCount().ToString()); item.SubItems.Add(comparison.GetMissingInTargetCount().ToString()); } ComparisonListView.Items.Insert(parentItem == null ? 0 : parentItem.Index + 1, item); }
private void BindList(CustomizationComparison comparison) { ComparisonListView.Items.Clear(); AddItem(comparison, null); }
private void UpdateBrowsers(CustomizationComparison comparison, DiffResult <String>[] results) { if (!ComparisonListView.SelectedItems.Cast <ListViewItem>().Any(i => i.Tag == comparison)) { return; } SourceBusyPicture.Visible = false; TargetBusyPicture.Visible = false; StringBuilder sourceBuffer = new StringBuilder(); StringBuilder targetBuffer = new StringBuilder(); HtmlTextWriter sourceWriter = new HtmlTextWriter(new StringWriter(sourceBuffer)); HtmlTextWriter targetWriter = new HtmlTextWriter(new StringWriter(targetBuffer)); int sourceLineCount = 0; int targetLineCount = 0; DiffOwner previousOwner = DiffOwner.Both; for (int i = 0; i < results.Length; i++) { DiffResult <String> result = results[i]; DiffOwner nextOwner = i + 1 < results.Length ? results[i + 1].Owner : DiffOwner.Both; bool isolatedChange = previousOwner == DiffOwner.Both && nextOwner == DiffOwner.Both; switch (result.Owner) { case DiffOwner.Target: AppendLines(targetWriter, result.Value, isolatedChange ? "missing" : "changed"); targetLineCount += result.Value.Count; break; case DiffOwner.Source: AppendLines(sourceWriter, result.Value, isolatedChange ? "missing" : "changed"); sourceLineCount += result.Value.Count; break; case DiffOwner.Both: while (sourceLineCount < targetLineCount) { AppendLine(sourceWriter, " ", "blank"); sourceLineCount++; } while (targetLineCount < sourceLineCount) { AppendLine(targetWriter, " ", "blank"); targetLineCount++; } AppendLines(sourceWriter, result.Value); AppendLines(targetWriter, result.Value); sourceLineCount += result.Value.Count; targetLineCount += result.Value.Count; break; } previousOwner = result.Owner; } sourceWriter.Flush(); targetWriter.Flush(); SourceWebBrowser.Document.Body.InnerHtml = sourceBuffer.ToString(); TargetWebBrowser.Document.Body.InnerHtml = targetBuffer.ToString(); SourceWebBrowser.Document.Body.ScrollTop = 0; TargetWebBrowser.Document.Body.ScrollTop = 0; }