*/
private boolean ensureQuickDiffProvider(String diffProviderId) {
if (!isShowingChangeInformation())
installChangeRulerModel(fDelegate); // FIXME pass provider id
IAnnotationModel annotationModel= fViewer.getAnnotationModel();
IAnnotationModel oldDiffer= getDiffer();
if (oldDiffer == null && annotationModel != null)
return false; // quick diff is enabled, but no differ? not working for whatever reason
if (annotationModel == null)
annotationModel= new AnnotationModel();
if (!(annotationModel instanceof IAnnotationModelExtension))
return false;
QuickDiff util= new QuickDiff();
Object oldDifferId= util.getConfiguredQuickDiffProvider(oldDiffer);
if (oldDifferId.equals(diffProviderId)) {
if (oldDiffer instanceof ILineDifferExtension)
((ILineDifferExtension) oldDiffer).resume();
return true;
}
// Check whether the desired provider is available at all
IAnnotationModel newDiffer= util.createQuickDiffAnnotationModel(getEditor(), diffProviderId);
if (util.getConfiguredQuickDiffProvider(newDiffer).equals(oldDifferId)) {
if (oldDiffer instanceof ILineDifferExtension)
((ILineDifferExtension) oldDiffer).resume();
return true;
}