private void OverrideDifferences(DiffPlex.DiffBuilder.Model.DiffPaneModel diff)
        {
            base.Logger.Log("Overriding changes so they do not appear as differences");

            diff.Lines[1].Type             =
                diff.Lines[2].Type         =
                    diff.Lines[4].Type     =
                        diff.Lines[5].Type = DiffPlex.DiffBuilder.Model.ChangeType.Unchanged;
        }
Beispiel #2
0
        /// <summary>
        /// Create a comparison for the node that was clicked on
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tvComparison_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            string objectName = e.Node.Text;
            string sourceText = "";
            string targetText = "";

            if (_sourceSchema.Functions.ContainsKey(objectName) && e.Node.FullPath.StartsWith(_functionTreeNodeText))
            {
                sourceText = CslCommandGenerator.GenerateCreateOrAlterFunctionCommand(_sourceSchema.Functions[objectName], true);
            }

            if (_sourceSchema.Tables.ContainsKey(objectName) && e.Node.FullPath.StartsWith(_tablesTreeNodeText))
            {
                sourceText = CslCommandGenerator.GenerateTableCreateCommand(_sourceSchema.Tables[objectName], true);
            }

            if (_targetSchema.Functions.ContainsKey(objectName) && e.Node.FullPath.StartsWith(_functionTreeNodeText))
            {
                targetText = CslCommandGenerator.GenerateCreateOrAlterFunctionCommand(_targetSchema.Functions[objectName], true);
            }

            if (_targetSchema.Tables.ContainsKey(objectName) && e.Node.FullPath.StartsWith(_tablesTreeNodeText))
            {
                targetText = CslCommandGenerator.GenerateTableCreateCommand(_targetSchema.Tables[objectName], true);
            }

            var diffBuilder = new InlineDiffBuilder(new Differ());

            DiffPlex.DiffBuilder.Model.DiffPaneModel diff = diffBuilder.BuildDiffModel(targetText, sourceText);
            rtbSourceText.Clear();

            int longestLine = 98;

            if (diff.Lines.Any())
            {
                longestLine = Math.Max(diff.Lines.Max(l => l.Text.Length), longestLine);
            }

            foreach (DiffPlex.DiffBuilder.Model.DiffPiece line in diff.Lines)
            {
                switch (line.Type)
                {
                case DiffPlex.DiffBuilder.Model.ChangeType.Inserted:
                    rtbSourceText.SelectionBackColor = System.Drawing.Color.Yellow;
                    rtbSourceText.SelectedText       = line.Text.PadRight(longestLine);
                    break;

                case DiffPlex.DiffBuilder.Model.ChangeType.Deleted:
                    rtbSourceText.SelectionBackColor = System.Drawing.Color.Red;
                    rtbSourceText.SelectedText       = line.Text.PadRight(longestLine);
                    break;

                case DiffPlex.DiffBuilder.Model.ChangeType.Imaginary:
                    break;

                default:
                    rtbSourceText.SelectionBackColor = System.Drawing.Color.White;
                    rtbSourceText.SelectedText       = line.Text.PadRight(longestLine);
                    break;
                }

                rtbSourceText.SelectedText += "\n";
            }
        }