// Shows the difference between two array entries. private void DisplayArrayDiff(object ao, object bo, DiffOperation dop, int indent) { if (dop is RemoveOperation) { RemovedText(_af.ArrayItem(ao, indent), ""); } else if (dop is ChangeOperation) { ChangedText(_af.ArrayItem(ao, indent), _bf.ArrayItem(bo, indent)); } else if (dop is ChangeObjectOperation) { SameText(_af.ObjectStart(indent), _bf.ObjectStart(indent)); DisplayDiff(ao as Hashtable, bo as Hashtable, (dop as ChangeObjectOperation).Diff, indent + 1); SameText(_af.ObjectEnd(indent), _bf.ObjectEnd(indent)); } else if (dop is ChangePositionArrayOperation) { SameText(_af.ArrayStart(indent), _bf.ArrayStart(indent)); DisplayDiff(ao as ArrayList, bo as ArrayList, (dop as ChangePositionArrayOperation).Diff, indent + 1); SameText(_af.ArrayEnd(indent), _bf.ArrayEnd(indent)); } else if (dop is ChangeIdArrayOperation) { SameText(_af.ArrayStart(indent), _bf.ArrayStart(indent)); DisplayDiff(ao as ArrayList, bo as ArrayList, (dop as ChangeIdArrayOperation).Diff, indent + 1); SameText(_af.ArrayEnd(indent), _bf.ArrayEnd(indent)); } else { SameText(_af.ArrayItem(ao, indent), _bf.ArrayItem(bo, indent)); } }
// Shows the difference between ao and bo in the text box. private void DisplayArrayDiff(RichTextBox rtb, IFormatter f, object ao, object bo, DiffOperation dop, int indent, string path) { CheckLineNumber(rtb, path); if (dop is RemoveOperation) { RemovedText(rtb, f.ArrayItem(ao, indent)); } else if (dop is ChangeOperation) { ChangedText(rtb, f.ArrayItem(ao, indent), f.ArrayItem(bo, indent)); } else if (dop is ChangeObjectOperation) { SameText(rtb, f.ObjectStart(indent)); DisplayDiff(rtb, f, ao as Hashtable, bo as Hashtable, (dop as ChangeObjectOperation).Diff, indent + 1, path); SameText(rtb, f.ObjectEnd(indent)); } else if (dop is ChangePositionArrayOperation) { SameText(rtb, f.ArrayStart(indent)); DisplayDiff(rtb, f, ao as ArrayList, bo as ArrayList, (dop as ChangePositionArrayOperation).Diff, indent + 1, path); SameText(rtb, f.ArrayEnd(indent)); } else if (dop is ChangeIdArrayOperation) { SameText(rtb, f.ArrayStart(indent)); DisplayDiff(rtb, f, ao as ArrayList, bo as ArrayList, (dop as ChangeIdArrayOperation).Diff, indent + 1, path); SameText(rtb, f.ArrayEnd(indent)); } else { SameText(rtb, f.ArrayItem(ao, indent)); } }