use of org.eclipse.jface.text.reconciler.DirtyRegion in project eclipse.platform.text by eclipse.
the class SpellingReconcileStrategy method reconcile.
@Override
public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) {
try {
IRegion startLineInfo = fDocument.getLineInformationOfOffset(subRegion.getOffset());
IRegion endLineInfo = fDocument.getLineInformationOfOffset(subRegion.getOffset() + Math.max(0, subRegion.getLength() - 1));
if (startLineInfo.getOffset() == endLineInfo.getOffset())
subRegion = startLineInfo;
else
subRegion = new Region(startLineInfo.getOffset(), endLineInfo.getOffset() + Math.max(0, endLineInfo.getLength() - 1) - startLineInfo.getOffset());
} catch (BadLocationException e) {
subRegion = new Region(0, fDocument.getLength());
}
reconcile(subRegion);
}
use of org.eclipse.jface.text.reconciler.DirtyRegion in project eclipse.platform.text by eclipse.
the class AbstractReconcilerTest method setUp.
@Before
public void setUp() {
fBarrier = new Barrier();
fCallLog = Collections.synchronizedList(new ArrayList<String>());
fReconciler = new AbstractReconciler() {
@Override
protected void initialProcess() {
fCallLog.add("initialProcess");
fBarrier.await();
}
@Override
protected void process(DirtyRegion dirtyRegion) {
fCallLog.add("process");
fBarrier.await();
}
@Override
protected void reconcilerDocumentChanged(IDocument newDocument) {
fCallLog.add("reconcilerDocumentChanged");
}
@Override
protected void aboutToBeReconciled() {
fCallLog.add("aboutToBeReconciled");
}
@Override
protected void reconcilerReset() {
fCallLog.add("reconcilerReset");
}
@Override
public IReconcilingStrategy getReconcilingStrategy(String contentType) {
return null;
}
};
fReconciler.setIsIncrementalReconciler(false);
// make tests run faster
fReconciler.setDelay(50);
fProgressMonitor = new NullProgressMonitor();
fReconciler.setProgressMonitor(fProgressMonitor);
fViewer = new TestTextViewer();
fReconciler.install(fViewer);
fAccessor = new Accessor(fReconciler, AbstractReconciler.class);
Object object = fAccessor.get("fThread");
fAccessor = new Accessor(object, object.getClass());
}
use of org.eclipse.jface.text.reconciler.DirtyRegion in project eclipse.platform.text by eclipse.
the class CodeMiningDemo method main.
public static void main(String[] args) throws Exception {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
shell.setText("Code Mining demo");
ISourceViewer sourceViewer = new SourceViewer(shell, null, SWT.V_SCROLL | SWT.BORDER);
sourceViewer.setDocument(new Document("// Type class & new keyword and see references CodeMining\n" + "// Name class with a number N to emulate Nms before resolving the references CodeMining \n\n" + "class A\n" + "new A\n" + "new A\n\n" + "class 5\n" + "new 5\n" + "new 5\n" + "new 5"), new AnnotationModel());
// Add AnnotationPainter (required by CodeMining)
addAnnotationPainter(sourceViewer);
// Initialize codemining providers
((ISourceViewerExtension5) sourceViewer).setCodeMiningProviders(new ICodeMiningProvider[] { new ClassReferenceCodeMiningProvider(), new ClassImplementationsCodeMiningProvider() });
// Execute codemining in a reconciler
MonoReconciler reconciler = new MonoReconciler(new IReconcilingStrategy() {
@Override
public void setDocument(IDocument document) {
((ISourceViewerExtension5) sourceViewer).updateCodeMinings();
}
@Override
public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) {
}
@Override
public void reconcile(IRegion partition) {
((ISourceViewerExtension5) sourceViewer).updateCodeMinings();
}
}, false);
reconciler.install(sourceViewer);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
use of org.eclipse.jface.text.reconciler.DirtyRegion in project eclipse.platform.text by eclipse.
the class InlinedAnnotationDemo method main.
public static void main(String[] args) throws Exception {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
shell.setText("Inlined annotation demo");
// Create source viewer and initialize the content
ISourceViewer sourceViewer = new SourceViewer(shell, null, SWT.V_SCROLL | SWT.BORDER);
sourceViewer.setDocument(new Document("\ncolor:rgb(255, 255, 0)"), new AnnotationModel());
// Initialize inlined annotations support
InlinedAnnotationSupport support = new InlinedAnnotationSupport();
support.install(sourceViewer, createAnnotationPainter(sourceViewer));
// Refresh inlined annotation in none UI Thread with reconciler.
MonoReconciler reconciler = new MonoReconciler(new IReconcilingStrategy() {
@Override
public void setDocument(IDocument document) {
Set<AbstractInlinedAnnotation> annotations = getInlinedAnnotation(sourceViewer, support);
support.updateAnnotations(annotations);
}
@Override
public void reconcile(IRegion partition) {
Set<AbstractInlinedAnnotation> anns = getInlinedAnnotation(sourceViewer, support);
support.updateAnnotations(anns);
}
@Override
public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) {
}
}, false);
reconciler.setDelay(1);
reconciler.install(sourceViewer);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
use of org.eclipse.jface.text.reconciler.DirtyRegion in project titan.EclipsePlug-ins by eclipse.
the class Reconciler method install.
/*
* @see IReconciler#install(ITextViewer)
*/
@Override
public final void install(final ITextViewer textViewer) {
Assert.isNotNull(textViewer);
this.textViewer = textViewer;
synchronized (this) {
if (backgroundThread != null) {
return;
}
backgroundThread = new BackgroundThread(getClass().getName());
}
// dirtyRegionQueue = new ArrayList<DirtyRegion>();
dirtyRegionQueue = new LinkedBlockingQueue<DirtyRegion>();
changeListener = new Listener();
textViewer.addTextInputListener(changeListener);
// see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=67046
// if the reconciler gets installed on a viewer that already has
// a document
// (e.g. when reusing editors), we force the listener to
// register
// itself as document listener, because there will be no input
// change
// on the viewer.
// In order to do that, we simulate an input change.
IDocument tmpDocument = textViewer.getDocument();
if (tmpDocument != null) {
changeListener.inputDocumentAboutToBeChanged(tmpDocument, tmpDocument);
changeListener.inputDocumentChanged(tmpDocument, tmpDocument);
}
}
Aggregations