|
Re: How to implement hyperlinking for URI of importURI grammar element? [message #1226465 is a reply to message #1226453] |
Wed, 01 January 2014 21:49 |
|
Hi,
i think you have todo this yourself
you may use this (quick and dirty) code as starting point. (maybe googling reveals better code
public class MyDslHyperlinkHelper extends HyperlinkHelper {
@Inject
MyDslGrammarAccess ga;
@Inject
ImportUriResolver r;
@Inject
private Provider<XtextHyperlink> hyperlinkProvider;
@Inject
ImportUriGlobalScopeProvider gsp;
@Override
public void createHyperlinksByOffset(XtextResource resource, int offset,
IHyperlinkAcceptor acceptor) {
INode node = NodeModelUtils.findLeafNodeAtOffset(resource.getParseResult().getRootNode(), offset);
if (node != null && node.getGrammarElement() instanceof RuleCall && node.getSemanticElement() instanceof Import) {
if (ga.getSTRINGRule().equals(((RuleCall)node.getGrammarElement()).getRule())) {
Import i = (Import) node.getSemanticElement();
String uriString = i.getImportURI();
URI uri = URI.createURI(uriString);
final URIConverter uriConverter = resource.getResourceSet().getURIConverter();
final URI normalized = uri.isPlatformResource() ? uri : uriConverter.normalize(uri);
final URI targetURI = gsp.getResourceDescriptions(resource, Lists.newArrayList(normalized)).getResourceDescription(normalized).getURI();
XtextHyperlink result = hyperlinkProvider.get();
result.setURI(targetURI);
Region region = new Region(node.getOffset(), node.getLength());
result.setHyperlinkRegion(region);
result.setHyperlinkText(uriString);
acceptor.accept(result);
}
}
super.createHyperlinksByOffset(resource, offset, acceptor);
}
}
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.03224 seconds