/**
* <copyright>
* </copyright>
*
*
*/
package org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui;
/**
* This class provides the configuration for the generated editor. It registers
* content assistance and syntax highlighting.
*/
public class MtextSourceViewerConfiguration extends org.eclipse.ui.editors.text.TextSourceViewerConfiguration {
private org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextColorManager colorManager;
private org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextResourceProvider resourceProvider;
private org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.IMtextAnnotationModelProvider annotationModelProvider;
private org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.IMtextBracketHandlerProvider bracketHandlerProvider;
private org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextQuickAssistAssistant quickAssistAssistant;
/**
* Creates a new editor configuration.
*
* @param resourceProvider the provider for the resource (usually this is the
* editor)
* @param colorManager the color manager to use
*/
public MtextSourceViewerConfiguration(org.feature.multi.perspective.mapping.viewmapping.resource.mtext.IMtextResourceProvider resourceProvider, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.IMtextAnnotationModelProvider annotationModelProvider, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.IMtextBracketHandlerProvider bracketHandlerProvider, org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextColorManager colorManager) {
super(org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextUIPlugin.getDefault().getPreferenceStore());
this.fPreferenceStore.setDefault(org.eclipse.ui.texteditor.spelling.SpellingService.PREFERENCE_SPELLING_ENABLED, true);
this.fPreferenceStore.setDefault(org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants.EDITOR_TAB_WIDTH, 4);
this.fPreferenceStore.setDefault(org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants.EDITOR_HYPERLINK_KEY_MODIFIER, org.eclipse.jface.action.Action.findModifierString(org.eclipse.swt.SWT.MOD1));
this.resourceProvider = resourceProvider;
this.annotationModelProvider = annotationModelProvider;
this.bracketHandlerProvider = bracketHandlerProvider;
this.colorManager = colorManager;
}
public org.eclipse.jface.text.contentassist.IContentAssistant getContentAssistant(org.eclipse.jface.text.source.ISourceViewer sourceViewer) {
org.eclipse.jface.text.contentassist.ContentAssistant assistant = new org.eclipse.jface.text.contentassist.ContentAssistant();
assistant.setContentAssistProcessor(new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextCompletionProcessor(resourceProvider, bracketHandlerProvider), org.eclipse.jface.text.IDocument.DEFAULT_CONTENT_TYPE);
assistant.enableAutoActivation(true);
assistant.setAutoActivationDelay(500);
assistant.setProposalPopupOrientation(org.eclipse.jface.text.contentassist.IContentAssistant.PROPOSAL_OVERLAY);
assistant.setContextInformationPopupOrientation(org.eclipse.jface.text.contentassist.IContentAssistant.CONTEXT_INFO_ABOVE);
return assistant;
}
public String[] getConfiguredContentTypes(org.eclipse.jface.text.source.ISourceViewer sourceViewer) {
return new String[] {
org.eclipse.jface.text.IDocument.DEFAULT_CONTENT_TYPE,
};
}
protected org.eclipse.jface.text.rules.ITokenScanner getScanner() {
return new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextTokenScanner(resourceProvider.getResource(), colorManager);
}
public org.eclipse.jface.text.presentation.IPresentationReconciler getPresentationReconciler(org.eclipse.jface.text.source.ISourceViewer sourceViewer) {
org.eclipse.jface.text.presentation.PresentationReconciler reconciler = new org.eclipse.jface.text.presentation.PresentationReconciler();
org.eclipse.jface.text.rules.DefaultDamagerRepairer repairer = new org.eclipse.jface.text.rules.DefaultDamagerRepairer(getScanner());
reconciler.setDamager(repairer, org.eclipse.jface.text.IDocument.DEFAULT_CONTENT_TYPE);
reconciler.setRepairer(repairer, org.eclipse.jface.text.IDocument.DEFAULT_CONTENT_TYPE);
return reconciler;
}
public org.eclipse.jface.text.source.IAnnotationHover getAnnotationHover(org.eclipse.jface.text.source.ISourceViewer sourceViewer) {
return new org.eclipse.jface.text.source.DefaultAnnotationHover();
}
public org.eclipse.jface.text.ITextHover getTextHover(org.eclipse.jface.text.source.ISourceViewer sourceViewer, String contentType) {
return new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextTextHover(resourceProvider);
}
public org.eclipse.jface.text.hyperlink.IHyperlinkDetector[] getHyperlinkDetectors(org.eclipse.jface.text.source.ISourceViewer sourceViewer) {
if (sourceViewer == null) {
return null;
}
return new org.eclipse.jface.text.hyperlink.IHyperlinkDetector[] { new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextHyperlinkDetector(resourceProvider.getResource()) };
}
public org.eclipse.jface.text.quickassist.IQuickAssistAssistant getQuickAssistAssistant(org.eclipse.jface.text.source.ISourceViewer sourceViewer) {
if (quickAssistAssistant == null) {
quickAssistAssistant = new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextQuickAssistAssistant(resourceProvider, annotationModelProvider);
}
return quickAssistAssistant;
}
public org.eclipse.jface.text.reconciler.IReconciler getReconciler(final org.eclipse.jface.text.source.ISourceViewer sourceViewer) {
if (fPreferenceStore == null || !fPreferenceStore.getBoolean(org.eclipse.ui.texteditor.spelling.SpellingService.PREFERENCE_SPELLING_ENABLED)) {
return null;
}
org.eclipse.ui.texteditor.spelling.SpellingService spellingService = org.eclipse.ui.editors.text.EditorsUI.getSpellingService();
if (spellingService.getActiveSpellingEngineDescriptor(fPreferenceStore) == null) {
return null;
}
org.eclipse.jface.text.reconciler.IReconcilingStrategy strategy = new org.eclipse.ui.texteditor.spelling.SpellingReconcileStrategy(sourceViewer, spellingService) {
@Override
protected org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector createSpellingProblemCollector() {
final org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector collector = super.createSpellingProblemCollector();
return new org.eclipse.ui.texteditor.spelling.ISpellingProblemCollector() {
public void accept(org.eclipse.ui.texteditor.spelling.SpellingProblem problem) {
int offset = problem.getOffset();
int length = problem.getLength();
if (sourceViewer == null) {
return;
}
org.eclipse.jface.text.IDocument document = sourceViewer.getDocument();
if (document == null) {
return;
}
String text;
try {
text = document.get(offset, length);
} catch (org.eclipse.jface.text.BadLocationException e) {
return;
}
if (new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.MtextIgnoredWordsFilter().ignoreWord(text)) {
return;
}
collector.accept(problem);
}
public void beginCollecting() {
collector.beginCollecting();
}
public void endCollecting() {
collector.endCollecting();
}
};
}
};
org.eclipse.jface.text.reconciler.MonoReconciler reconciler = new org.eclipse.jface.text.reconciler.MonoReconciler(strategy, false);
reconciler.setDelay(500);
return reconciler;
}
}