diff options
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.java | 691 |
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; - } -} |