コード例 #1
0
ファイル: ViewXmlChangesCommand.cs プロジェクト: kanbang/Colt
        public override void Run()
        {
            var wb = Workbench.Instance;
            if (wb == null) return;
            var ed = wb.ActiveEditor;
            if (ed == null) return;
            var edSvc = ed.EditorService;

            TextFileDiffList sLF = null;
            TextFileDiffList dLF = null;
            string sourceFile = null;
            string targetFile = null;
            try
            {
                edSvc.SyncSessionCopy();
                XmlCompareUtil.PrepareForComparison(edSvc.ResourceService,
                                                    edSvc.ResourceID,
                                                    edSvc.EditedResourceID,
                                                    out sourceFile,
                                                    out targetFile);
                sLF = new TextFileDiffList(sourceFile);
                dLF = new TextFileDiffList(targetFile);
            }
            catch (Exception ex)
            {
                ErrorDialog.Show(ex);
                return;
            }
            finally
            {
                try { File.Delete(sourceFile); }
                catch { }
                try { File.Delete(targetFile); }
                catch { }
            }

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

                var rep = de.DiffReport();
                TextDiffView dlg = new TextDiffView(sLF, dLF, rep, time);
                dlg.Text += " - " + edSvc.ResourceID; //NOXLATE
                dlg.ShowDialog();
                dlg.Dispose();
            }
            catch (Exception ex)
            {
                string tmp = string.Format("{0}{1}{1}***STACK***{1}{2}",
                    ex.Message,
                    Environment.NewLine,
                    ex.StackTrace);
                MessageBox.Show(tmp, Strings.CompareError);
                return;
            }
        }
コード例 #2
0
        private void btnDiff_Click(object sender, EventArgs e)
        {
            TextFileDiffList sLF = null;
            TextFileDiffList dLF = null;
            string sourceFile = null;
            string targetFile = null;
            try
            {
                _edSvc.SyncSessionCopy();
                XmlCompareUtil.PrepareForComparison(_edSvc.ResourceService,
                                                    _edSvc.ResourceID,
                                                    _edSvc.EditedResourceID,
                                                    out sourceFile,
                                                    out targetFile);
                sLF = new TextFileDiffList(sourceFile);
                dLF = new TextFileDiffList(targetFile);
            }
            catch (Exception ex)
            {
                ErrorDialog.Show(ex);
                return;
            }
            finally
            {
                try { File.Delete(sourceFile); }
                catch { }
                try { File.Delete(targetFile); }
                catch { }
            }

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

                var rep = de.DiffReport();
                TextDiffView dlg = new TextDiffView(sLF, dLF, rep, time);
                dlg.Text += " - " + _edSvc.ResourceID; //NOXLATE
                dlg.ShowDialog();
                dlg.Dispose();
            }
            catch (Exception ex)
            {
                string tmp = string.Format("{0}{1}{1}***STACK***{1}{2}",
                    ex.Message,
                    Environment.NewLine,
                    ex.StackTrace);
                MessageBox.Show(tmp, Strings.CompareError);
                return;
            }
        }
コード例 #3
0
ファイル: TextDiffView.cs プロジェクト: kanbang/Colt
        /// <summary>
        /// Initializes a new instance
        /// </summary>
        public TextDiffView(TextFileDiffList source, TextFileDiffList destination, List<DiffResultSpan> DiffLines, double seconds)
            : this()
        {
            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(NumFormat));
                            lviD = new ListViewItem(cnt.ToString(NumFormat));
                            lviS.BackColor = Color.Red;
                            lviS.SubItems.Add(((TextLine)source.GetByIndex(drs.SourceIndex + i)).Line);
                            lviD.BackColor = Color.LightGray;
                            lviD.SubItems.Add(string.Empty);

                            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(NumFormat));
                            lviD = new ListViewItem(cnt.ToString(NumFormat));
                            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(NumFormat));
                            lviD = new ListViewItem(cnt.ToString(NumFormat));
                            lviS.BackColor = Color.LightGray;
                            lviS.SubItems.Add(string.Empty);
                            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(NumFormat));
                            lviD = new ListViewItem(cnt.ToString(NumFormat));
                            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;
                }

            }
        }