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; }
/// <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"; } }