void SetDiffCellData (Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter)
{
try
{
CellRendererDiff cellRendererDiff = (CellRendererDiff)cell;
Change change = store.GetValue (iter, objColumn) as Change;
cellRendererDiff.Visible = !(bool)store.GetValue (iter, statusVisibleColumn);
if (change == null || !cellRendererDiff.Visible)
{
cellRendererDiff.InitCell (treeviewPreview, false, "", "");
return;
}
TextReplaceChange replaceChange = change as TextReplaceChange;
if (replaceChange == null)
return;
var openDocument = IdeApp.Workbench.GetDocument (replaceChange.FileName);
Mono.TextEditor.TextDocument originalDocument = new Mono.TextEditor.TextDocument ();
originalDocument.FileName = replaceChange.FileName;
if (openDocument == null)
{
originalDocument.Text = Mono.TextEditor.Utils.TextFileUtility.ReadAllText (replaceChange.FileName);
}
else
{
originalDocument.Text = openDocument.Editor.Document.Text;
}
Mono.TextEditor.TextDocument changedDocument = new Mono.TextEditor.TextDocument ();
changedDocument.FileName = replaceChange.FileName;
changedDocument.Text = originalDocument.Text;
changedDocument.Replace (replaceChange.Offset, replaceChange.RemovedChars, replaceChange.InsertedText);
string diffString = Mono.TextEditor.Utils.Diff.GetDiffString (originalDocument, changedDocument);
cellRendererDiff.InitCell (treeviewPreview, true, diffString, replaceChange.FileName);
}
catch (Exception e)
{
Console.WriteLine (e);
}
}