Exemple #1
0
        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;
                    }
                }
            }
        }
Exemple #2
0
        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();
                }
            }
        }
Exemple #3
0
        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);
                    }
                });
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 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);
     }
 }
Exemple #6
0
        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);
        }
Exemple #7
0
        private void BindList(CustomizationComparison comparison)
        {
            ComparisonListView.Items.Clear();

            AddItem(comparison, null);
        }
Exemple #8
0
        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;
        }