Search in sources :

Example 1 with StructuredRegionProcessor

use of org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor in project webtools.sourceediting by eclipse.

the class StructuredTextViewer method configure.

/**
 * Should be identical to superclass version. Plus, we get our own special
 * Highlighter. Plus we uninstall before installing.
 */
public void configure(SourceViewerConfiguration configuration) {
    if (getTextWidget() == null)
        return;
    setDocumentPartitioning(configuration.getConfiguredDocumentPartitioning(this));
    // always uninstall highlighter and null it out on new configuration
    if (fHighlighter != null) {
        fHighlighter.uninstall();
        fHighlighter = null;
    }
    if (fRecHighlighter != null) {
        fRecHighlighter.uninstall();
        fRecHighlighter = null;
    }
    // Bug 230297 - Uninstall presentation reconciler in preparation of a new one
    if (fPresentationReconciler != null) {
        fPresentationReconciler.uninstall();
        fPresentationReconciler = null;
    }
    IReconciler newReconciler = configuration.getReconciler(this);
    if (newReconciler != fReconciler || newReconciler == null || fReconciler == null) {
        if (fReconciler != null) {
            fReconciler.uninstall();
        }
        fReconciler = newReconciler;
        if (fReconciler != null) {
            fReconciler.install(this);
            // still need set document on the reconciler (strategies)
            if (fReconciler instanceof StructuredRegionProcessor)
                ((StructuredRegionProcessor) fReconciler).setDocument(getDocument());
        }
    }
    IContentAssistant newAssistant = configuration.getContentAssistant(this);
    if (newAssistant != fContentAssistant || newAssistant == null || fContentAssistant == null) {
        if (fContentAssistant != null)
            fContentAssistant.uninstall();
        fContentAssistant = newAssistant;
        if (fContentAssistant != null) {
            fContentAssistant.install(this);
            if (fContentAssistant instanceof IContentAssistantExtension2 && fContentAssistant instanceof IContentAssistantExtension4)
                fContentAssistantFacade = new ContentAssistantFacade(fContentAssistant);
            fContentAssistantInstalled = true;
        } else {
            // 248036
            // disable the content assist operation if no content
            // assistant
            enableOperation(CONTENTASSIST_PROPOSALS, false);
            fContentAssistantInstalled = false;
        }
    }
    IQuickAssistAssistant quickAssistant = configuration.getQuickAssistAssistant(this);
    if (quickAssistant != fQuickAssistAssistant || quickAssistant == null || fQuickAssistAssistant == null) {
        if (fQuickAssistAssistant != null)
            fQuickAssistAssistant.uninstall();
        fQuickAssistAssistant = quickAssistant;
        if (fQuickAssistAssistant != null) {
            fQuickAssistAssistant.install(this);
            fQuickAssistAssistantInstalled = true;
        } else {
            // 248036
            // disable the content assist operation if no content
            // assistant
            enableOperation(QUICK_ASSIST, false);
            fQuickAssistAssistantInstalled = false;
        }
    }
    fContentFormatter = configuration.getContentFormatter(this);
    // do not uninstall old information presenter if it's the same
    IInformationPresenter newInformationPresenter = configuration.getInformationPresenter(this);
    if (newInformationPresenter == null || fInformationPresenter == null || !(newInformationPresenter.equals(fInformationPresenter))) {
        if (fInformationPresenter != null)
            fInformationPresenter.uninstall();
        fInformationPresenter = newInformationPresenter;
        if (fInformationPresenter != null)
            fInformationPresenter.install(this);
    }
    // disconnect from the old undo manager before setting the new one
    if (fUndoManager != null) {
        fUndoManager.disconnect();
    }
    setUndoManager(configuration.getUndoManager(this));
    // release old annotation hover before setting new one
    if (fAnnotationHover instanceof StructuredTextAnnotationHover) {
        ((StructuredTextAnnotationHover) fAnnotationHover).release();
    }
    setAnnotationHover(configuration.getAnnotationHover(this));
    // release old annotation hover before setting new one
    if (fOverviewRulerAnnotationHover instanceof StructuredTextAnnotationHover) {
        ((StructuredTextAnnotationHover) fOverviewRulerAnnotationHover).release();
    }
    setOverviewRulerAnnotationHover(configuration.getOverviewRulerAnnotationHover(this));
    getTextWidget().setTabs(configuration.getTabWidth(this));
    setHoverControlCreator(configuration.getInformationControlCreator(this));
    // if hyperlink manager has already been created, uninstall it
    if (fHyperlinkManager != null) {
        setHyperlinkDetectors(null, SWT.NONE);
    }
    setHyperlinkPresenter(configuration.getHyperlinkPresenter(this));
    IHyperlinkDetector[] hyperlinkDetectors = configuration.getHyperlinkDetectors(this);
    int eventStateMask = configuration.getHyperlinkStateMask(this);
    setHyperlinkDetectors(hyperlinkDetectors, eventStateMask);
    String[] types = configuration.getConfiguredContentTypes(this);
    // clear autoindent/autoedit strategies
    fAutoIndentStrategies = null;
    for (int i = 0; i < types.length; i++) {
        String t = types[i];
        setAutoEditStrategies(configuration.getAutoEditStrategies(this, t), t);
        setTextDoubleClickStrategy(configuration.getDoubleClickStrategy(this, t), t);
        int[] stateMasks = configuration.getConfiguredTextHoverStateMasks(this, t);
        if (stateMasks != null) {
            for (int j = 0; j < stateMasks.length; j++) {
                int stateMask = stateMasks[j];
                setTextHover(configuration.getTextHover(this, t, stateMask), t, stateMask);
            }
        } else {
            setTextHover(configuration.getTextHover(this, t), t, ITextViewerExtension2.DEFAULT_HOVER_STATE_MASK);
        }
        String[] prefixes = configuration.getIndentPrefixes(this, t);
        if (prefixes != null && prefixes.length > 0)
            setIndentPrefixes(prefixes, t);
        prefixes = configuration.getDefaultPrefixes(this, t);
        if (prefixes != null && prefixes.length > 0)
            setDefaultPrefixes(prefixes, t);
        // the document is set
        if (getDocument() != null) {
            // add highlighter/linestyleprovider
            LineStyleProvider[] providers = ((StructuredTextViewerConfiguration) configuration).getLineStyleProviders(this, t);
            if (providers != null) {
                for (int j = 0; j < providers.length; ++j) {
                    if (fRecHighlighter == null) {
                        fRecHighlighter = new ReconcilerHighlighter();
                        ((StructuredTextViewerConfiguration) configuration).setHighlighter(fRecHighlighter);
                    }
                    if (providers[j] instanceof AbstractLineStyleProvider) {
                        ((AbstractLineStyleProvider) providers[j]).init((IStructuredDocument) getDocument(), fRecHighlighter);
                        fRecHighlighter.addProvider(t, providers[j]);
                    } else {
                        // init with compatibility instance
                        if (fHighlighter == null) {
                            fHighlighter = new CompatibleHighlighter();
                        }
                        // $NON-NLS-1$
                        Logger.log(Logger.INFO_DEBUG, "CompatibleHighlighter installing compatibility for " + providers[j].getClass());
                        providers[j].init((IStructuredDocument) getDocument(), fHighlighter);
                        fHighlighter.addProvider(t, providers[j]);
                    }
                }
            }
        }
    }
    // initialize highlighter after linestyleproviders were added
    if (fHighlighter != null) {
        fHighlighter.setDocumentPartitioning(configuration.getConfiguredDocumentPartitioning(this));
        fHighlighter.setDocument((IStructuredDocument) getDocument());
        fHighlighter.install(this);
    }
    if (fRecHighlighter != null)
        fRecHighlighter.install(this);
    activatePlugins();
    fConfiguration = configuration;
    // Update the viewer's presentation reconciler
    fPresentationReconciler = configuration.getPresentationReconciler(this);
    if (fPresentationReconciler != null)
        fPresentationReconciler.install(this);
}
Also used : ReconcilerHighlighter(org.eclipse.wst.sse.ui.internal.provisional.style.ReconcilerHighlighter) StructuredRegionProcessor(org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor) IHyperlinkDetector(org.eclipse.jface.text.hyperlink.IHyperlinkDetector) CompatibleHighlighter(org.eclipse.wst.sse.ui.internal.provisional.style.CompatibleHighlighter) AbstractLineStyleProvider(org.eclipse.wst.sse.ui.internal.provisional.style.AbstractLineStyleProvider) Point(org.eclipse.swt.graphics.Point) IReconciler(org.eclipse.jface.text.reconciler.IReconciler) IContentAssistant(org.eclipse.jface.text.contentassist.IContentAssistant) LineStyleProvider(org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider) AbstractLineStyleProvider(org.eclipse.wst.sse.ui.internal.provisional.style.AbstractLineStyleProvider) IContentAssistantExtension2(org.eclipse.jface.text.contentassist.IContentAssistantExtension2) IContentAssistantExtension4(org.eclipse.jface.text.contentassist.IContentAssistantExtension4) IInformationPresenter(org.eclipse.jface.text.information.IInformationPresenter) ContentAssistantFacade(org.eclipse.jface.text.source.ContentAssistantFacade) StructuredTextViewerConfiguration(org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration) IQuickAssistAssistant(org.eclipse.jface.text.quickassist.IQuickAssistAssistant)

Example 2 with StructuredRegionProcessor

use of org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor in project webtools.sourceediting by eclipse.

the class StructuredTextViewerConfiguration method getReconciler.

/**
 * Returns the reconciler ready to be used with the given source viewer.<br />
 * Note: The same instance of IReconciler is returned regardless of the
 * source viewer passed in.
 * <p>
 * Clients cannot override this method. Instead, clients wanting to add
 * their own reconciling strategy should use the
 * <code>org.eclipse.wst.sse.ui.extensions.sourcevalidation</code>
 * extension point.
 * </p>
 *
 * @param sourceViewer
 *            the source viewer to be configured by this configuration
 * @return a reconciler
 */
public final IReconciler getReconciler(ISourceViewer sourceViewer) {
    IReconciler reconciler = null;
    if (sourceViewer != null) {
        // Only create reconciler if sourceViewer is present
        if (fReconciler == null && sourceViewer != null) {
            IReconciler newReconciler = createReconciler(sourceViewer);
            // reconciler configurations
            if (newReconciler instanceof StructuredRegionProcessor) {
                ((StructuredRegionProcessor) newReconciler).setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
            }
            fReconciler = newReconciler;
        }
        reconciler = fReconciler;
    }
    return reconciler;
}
Also used : IReconciler(org.eclipse.jface.text.reconciler.IReconciler) StructuredRegionProcessor(org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor)

Aggregations

IReconciler (org.eclipse.jface.text.reconciler.IReconciler)2 StructuredRegionProcessor (org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor)2 IContentAssistant (org.eclipse.jface.text.contentassist.IContentAssistant)1 IContentAssistantExtension2 (org.eclipse.jface.text.contentassist.IContentAssistantExtension2)1 IContentAssistantExtension4 (org.eclipse.jface.text.contentassist.IContentAssistantExtension4)1 IHyperlinkDetector (org.eclipse.jface.text.hyperlink.IHyperlinkDetector)1 IInformationPresenter (org.eclipse.jface.text.information.IInformationPresenter)1 IQuickAssistAssistant (org.eclipse.jface.text.quickassist.IQuickAssistAssistant)1 ContentAssistantFacade (org.eclipse.jface.text.source.ContentAssistantFacade)1 Point (org.eclipse.swt.graphics.Point)1 StructuredTextViewerConfiguration (org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration)1 AbstractLineStyleProvider (org.eclipse.wst.sse.ui.internal.provisional.style.AbstractLineStyleProvider)1 CompatibleHighlighter (org.eclipse.wst.sse.ui.internal.provisional.style.CompatibleHighlighter)1 LineStyleProvider (org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider)1 ReconcilerHighlighter (org.eclipse.wst.sse.ui.internal.provisional.style.ReconcilerHighlighter)1