private void updateViewerDocument(MergeSourceViewer tp, IDocument document, Position range) {
unsetDocument(tp);
if (document == null)
return;
document.addPositionCategory(DIFF_RANGE_CATEGORY);
if (this.fViewer.fPositionUpdater == null)
this.fViewer.fPositionUpdater= this.fViewer.new ChildPositionUpdater(DIFF_RANGE_CATEGORY);
else
document.removePositionUpdater(this.fViewer.fPositionUpdater);
document.addPositionUpdater(this.fViewer.fPositionUpdater);
tp.setRegion(range);
if (this.fViewer.fSubDoc) {
if (range != null) {
IRegion r= this.fViewer.normalizeDocumentRegion(document, TextMergeViewer.toRegion(range));
tp.setDocument(document, r.getOffset(), r.getLength());
} else
tp.setDocument(document);
} else
tp.setDocument(document);
tp.rememberDocument(document);
}