Search in sources :

Example 1 with IHyperlinkDetector

use of org.eclipse.jface.text.hyperlink.IHyperlinkDetector in project eclipse.platform.text by eclipse.

the class SourceViewer method configure.

@Override
public void configure(SourceViewerConfiguration configuration) {
    if (getTextWidget() == null)
        return;
    setDocumentPartitioning(configuration.getConfiguredDocumentPartitioning(this));
    // install content type independent plug-ins
    fPresentationReconciler = configuration.getPresentationReconciler(this);
    if (fPresentationReconciler != null)
        fPresentationReconciler.install(this);
    fReconciler = configuration.getReconciler(this);
    if (fReconciler != null)
        fReconciler.install(this);
    fContentAssistant = configuration.getContentAssistant(this);
    if (fContentAssistant != null) {
        fContentAssistant.install(this);
        if (fContentAssistant instanceof IContentAssistantExtension2 && fContentAssistant instanceof IContentAssistantExtension4)
            fContentAssistantFacade = new ContentAssistantFacade(fContentAssistant);
        fContentAssistantInstalled = true;
    }
    fQuickAssistAssistant = configuration.getQuickAssistAssistant(this);
    if (fQuickAssistAssistant != null) {
        fQuickAssistAssistant.install(this);
        fQuickAssistAssistantInstalled = true;
    }
    fContentFormatter = configuration.getContentFormatter(this);
    fInformationPresenter = configuration.getInformationPresenter(this);
    if (fInformationPresenter != null)
        fInformationPresenter.install(this);
    setUndoManager(configuration.getUndoManager(this));
    getTextWidget().setTabs(configuration.getTabWidth(this));
    setAnnotationHover(configuration.getAnnotationHover(this));
    setOverviewRulerAnnotationHover(configuration.getOverviewRulerAnnotationHover(this));
    setHoverControlCreator(configuration.getInformationControlCreator(this));
    setHyperlinkPresenter(configuration.getHyperlinkPresenter(this));
    IHyperlinkDetector[] hyperlinkDetectors = configuration.getHyperlinkDetectors(this);
    int eventStateMask = configuration.getHyperlinkStateMask(this);
    setHyperlinkDetectors(hyperlinkDetectors, eventStateMask);
    // install content type specific plug-ins
    String[] types = configuration.getConfiguredContentTypes(this);
    for (String t : types) {
        setAutoEditStrategies(configuration.getAutoEditStrategies(this, t), t);
        setTextDoubleClickStrategy(configuration.getDoubleClickStrategy(this, t), t);
        int[] stateMasks = configuration.getConfiguredTextHoverStateMasks(this, t);
        if (stateMasks != null) {
            for (int stateMask : stateMasks) {
                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);
    }
    setCodeMiningProviders(configuration.getCodeMiningProviders(this));
    activatePlugins();
}
Also used : IHyperlinkDetector(org.eclipse.jface.text.hyperlink.IHyperlinkDetector) IContentAssistantExtension2(org.eclipse.jface.text.contentassist.IContentAssistantExtension2) IContentAssistantExtension4(org.eclipse.jface.text.contentassist.IContentAssistantExtension4) Point(org.eclipse.swt.graphics.Point)

Example 2 with IHyperlinkDetector

use of org.eclipse.jface.text.hyperlink.IHyperlinkDetector in project eclipse.platform.text by eclipse.

the class AbstractTextEditor method handlePreferenceStoreChanged.

/**
 * Handles a property change event describing a change of the editor's
 * preference store and updates the preference related editor properties.
 * <p>
 * Subclasses may extend.
 * </p>
 *
 * @param event the property change event
 */
protected void handlePreferenceStoreChanged(PropertyChangeEvent event) {
    if (fSourceViewer == null)
        return;
    String property = event.getProperty();
    if (getFontPropertyPreferenceKey().equals(property))
        // There is a separate handler for font preference changes
        return;
    if (PREFERENCE_COLOR_FOREGROUND.equals(property) || PREFERENCE_COLOR_FOREGROUND_SYSTEM_DEFAULT.equals(property) || PREFERENCE_COLOR_BACKGROUND.equals(property) || PREFERENCE_COLOR_BACKGROUND_SYSTEM_DEFAULT.equals(property) || PREFERENCE_COLOR_SELECTION_FOREGROUND.equals(property) || PREFERENCE_COLOR_SELECTION_FOREGROUND_SYSTEM_DEFAULT.equals(property) || PREFERENCE_COLOR_SELECTION_BACKGROUND.equals(property) || PREFERENCE_COLOR_SELECTION_BACKGROUND_SYSTEM_DEFAULT.equals(property)) {
        initializeViewerColors(fSourceViewer);
    } else if (PREFERENCE_COLOR_FIND_SCOPE.equals(property)) {
        initializeFindScopeColor(fSourceViewer);
    } else if (PREFERENCE_USE_CUSTOM_CARETS.equals(property)) {
        updateCaret();
    } else if (PREFERENCE_WIDE_CARET.equals(property)) {
        updateCaret();
    }
    if (affectsTextPresentation(event))
        fSourceViewer.invalidateTextPresentation();
    if (PREFERENCE_HYPERLINKS_ENABLED.equals(property)) {
        if (fSourceViewer instanceof ITextViewerExtension6) {
            IHyperlinkDetector[] detectors = getSourceViewerConfiguration().getHyperlinkDetectors(fSourceViewer);
            int stateMask = getSourceViewerConfiguration().getHyperlinkStateMask(fSourceViewer);
            ITextViewerExtension6 textViewer6 = (ITextViewerExtension6) fSourceViewer;
            textViewer6.setHyperlinkDetectors(detectors, stateMask);
        }
        return;
    }
    if (PREFERENCE_HYPERLINK_KEY_MODIFIER.equals(property)) {
        if (fSourceViewer instanceof ITextViewerExtension6) {
            ITextViewerExtension6 textViewer6 = (ITextViewerExtension6) fSourceViewer;
            IHyperlinkDetector[] detectors = getSourceViewerConfiguration().getHyperlinkDetectors(fSourceViewer);
            int stateMask = getSourceViewerConfiguration().getHyperlinkStateMask(fSourceViewer);
            textViewer6.setHyperlinkDetectors(detectors, stateMask);
        }
        return;
    }
    if (PREFERENCE_RULER_CONTRIBUTIONS.equals(property)) {
        String[] difference = StringSetSerializer.getDifference((String) event.getOldValue(), (String) event.getNewValue());
        IColumnSupport support = getAdapter(IColumnSupport.class);
        for (int i = 0; i < difference.length; i++) {
            RulerColumnDescriptor desc = RulerColumnRegistry.getDefault().getColumnDescriptor(difference[i]);
            if (desc != null && support.isColumnSupported(desc)) {
                boolean newState = !support.isColumnVisible(desc);
                support.setColumnVisible(desc, newState);
            }
        }
        return;
    }
    if (PREFERENCE_SHOW_WHITESPACE_CHARACTERS.equals(property) || PREFERENCE_SHOW_LEADING_SPACES.equals(property) || PREFERENCE_SHOW_ENCLOSED_SPACES.equals(property) || PREFERENCE_SHOW_TRAILING_SPACES.equals(property) || PREFERENCE_SHOW_LEADING_IDEOGRAPHIC_SPACES.equals(property) || PREFERENCE_SHOW_ENCLOSED_IDEOGRAPHIC_SPACES.equals(property) || PREFERENCE_SHOW_TRAILING_IDEOGRAPHIC_SPACES.equals(property) || PREFERENCE_SHOW_LEADING_TABS.equals(property) || PREFERENCE_SHOW_ENCLOSED_TABS.equals(property) || PREFERENCE_SHOW_TRAILING_TABS.equals(property) || PREFERENCE_SHOW_CARRIAGE_RETURN.equals(property) || PREFERENCE_SHOW_LINE_FEED.equals(property) || PREFERENCE_WHITESPACE_CHARACTER_ALPHA_VALUE.equals(property)) {
        IAction action = getAction(ITextEditorActionConstants.SHOW_WHITESPACE_CHARACTERS);
        if (action instanceof IUpdate)
            ((IUpdate) action).update();
        return;
    }
    if (PREFERENCE_TEXT_DRAG_AND_DROP_ENABLED.equals(property)) {
        IPreferenceStore store = getPreferenceStore();
        if (store != null && store.getBoolean(PREFERENCE_TEXT_DRAG_AND_DROP_ENABLED))
            installTextDragAndDrop(getSourceViewer());
        else
            uninstallTextDragAndDrop(getSourceViewer());
        return;
    }
    if (PREFERENCE_HOVER_ENRICH_MODE.equals(property)) {
        if (fSourceViewer instanceof ITextViewerExtension8) {
            IPreferenceStore store = getPreferenceStore();
            if (store != null) {
                ((ITextViewerExtension8) fSourceViewer).setHoverEnrichMode(convertEnrichModePreference(store.getInt(PREFERENCE_HOVER_ENRICH_MODE)));
            }
        }
        return;
    }
}
Also used : IHyperlinkDetector(org.eclipse.jface.text.hyperlink.IHyperlinkDetector) IAction(org.eclipse.jface.action.IAction) ITextViewerExtension6(org.eclipse.jface.text.ITextViewerExtension6) Point(org.eclipse.swt.graphics.Point) RulerColumnDescriptor(org.eclipse.ui.texteditor.rulers.RulerColumnDescriptor) ITextViewerExtension8(org.eclipse.jface.text.ITextViewerExtension8) IColumnSupport(org.eclipse.ui.texteditor.rulers.IColumnSupport) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore)

Example 3 with IHyperlinkDetector

use of org.eclipse.jface.text.hyperlink.IHyperlinkDetector in project eclipse.platform.text by eclipse.

the class AbstractDecoratedTextEditor method handlePreferenceStoreChanged.

@Override
protected void handlePreferenceStoreChanged(PropertyChangeEvent event) {
    try {
        ISourceViewer sourceViewer = getSourceViewer();
        if (sourceViewer == null)
            return;
        String property = event.getProperty();
        if (fSourceViewerDecorationSupport != null && fOverviewRuler != null && OVERVIEW_RULER.equals(property)) {
            if (isOverviewRulerVisible())
                showOverviewRuler();
            else
                hideOverviewRuler();
            return;
        }
        if (USE_SATURATED_COLORS_IN_OVERVIEW_RULER.equals(property)) {
            if (fOverviewRuler instanceof IOverviewRulerExtension) {
                ((IOverviewRulerExtension) fOverviewRuler).setUseSaturatedColors(isPrefUseSaturatedColorsOn());
                fOverviewRuler.update();
            }
        }
        if (DISABLE_OVERWRITE_MODE.equals(property)) {
            enableOverwriteMode(isOverwriteModeEnabled());
            return;
        }
        if (LINE_NUMBER_RULER.equals(property)) {
            // only handle visibility of the combined column, but not the number/change only state
            IColumnSupport columnSupport = getAdapter(IColumnSupport.class);
            if (isLineNumberRulerVisible() && fLineColumn == null) {
                RulerColumnDescriptor lineNumberColumnDescriptor = RulerColumnRegistry.getDefault().getColumnDescriptor(LineNumberColumn.ID);
                if (lineNumberColumnDescriptor != null)
                    columnSupport.setColumnVisible(lineNumberColumnDescriptor, true);
            } else if (!isLineNumberRulerVisible() && fLineColumn != null && !fLineColumn.isShowingChangeInformation()) {
                columnSupport.setColumnVisible(fLineColumn.getDescriptor(), false);
                fLineColumn = null;
            }
            return;
        }
        if (AbstractDecoratedTextEditorPreferenceConstants.QUICK_DIFF_ALWAYS_ON.equals(property)) {
            showChangeInformation(isPrefQuickDiffAlwaysOn());
        }
        if (AbstractDecoratedTextEditorPreferenceConstants.EDITOR_TAB_WIDTH.equals(property)) {
            IPreferenceStore store = getPreferenceStore();
            if (store != null)
                sourceViewer.getTextWidget().setTabs(store.getInt(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_TAB_WIDTH));
            if (isTabsToSpacesConversionEnabled()) {
                uninstallTabsToSpacesConverter();
                installTabsToSpacesConverter();
            }
            return;
        }
        if (AbstractDecoratedTextEditorPreferenceConstants.EDITOR_SPACES_FOR_TABS.equals(property)) {
            if (isTabsToSpacesConversionEnabled())
                installTabsToSpacesConverter();
            else
                uninstallTabsToSpacesConverter();
            return;
        }
        if (AbstractDecoratedTextEditorPreferenceConstants.EDITOR_UNDO_HISTORY_SIZE.equals(property) && sourceViewer instanceof ITextViewerExtension6) {
            IPreferenceStore store = getPreferenceStore();
            if (store != null)
                ((ITextViewerExtension6) sourceViewer).getUndoManager().setMaximalUndoLevel(store.getInt(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_UNDO_HISTORY_SIZE));
            return;
        }
        if (AbstractDecoratedTextEditorPreferenceConstants.SHOW_RANGE_INDICATOR.equals(property)) {
            if (isRangeIndicatorEnabled()) {
                getSourceViewer().setRangeIndicator(getRangeIndicator());
            } else {
                getSourceViewer().removeRangeIndication();
                getSourceViewer().setRangeIndicator(null);
            }
        }
        if (sourceViewer instanceof ITextViewerExtension6) {
            HyperlinkDetectorDescriptor[] descriptor = EditorsUI.getHyperlinkDetectorRegistry().getHyperlinkDetectorDescriptors();
            for (int i = 0; i < descriptor.length; i++) {
                if (descriptor[i].getId().equals(property) || (descriptor[i].getId() + HyperlinkDetectorDescriptor.STATE_MASK_POSTFIX).equals(property)) {
                    IHyperlinkDetector[] detectors = getSourceViewerConfiguration().getHyperlinkDetectors(sourceViewer);
                    int stateMask = getSourceViewerConfiguration().getHyperlinkStateMask(sourceViewer);
                    ITextViewerExtension6 textViewer6 = (ITextViewerExtension6) sourceViewer;
                    textViewer6.setHyperlinkDetectors(detectors, stateMask);
                    return;
                }
            }
        }
    } finally {
        super.handlePreferenceStoreChanged(event);
    }
}
Also used : IHyperlinkDetector(org.eclipse.jface.text.hyperlink.IHyperlinkDetector) ITextViewerExtension6(org.eclipse.jface.text.ITextViewerExtension6) RulerColumnDescriptor(org.eclipse.ui.texteditor.rulers.RulerColumnDescriptor) IColumnSupport(org.eclipse.ui.texteditor.rulers.IColumnSupport) ISourceViewer(org.eclipse.jface.text.source.ISourceViewer) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore) IOverviewRulerExtension(org.eclipse.jface.text.source.IOverviewRulerExtension) Point(org.eclipse.swt.graphics.Point)

Example 4 with IHyperlinkDetector

use of org.eclipse.jface.text.hyperlink.IHyperlinkDetector in project eclipse.platform.text by eclipse.

the class TextViewer method setHyperlinkDetectors.

@Override
public void setHyperlinkDetectors(IHyperlinkDetector[] hyperlinkDetectors, int eventStateMask) {
    if (fHyperlinkDetectors != null) {
        for (IHyperlinkDetector fHyperlinkDetector : fHyperlinkDetectors) {
            if (fHyperlinkDetector instanceof IHyperlinkDetectorExtension)
                ((IHyperlinkDetectorExtension) fHyperlinkDetector).dispose();
        }
    }
    boolean enable = hyperlinkDetectors != null && hyperlinkDetectors.length > 0;
    fHyperlinkStateMask = eventStateMask;
    fHyperlinkDetectors = hyperlinkDetectors;
    if (enable) {
        if (fHyperlinkManager != null) {
            fHyperlinkManager.setHyperlinkDetectors(fHyperlinkDetectors);
            fHyperlinkManager.setHyperlinkStateMask(fHyperlinkStateMask);
        }
        ensureHyperlinkManagerInstalled();
    } else {
        if (fHyperlinkManager != null)
            fHyperlinkManager.uninstall();
        fHyperlinkManager = null;
    }
}
Also used : IHyperlinkDetector(org.eclipse.jface.text.hyperlink.IHyperlinkDetector) IHyperlinkDetectorExtension(org.eclipse.jface.text.hyperlink.IHyperlinkDetectorExtension)

Example 5 with IHyperlinkDetector

use of org.eclipse.jface.text.hyperlink.IHyperlinkDetector in project linuxtools by eclipse.

the class SpecfileConfiguration method getHyperlinkDetectors.

@Override
public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer sourceViewer) {
    if (sourceViewer == null) {
        return null;
    }
    Map<String, IAdaptable> targets = getHyperlinkDetectorTargets(sourceViewer);
    HyperlinkDetectorRegistry hlDetectorRegistry = EditorsUI.getHyperlinkDetectorRegistry();
    HyperlinkDetectorDescriptor[] hlDetectorDescriptor = hlDetectorRegistry.getHyperlinkDetectorDescriptors();
    List<IHyperlinkDetector> tempHDList = new ArrayList<>();
    for (Map.Entry<String, IAdaptable> entry : targets.entrySet()) {
        for (HyperlinkDetectorDescriptor hdd : hlDetectorDescriptor) {
            try {
                AbstractHyperlinkDetector ahld = (AbstractHyperlinkDetector) hdd.createHyperlinkDetectorImplementation();
                // however, allow URLHyperlinkWithMacroDetector
                if (hdd.getTargetId().equals(entry.getKey()) && (!(ahld instanceof URLHyperlinkDetector) || ahld instanceof URLHyperlinkWithMacroDetector)) {
                    ahld.setContext(entry.getValue());
                    tempHDList.add(ahld);
                }
            } catch (CoreException e) {
                SpecfileLog.logError(e);
            }
        }
    }
    if (!tempHDList.isEmpty()) {
        return tempHDList.toArray(new IHyperlinkDetector[tempHDList.size()]);
    } else {
        return null;
    }
}
Also used : IAdaptable(org.eclipse.core.runtime.IAdaptable) IHyperlinkDetector(org.eclipse.jface.text.hyperlink.IHyperlinkDetector) ArrayList(java.util.ArrayList) URLHyperlinkWithMacroDetector(org.eclipse.linuxtools.internal.rpm.ui.editor.hyperlink.URLHyperlinkWithMacroDetector) HyperlinkDetectorRegistry(org.eclipse.ui.texteditor.HyperlinkDetectorRegistry) URLHyperlinkDetector(org.eclipse.jface.text.hyperlink.URLHyperlinkDetector) HyperlinkDetectorDescriptor(org.eclipse.ui.texteditor.HyperlinkDetectorDescriptor) AbstractHyperlinkDetector(org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector) CoreException(org.eclipse.core.runtime.CoreException) Map(java.util.Map)

Aggregations

IHyperlinkDetector (org.eclipse.jface.text.hyperlink.IHyperlinkDetector)19 ArrayList (java.util.ArrayList)6 IRegion (org.eclipse.jface.text.IRegion)4 Point (org.eclipse.swt.graphics.Point)4 IAdaptable (org.eclipse.core.runtime.IAdaptable)3 IHyperlink (org.eclipse.jface.text.hyperlink.IHyperlink)3 HyperlinkDetectorRegistry (org.eclipse.ui.texteditor.HyperlinkDetectorRegistry)3 List (java.util.List)2 Map (java.util.Map)2 CoreException (org.eclipse.core.runtime.CoreException)2 IPreferenceStore (org.eclipse.jface.preference.IPreferenceStore)2 ITextViewerExtension6 (org.eclipse.jface.text.ITextViewerExtension6)2 IContentAssistantExtension2 (org.eclipse.jface.text.contentassist.IContentAssistantExtension2)2 IContentAssistantExtension4 (org.eclipse.jface.text.contentassist.IContentAssistantExtension4)2 ISourceViewer (org.eclipse.jface.text.source.ISourceViewer)2 SourceViewerConfiguration (org.eclipse.jface.text.source.SourceViewerConfiguration)2 SafeRunnable (org.eclipse.jface.util.SafeRunnable)2 ISelection (org.eclipse.jface.viewers.ISelection)2 IColumnSupport (org.eclipse.ui.texteditor.rulers.IColumnSupport)2 RulerColumnDescriptor (org.eclipse.ui.texteditor.rulers.RulerColumnDescriptor)2