示例#1
0
        private void btnCompare_Click(object sender, EventArgs e)
        {
            var lines1 = TextFileDiff.GetByText(this.txtContent1.TextValue);
            var lines2 = TextFileDiff.GetByText(this.txtContent2.TextValue);

            TextDiff(lines1, lines2);
        }
示例#2
0
        private void TextDiff(ArrayList lines1, ArrayList lines2)
        {
            this.Cursor = Cursors.WaitCursor;

            TextFileDiff sLF = null;
            TextFileDiff dLF = null;

            try
            {
                sLF = new TextFileDiff(lines1);
                dLF = new TextFileDiff(lines2);
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                MessageBox.Show(ex.Message, "File Error");
                return;
            }

            try
            {
                double     time = 0;
                DiffEngine de   = new DiffEngine();
                time = de.ProcessDiff(sLF, dLF, _level);

                var rep = de.DiffReport();
                var dlg = new FormCompareResult(sLF, dLF, rep, time);
                dlg.ShowDialog();
                dlg.Dispose();
            }
            catch (Exception ex)
            {
                this.Cursor = Cursors.Default;
                string tmp = string.Format("{0}{1}{1}***STACK***{1}{2}",
                                           ex.Message,
                                           Environment.NewLine,
                                           ex.StackTrace);
                Helper.MessageBoxError(tmp, "Compare Error");
                return;
            }
            this.Cursor = Cursors.Default;
        }
示例#3
0
        public FormCompareResult(TextFileDiff source, TextFileDiff destination, ArrayList DiffLines, double seconds)
        {
            InitializeComponent();
            this.Text = string.Format(Resource.compareResultTitle, seconds.ToString("#0.00"));

            ListViewItem lviS;
            ListViewItem lviD;
            int          cnt = 1;
            int          i;

            foreach (DiffResultSpan drs in DiffLines)
            {
                switch (drs.Status)
                {
                case DiffResultSpanStatus.DeleteSource:
                    for (i = 0; i < drs.Length; i++)
                    {
                        lviS           = new ListViewItem(cnt.ToString("00000"));
                        lviD           = new ListViewItem(cnt.ToString("00000"));
                        lviS.BackColor = Color.Red;
                        lviS.SubItems.Add(((TextLine)source.GetByIndex(drs.SourceIndex + i)).Line);
                        lviD.BackColor = Color.LightGray;
                        lviD.SubItems.Add("");

                        lvSource.Items.Add(lviS);
                        lvDestination.Items.Add(lviD);
                        cnt++;
                    }

                    break;

                case DiffResultSpanStatus.NoChange:
                    for (i = 0; i < drs.Length; i++)
                    {
                        lviS           = new ListViewItem(cnt.ToString("00000"));
                        lviD           = new ListViewItem(cnt.ToString("00000"));
                        lviS.BackColor = Color.White;
                        lviS.SubItems.Add(((TextLine)source.GetByIndex(drs.SourceIndex + i)).Line);
                        lviD.BackColor = Color.White;
                        lviD.SubItems.Add(((TextLine)destination.GetByIndex(drs.DestIndex + i)).Line);

                        lvSource.Items.Add(lviS);
                        lvDestination.Items.Add(lviD);
                        cnt++;
                    }

                    break;

                case DiffResultSpanStatus.AddDestination:
                    for (i = 0; i < drs.Length; i++)
                    {
                        lviS           = new ListViewItem(cnt.ToString("00000"));
                        lviD           = new ListViewItem(cnt.ToString("00000"));
                        lviS.BackColor = Color.LightGray;
                        lviS.SubItems.Add("");
                        lviD.BackColor = Color.LightGreen;
                        lviD.SubItems.Add(((TextLine)destination.GetByIndex(drs.DestIndex + i)).Line);

                        lvSource.Items.Add(lviS);
                        lvDestination.Items.Add(lviD);
                        cnt++;
                    }

                    break;

                case DiffResultSpanStatus.Replace:
                    for (i = 0; i < drs.Length; i++)
                    {
                        lviS           = new ListViewItem(cnt.ToString("00000"));
                        lviD           = new ListViewItem(cnt.ToString("00000"));
                        lviS.BackColor = Color.Red;
                        lviS.SubItems.Add(((TextLine)source.GetByIndex(drs.SourceIndex + i)).Line);
                        lviD.BackColor = Color.LightGreen;
                        lviD.SubItems.Add(((TextLine)destination.GetByIndex(drs.DestIndex + i)).Line);

                        lvSource.Items.Add(lviS);
                        lvDestination.Items.Add(lviD);
                        cnt++;
                    }

                    break;
                }
            }
        }