Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextViewerConfiguration.java')
-rw-r--r--bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextViewerConfiguration.java691
1 files changed, 0 insertions, 691 deletions
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextViewerConfiguration.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextViewerConfiguration.java
deleted file mode 100644
index e72d221140..0000000000
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/StructuredTextViewerConfiguration.java
+++ /dev/null
@@ -1,691 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Jens Lukowski/Innoopract - initial renaming/restructuring
- *
- *******************************************************************************/
-package org.eclipse.wst.sse.ui;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceConverter;
-import org.eclipse.jface.text.DefaultInformationControl;
-import org.eclipse.jface.text.IAutoEditStrategy;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentExtension3;
-import org.eclipse.jface.text.IDocumentPartitioner;
-import org.eclipse.jface.text.IInformationControl;
-import org.eclipse.jface.text.IInformationControlCreator;
-import org.eclipse.jface.text.ITextDoubleClickStrategy;
-import org.eclipse.jface.text.ITextHover;
-import org.eclipse.jface.text.IUndoManager;
-import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
-import org.eclipse.jface.text.contentassist.IContentAssistant;
-import org.eclipse.jface.text.formatter.IContentFormatter;
-import org.eclipse.jface.text.hyperlink.IHyperlinkPresenter;
-import org.eclipse.jface.text.hyperlink.MultipleHyperlinkPresenter;
-import org.eclipse.jface.text.information.IInformationPresenter;
-import org.eclipse.jface.text.information.IInformationProvider;
-import org.eclipse.jface.text.information.InformationPresenter;
-import org.eclipse.jface.text.presentation.IPresentationReconciler;
-import org.eclipse.jface.text.quickassist.IQuickAssistAssistant;
-import org.eclipse.jface.text.quickassist.QuickAssistAssistant;
-import org.eclipse.jface.text.reconciler.IReconciler;
-import org.eclipse.jface.text.source.Annotation;
-import org.eclipse.jface.text.source.IAnnotationHover;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.jface.viewers.ILabelProvider;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.editors.text.EditorsUI;
-import org.eclipse.ui.editors.text.TextSourceViewerConfiguration;
-import org.eclipse.ui.texteditor.ChainedPreferenceStore;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitioning;
-import org.eclipse.wst.sse.core.internal.text.rules.StructuredTextPartitioner;
-import org.eclipse.wst.sse.ui.internal.ExtendedConfigurationBuilder;
-import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;
-import org.eclipse.wst.sse.ui.internal.StructuredTextAnnotationHover;
-import org.eclipse.wst.sse.ui.internal.contentassist.StructuredContentAssistant;
-import org.eclipse.wst.sse.ui.internal.correction.CompoundQuickAssistProcessor;
-import org.eclipse.wst.sse.ui.internal.derived.HTMLTextPresenter;
-import org.eclipse.wst.sse.ui.internal.preferences.EditorPreferenceNames;
-import org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider;
-import org.eclipse.wst.sse.ui.internal.provisional.style.ReconcilerHighlighter;
-import org.eclipse.wst.sse.ui.internal.provisional.style.StructuredPresentationReconciler;
-import org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor;
-import org.eclipse.wst.sse.ui.internal.rules.StructuredDocumentDamagerRepairer;
-import org.eclipse.wst.sse.ui.internal.taginfo.AnnotationHoverProcessor;
-import org.eclipse.wst.sse.ui.internal.taginfo.BestMatchHover;
-import org.eclipse.wst.sse.ui.internal.taginfo.ProblemAnnotationHoverProcessor;
-import org.eclipse.wst.sse.ui.internal.taginfo.TextHoverManager;
-import org.eclipse.wst.sse.ui.internal.util.EditorUtility;
-
-
-/**
- * Configuration for the source viewer used by StructuredTextEditor.<br />
- * Note: While ISourceViewer is passed in for each get configuration, clients
- * should create a new viewer configuration instance for each instance of
- * source viewer as some methods return the same instance of an object,
- * regardless of the sourceviewer.
- * <p>
- * Clients should subclass and override just those methods which must be
- * specific to their needs.
- * </p>
- *
- * @see org.eclipse.wst.sse.ui.StructuredTextEditor
- * @see org.eclipse.wst.sse.ui.internal.StructuredTextViewer
- * @since 1.0
- */
-public class StructuredTextViewerConfiguration extends TextSourceViewerConfiguration {
- /*
- * One instance per configuration because creating a second assistant that
- * is added to a viewer can cause odd key-eating by the wrong one.
- */
- private StructuredContentAssistant fContentAssistant = null;
- /*
- * One instance per configuration because it's just like content assistant
- */
- private IQuickAssistAssistant fQuickAssistant = null;
- /*
- * One instance per configuration
- */
- private IReconciler fReconciler;
- /**
- * Extended configuration provisionalConfiguration type to contribute
- * additional auto edit strategies
- */
- private final String AUTOEDITSTRATEGY = "autoeditstrategy";
-
- private ReconcilerHighlighter fHighlighter = null;
-
- /**
- * Creates a structured text viewer configuration.
- */
- public StructuredTextViewerConfiguration() {
- super();
- // initialize fPreferenceStore with same preference store used in
- // StructuredTextEditor
- fPreferenceStore = createCombinedPreferenceStore();
- }
-
- /**
- * Create a preference store that combines the source editor preferences
- * with the base editor's preferences.
- *
- * @return IPreferenceStore
- */
- private IPreferenceStore createCombinedPreferenceStore() {
- IPreferenceStore sseEditorPrefs = SSEUIPlugin.getDefault().getPreferenceStore();
- IPreferenceStore baseEditorPrefs = EditorsUI.getPreferenceStore();
- return new ChainedPreferenceStore(new IPreferenceStore[]{sseEditorPrefs, baseEditorPrefs});
- }
-
- /**
- * Note: Clients cannot override this method because this method returns a
- * specially configured Annotation Hover for the StructuredTextViewer
- *
- * (non-Javadoc)
- * @see org.eclipse.ui.editors.text.TextSourceViewerConfiguration#getAnnotationHover(org.eclipse.jface.text.source.ISourceViewer)
- */
- final public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
- return new StructuredTextAnnotationHover() {
- protected boolean isIncluded(Annotation annotation) {
- return isShowInVerticalRuler(annotation);
- }
- };
- }
-
- /**
- * Get color for the preference key. Assumes fPreferenceStore is not null.
- *
- * @param key
- * @return Color for preference key or null if none found
- */
- private Color getColor(String key) {
- RGB rgb = PreferenceConverter.getColor(fPreferenceStore, key);
- return EditorUtility.getColor(rgb);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getAutoEditStrategies(org.eclipse.jface.text.source.ISourceViewer, java.lang.String)
- */
- public IAutoEditStrategy[] getAutoEditStrategies(ISourceViewer sourceViewer, String contentType) {
- List allStrategies = new ArrayList(0);
-
- IAutoEditStrategy[] superStrategies = super.getAutoEditStrategies(sourceViewer, contentType);
- for (int i = 0; i < superStrategies.length; i++) {
- allStrategies.add(superStrategies[i]);
- }
-
- // add auto edit strategies contributed by clients
- List extendedAutoEdits = ExtendedConfigurationBuilder.getInstance().getConfigurations(AUTOEDITSTRATEGY, contentType);
- if (!extendedAutoEdits.isEmpty()) {
- allStrategies.addAll(extendedAutoEdits);
- }
-
- return (IAutoEditStrategy[]) allStrategies.toArray(new IAutoEditStrategy[allStrategies.size()]);
- }
-
- /**
- * Returns the configured partitioning for the given source viewer. The
- * partitioning is used when the querying content types from the source
- * viewer's input document.<br />
- * Note: Clients cannot override this method at this time.
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @return the configured partitioning
- * @see #getConfiguredContentTypes(ISourceViewer)
- */
- final public String getConfiguredDocumentPartitioning(ISourceViewer sourceViewer) {
- /*
- * This implementation returns default structured text partitioning
- */
- return IStructuredPartitioning.DEFAULT_STRUCTURED_PARTITIONING;
- }
-
- public int[] getConfiguredTextHoverStateMasks(ISourceViewer sourceViewer, String contentType) {
- /*
- * This implementation returns configured text hover state masks for
- * StructuredTextViewers
- */
- TextHoverManager.TextHoverDescriptor[] hoverDescs = SSEUIPlugin.getDefault().getTextHoverManager().getTextHovers();
- int stateMasks[] = new int[hoverDescs.length];
- int stateMasksLength = 0;
- for (int i = 0; i < hoverDescs.length; i++) {
- if (hoverDescs[i].isEnabled()) {
- int j = 0;
- int stateMask = computeStateMask(hoverDescs[i].getModifierString());
- while (j < stateMasksLength) {
- if (stateMasks[j] == stateMask)
- break;
- j++;
- }
- if (j == stateMasksLength)
- stateMasks[stateMasksLength++] = stateMask;
- }
- }
- if (stateMasksLength == hoverDescs.length)
- return stateMasks;
-
- int[] shortenedStateMasks = new int[stateMasksLength];
- System.arraycopy(stateMasks, 0, shortenedStateMasks, 0, stateMasksLength);
- return shortenedStateMasks;
- }
-
- /**
- * Returns the content assistant ready to be used with the given source
- * viewer.<br />
- * Note: The same instance of IContentAssistant is returned regardless of
- * the source viewer passed in.
- * <p>
- * Clients should generally not override this method. Instead, clients
- * wanting to add their own processors should override
- * <code>getContentAssistProcessors(ISourceViewer, String)</code>
- * </p>
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @return a content assistant
- * @see #getContentAssistProcessors(ISourceViewer, String)
- */
- public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
- /*
- * Note: This method was made final so that StructuredContentAssist is
- * always used and content assist extension point always works.
- */
- if (fContentAssistant == null) {
- fContentAssistant = new StructuredContentAssistant();
-
- // content assistant configurations
- fContentAssistant.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
- fContentAssistant.enableAutoActivation(true);
- fContentAssistant.setProposalPopupOrientation(IContentAssistant.PROPOSAL_OVERLAY);
- fContentAssistant.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE);
- fContentAssistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
-
- // set content assist preferences
- if (fPreferenceStore != null) {
- int delay = fPreferenceStore.getInt(EditorPreferenceNames.CODEASSIST_AUTOACTIVATION_DELAY);
- fContentAssistant.setAutoActivationDelay(delay);
-
- Color color = getColor(EditorPreferenceNames.CODEASSIST_PROPOSALS_BACKGROUND);
- fContentAssistant.setProposalSelectorBackground(color);
-
- color = getColor(EditorPreferenceNames.CODEASSIST_PROPOSALS_FOREGROUND);
- fContentAssistant.setProposalSelectorForeground(color);
-
- color = getColor(EditorPreferenceNames.CODEASSIST_PARAMETERS_BACKGROUND);
- fContentAssistant.setContextInformationPopupBackground(color);
- fContentAssistant.setContextSelectorBackground(color);
-
- color = getColor(EditorPreferenceNames.CODEASSIST_PARAMETERS_FOREGROUND);
- fContentAssistant.setContextInformationPopupForeground(color);
- fContentAssistant.setContextSelectorForeground(color);
- }
- }
-
- if (!fContentAssistant.isInitialized()) {
- // add content assist processors for each partition type
- String[] types = getConfiguredContentTypes(sourceViewer);
- for (int i = 0; i < types.length; i++) {
- String type = types[i];
-
- // add all content assist processors for current partiton type
- IContentAssistProcessor[] processors = getContentAssistProcessors(sourceViewer, type);
- if (processors != null) {
- for (int j = 0; j < processors.length; j++) {
- fContentAssistant.setContentAssistProcessor(processors[j], type);
- }
- }
- }
- }
- return fContentAssistant;
- }
-
- /**
- * Returns the content assist processors that will be used for content
- * assist in the given source viewer and for the given partition type.
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @param partitionType
- * the partition type for which the content assist processors
- * are applicable
- * @return IContentAssistProcessors or null if should not be supported
- */
- protected IContentAssistProcessor[] getContentAssistProcessors(ISourceViewer sourceViewer, String partitionType) {
- return null;
- }
-
- /**
- * Returns the content formatter ready to be used with the given source
- * viewer.
- * <p>
- * It is not recommended that clients override this method as it may
- * become <code>final</code> in the future and replaced by an extensible
- * framework.
- * </p>
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @return a content formatter or <code>null</code> if formatting should
- * not be supported
- */
- public IContentFormatter getContentFormatter(ISourceViewer sourceViewer) {
- // try to use the StructuredTextMultiPassContentFormatter so that it
- // picks up any additional formatting strategies contributed via the
- // editorConfiguration extension point
- IContentFormatter formatter = null;
- if (sourceViewer != null) {
- IDocument document = sourceViewer.getDocument();
- if (document instanceof IDocumentExtension3) {
- String partitioning = getConfiguredDocumentPartitioning(sourceViewer);
- IDocumentPartitioner partitioner = ((IDocumentExtension3) document).getDocumentPartitioner(partitioning);
- if (partitioner instanceof StructuredTextPartitioner) {
- String defaultPartitionType = ((StructuredTextPartitioner) partitioner).getDefaultPartitionType();
- formatter = new StructuredTextMultiPassContentFormatter(partitioning, defaultPartitionType);
- }
- }
- }
-
- return formatter;
- }
-
- /**
- * Returns the double-click strategy ready to be used in this viewer when
- * double clicking onto text of the given content type. Note that if
- * clients want to contribute their own doubleclick strategy, they should
- * use <code>org.eclipse.wst.sse.ui.editorConfiguration</code> extension
- * point's <code>doubleClickStrategy</code> element instead of
- * overriding this method. If clients do override this method, please
- * remember to call <code>super.getDoubleClickStrategy()</code>.
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @param contentType
- * the content type for which the strategy is applicable
- * @return a double-click strategy or <code>null</code> if double
- * clicking should not be supported
- */
- public ITextDoubleClickStrategy getDoubleClickStrategy(ISourceViewer sourceViewer, String contentType) {
- ITextDoubleClickStrategy strategy = null;
- Object extendedStrategy = ExtendedConfigurationBuilder.getInstance().getConfiguration(ExtendedConfigurationBuilder.DOUBLECLICKSTRATEGY, contentType);
- if (extendedStrategy instanceof ITextDoubleClickStrategy) {
- strategy = (ITextDoubleClickStrategy) extendedStrategy;
- }
- else {
- strategy = super.getDoubleClickStrategy(sourceViewer, contentType);
- }
- return strategy;
- }
-
- /**
- * Returns the hyperlink presenter for the given source viewer.<br />
- * Note: Clients cannot override this method, and although it's no longer
- * necessary, it must remain for binary compatibility.
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @return a hyperlink presenter specially configured for
- * StructuredTextViewer
- */
- final public IHyperlinkPresenter getHyperlinkPresenter(ISourceViewer sourceViewer) {
- if (fPreferenceStore == null) {
- return super.getHyperlinkPresenter(sourceViewer);
- }
- return new MultipleHyperlinkPresenter(fPreferenceStore);
- }
-
- /**
- * Returns the information control creator. The creator is a factory
- * creating information controls for the given source viewer.<br />
- * Note: Clients cannot override this method at this time.
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @return the information control creator
- */
- final public IInformationControlCreator getInformationControlCreator(ISourceViewer sourceViewer) {
- // used by hover help
- return new IInformationControlCreator() {
- public IInformationControl createInformationControl(Shell parent) {
- return new DefaultInformationControl(parent, new HTMLTextPresenter(true));
- }
- };
- }
-
- /**
- * Returns the information presenter ready to be used with the given
- * source viewer.
- * <p>
- * Clients cannot override this method. Instead, clients wanting to add
- * their own information providers should override
- * <code>getInformationProvider(ISourceViewer, String)</code>
- * </p>
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @return a content assistant
- * @see #getInformationProvider(ISourceViewer, String)
- */
- final public IInformationPresenter getInformationPresenter(ISourceViewer sourceViewer) {
- InformationPresenter presenter = new InformationPresenter(getInformationPresenterControlCreator(sourceViewer));
-
- // information presenter configurations
- presenter.setSizeConstraints(60, 10, true, true);
- presenter.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
-
- // add information providers for each partition type
- String[] types = getConfiguredContentTypes(sourceViewer);
- for (int i = 0; i < types.length; i++) {
- String type = types[i];
-
- IInformationProvider provider = getInformationProvider(sourceViewer, type);
- if (provider != null) {
- presenter.setInformationProvider(provider, type);
- }
- }
-
- return presenter;
- }
-
- /**
- * Returns the information provider that will be used for information
- * presentation in the given source viewer and for the given partition
- * type.
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @param partitionType
- * the partition type for which the information provider is
- * applicable
- * @return IInformationProvider or null if should not be supported
- * @deprecated instead of overriding this method to provide documentation
- * information, adopters should use the
- * <code>documentationTextHover</code> element in the
- * <code>org.eclipse.wst.sse.ui.editorConfiguration</code>
- * extension point
- */
- protected IInformationProvider getInformationProvider(ISourceViewer sourceViewer, String partitionType) {
- ITextHover bestMatchHover = new BestMatchHover(createDocumentationHovers(partitionType));
- return new TextHoverInformationProvider(bestMatchHover);
- }
-
- /**
- * Returns the information presenter control creator. The creator is a
- * factory creating the presenter controls for the given source viewer.
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @return an information control creator
- */
- private IInformationControlCreator getInformationPresenterControlCreator(ISourceViewer sourceViewer) {
- return new IInformationControlCreator() {
- public IInformationControl createInformationControl(Shell parent) {
- int shellStyle = SWT.RESIZE | SWT.TOOL;
- int style = SWT.V_SCROLL | SWT.H_SCROLL;
- return new DefaultInformationControl(parent, shellStyle, style, new HTMLTextPresenter(false));
- }
- };
- }
-
- /**
- * Returns the line style providers that will be used for syntax
- * highlighting in the given source viewer.
- * <p>
- * Not fully API since return type LineStyleProvider is not API.
- * </p>
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @param partitionType
- * the partition type for which the lineStyleProviders are
- * applicable
- * @return LineStyleProvders or null if should not be supported
- */
- public LineStyleProvider[] getLineStyleProviders(ISourceViewer sourceViewer, String partitionType) {
- return null;
- }
-
- /**
- * See <code>getLineStyleProviders(ISourceViewer, String)</code> for
- * alternative way to provide highlighting information.
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @return always returns null
- * @see #getLineStyleProviders(ISourceViewer, String)
- */
- public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) {
- StructuredPresentationReconciler reconciler = new StructuredPresentationReconciler();
- reconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
-
- String[] contentTypes = getConfiguredContentTypes(sourceViewer);
-
- if(contentTypes != null) {
- StructuredDocumentDamagerRepairer dr = null;
-
- for (int i = 0; i < contentTypes.length; i++) {
- if (fHighlighter != null) {
- LineStyleProvider provider = fHighlighter.getProvider(contentTypes[i]);
- if (provider == null)
- continue;
-
- dr = new StructuredDocumentDamagerRepairer(provider);
- dr.setDocument(sourceViewer.getDocument());
- reconciler.setDamager(dr, contentTypes[i]);
- reconciler.setRepairer(dr, contentTypes[i]);
- }
- }
- }
-
- return reconciler;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.editors.text.TextSourceViewerConfiguration#getOverviewRulerAnnotationHover(org.eclipse.jface.text.source.ISourceViewer)
- */
- public IAnnotationHover getOverviewRulerAnnotationHover(ISourceViewer sourceViewer) {
- return new StructuredTextAnnotationHover(true) {
- protected boolean isIncluded(Annotation annotation) {
- return isShowInOverviewRuler(annotation);
- }
- };
- }
-
- /*
- * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getQuickAssistAssistant(org.eclipse.jface.text.source.ISourceViewer)
- */
- public IQuickAssistAssistant getQuickAssistAssistant(ISourceViewer sourceViewer) {
- if (fQuickAssistant == null) {
- IQuickAssistAssistant assistant = new QuickAssistAssistant();
- assistant.setQuickAssistProcessor(new CompoundQuickAssistProcessor());
- assistant.setInformationControlCreator(getQuickAssistAssistantInformationControlCreator());
-
- // Waiting for color preferences, see:
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=133731
- // set content assist preferences
- if (fPreferenceStore != null) {
- Color color = getColor(EditorPreferenceNames.CODEASSIST_PROPOSALS_BACKGROUND);
- assistant.setProposalSelectorBackground(color);
-
- color = getColor(EditorPreferenceNames.CODEASSIST_PROPOSALS_FOREGROUND);
- assistant.setProposalSelectorForeground(color);
- }
- fQuickAssistant = assistant;
- }
- return fQuickAssistant;
- }
-
- /**
- * Returns the information control creator for the quick assist assistant.
- *
- * @return the information control creator
- */
- private IInformationControlCreator getQuickAssistAssistantInformationControlCreator() {
- return new IInformationControlCreator() {
- public IInformationControl createInformationControl(Shell parent) {
- return new DefaultInformationControl(parent, SWT.NONE, new HTMLTextPresenter(true));
- }
- };
- }
-
- /**
- * 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
- */
- final public IReconciler getReconciler(ISourceViewer sourceViewer) {
- IReconciler reconciler = null;
-
- if (sourceViewer != null) {
- //Only create reconciler if sourceViewer is present
- if (fReconciler == null && sourceViewer != null) {
- StructuredRegionProcessor newReconciler = new StructuredRegionProcessor();
-
- // reconciler configurations
- newReconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
-
- fReconciler = newReconciler;
- }
- reconciler = fReconciler;
- }
-
- return reconciler;
- }
-
- /**
- * @since 2.0
- * @param treeViewer
- * @return a label provider providing the status line contents
- */
- public ILabelProvider getStatusLineLabelProvider(ISourceViewer sourceViewer) {
- return null;
- }
-
- /**
- * Create documentation hovers based on hovers contributed via
- * <code>org.eclipse.wst.sse.ui.editorConfiguration</code> extension
- * point
- *
- * @param partitionType
- * @return
- */
- private ITextHover[] createDocumentationHovers(String partitionType) {
- List extendedTextHover = ExtendedConfigurationBuilder.getInstance().getConfigurations(ExtendedConfigurationBuilder.DOCUMENTATIONTEXTHOVER, partitionType);
- ITextHover[] hovers = (ITextHover[]) extendedTextHover.toArray(new ITextHover[extendedTextHover.size()]);
- return hovers;
- }
-
- public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType, int stateMask) {
- ITextHover textHover = null;
-
- /*
- * Returns a default problem, annotation, and best match hover
- * depending on stateMask
- */
- TextHoverManager.TextHoverDescriptor[] hoverDescs = SSEUIPlugin.getDefault().getTextHoverManager().getTextHovers();
- int i = 0;
- while (i < hoverDescs.length && textHover == null) {
- if (hoverDescs[i].isEnabled() && computeStateMask(hoverDescs[i].getModifierString()) == stateMask) {
- String hoverType = hoverDescs[i].getId();
- if (TextHoverManager.PROBLEM_HOVER.equalsIgnoreCase(hoverType))
- textHover = new ProblemAnnotationHoverProcessor();
- else if (TextHoverManager.ANNOTATION_HOVER.equalsIgnoreCase(hoverType))
- textHover = new AnnotationHoverProcessor();
- else if (TextHoverManager.COMBINATION_HOVER.equalsIgnoreCase(hoverType))
- textHover = new BestMatchHover(createDocumentationHovers(contentType));
- else if (TextHoverManager.DOCUMENTATION_HOVER.equalsIgnoreCase(hoverType)) {
- ITextHover[] hovers = createDocumentationHovers(contentType);
- if (hovers.length > 0) {
- textHover = hovers[0];
- }
- }
- }
- i++;
- }
- return textHover;
- }
-
- /**
- * Returns the undo manager for the given source viewer.<br />
- * Note: Clients cannot override this method because this method returns a
- * specially configured undo manager for the StructuredTextViewer.
- *
- * @param sourceViewer
- * the source viewer to be configured by this configuration
- * @return an undo manager specially configured for StructuredTextViewer
- */
- final public IUndoManager getUndoManager(ISourceViewer sourceViewer) {
- /*
- * This implementation returns an UndoManager that is used exclusively
- * in StructuredTextViewer
- */
- return new StructuredTextViewerUndoManager();
- }
-
- public void setHighlighter(ReconcilerHighlighter highlighter) {
- fHighlighter = highlighter;
- }
-}

Back to the top