package de.sebastianbenz.task.ui.editor.spelling; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.reconciler.DirtyRegion; import org.eclipse.jface.text.reconciler.IReconcilingStrategyExtension; import org.eclipse.jface.text.source.ISourceViewer; import org.eclipse.ui.texteditor.spelling.SpellingService; import org.eclipse.xtext.ui.editor.reconciler.XtextDocumentReconcileStrategy; public class TaskReconcileStrategy extends XtextDocumentReconcileStrategy implements IReconcilingStrategyExtension { private TaskSpellingReconcileStrategy spellingStrategy; private IDocument document; @Override public void reconcile(DirtyRegion dirtyRegion, IRegion subRegion) { super.reconcile(dirtyRegion, subRegion); if(spellingStrategy != null){ spellingStrategy.reconcile(dirtyRegion, subRegion); } } @Override public void reconcile(IRegion subRegion) { super.reconcile(subRegion); if(spellingStrategy != null) { initialReconcile(); } } @Override public void setDocument(IDocument document) { this.document = document; super.setDocument(document); if(spellingStrategy != null) { spellingStrategy.setDocument(document); initialReconcile(); } } public void setProgressMonitor(IProgressMonitor monitor) { spellingStrategy.setProgressMonitor(monitor); } public void initialReconcile() { if(spellingStrategy != null) { spellingStrategy.initialReconcile(); } } public void addSpellSupport(ISourceViewer viewer, SpellingService spellingService) { if(this.spellingStrategy == null) { this.spellingStrategy = new TaskSpellingReconcileStrategy(viewer, spellingService); this.spellingStrategy.setDocument(document); } } }