package org.python.pydev.editor;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.presentation.PresentationReconciler;
import org.eclipse.jface.text.source.SourceViewer;
import org.eclipse.swt.custom.StyledText;
import org.python.pydev.shared_ui.utils.RunInUiThread;
public class PyPresentationReconciler extends PresentationReconciler {
private ITextViewer viewer;
/**
* Important: update only asynchronously...
*/
public void invalidateTextPresentation() {
if (viewer != null) {
RunInUiThread.async(new Runnable() {
@Override
public void run() {
ITextViewer v = viewer;
if (v != null && v instanceof SourceViewer) {
SourceViewer sourceViewer = (SourceViewer) v;
StyledText textWidget = sourceViewer.getTextWidget();
if (textWidget != null && !textWidget.isDisposed()) {
sourceViewer.invalidateTextPresentation();
}
}
}
});
}
}
@Override
public void install(ITextViewer viewer) {
super.install(viewer);
this.viewer = viewer;
}
@Override
public void uninstall() {
super.uninstall();
this.viewer = null;
}
}