package org.xpect.ui.services; import org.eclipse.jface.text.hyperlink.IHyperlink; import org.eclipse.xtext.resource.XtextResource; import org.eclipse.xtext.ui.editor.hyperlinking.IHyperlinkHelper; import org.xpect.registry.DefaultBinding; import org.xpect.ui.util.XpectFileAccess; import com.google.inject.Inject; public class XtHyperlinkHelper implements IHyperlinkHelper { @Inject @DefaultBinding private IHyperlinkHelper originalHelper; public IHyperlink[] createHyperlinksByOffset(XtextResource resource, int offset, boolean createMultipleHyperlinks) { XtextResource xpectResource = XpectFileAccess.getXpectResource(resource); IHyperlinkHelper hyperlinkHelper = xpectResource.getResourceServiceProvider().get(IHyperlinkHelper.class); IHyperlink[] xpectLinks = hyperlinkHelper.createHyperlinksByOffset(xpectResource, offset, createMultipleHyperlinks); IHyperlink[] originalLinks = originalHelper.createHyperlinksByOffset(resource, offset, createMultipleHyperlinks); if (xpectLinks != null && originalLinks != null) { IHyperlink[] result = new IHyperlink[xpectLinks.length + originalLinks.length]; System.arraycopy(xpectLinks, 0, result, 0, xpectLinks.length); System.arraycopy(originalLinks, 0, result, xpectLinks.length, originalLinks.length); return result; } else if (xpectLinks != null) { return xpectLinks; } return originalLinks; } }