类org.eclipse.jface.text.hyperlink.IHyperlink源码实例Demo

下面列出了怎么用org.eclipse.jface.text.hyperlink.IHyperlink的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: n4js   文件: N4JSHyperlinkDetector.java
/**
 * Method copied from super class with only a minor change: call to "readOnly" changed to "tryReadOnly".
 */
@Override
public IHyperlink[] detectHyperlinks(final ITextViewer textViewer, final IRegion region,
		final boolean canShowMultipleHyperlinks) {
	final IDocument xtextDocument = textViewer.getDocument();
	if (!(xtextDocument instanceof N4JSDocument)) {
		return super.detectHyperlinks(textViewer, region, canShowMultipleHyperlinks);
	}
	final IHyperlinkHelper helper = getHelper();
	return ((N4JSDocument) xtextDocument).tryReadOnly(new IUnitOfWork<IHyperlink[], XtextResource>() {
		@Override
		public IHyperlink[] exec(XtextResource resource) throws Exception {
			resource = tryConvertToFileResource(resource);
			if (resource == null) {
				return null;
			}
			if (helper instanceof ISourceViewerAware && textViewer instanceof ISourceViewer) {
				((ISourceViewerAware) helper).setSourceViewer((ISourceViewer) textViewer);
			}
			return helper.createHyperlinksByOffset(resource, region.getOffset(), canShowMultipleHyperlinks);
		}
	}, (IHyperlink[]) null);
}
 
@Override
public IHyperlink[] getHyperlinks(XtextResource resource, int offset) {
	EObject eObject = eObjectAtOffsetHelper.resolveElementAt(resource, offset);
	Pair<SafeURI<?>, Region> linkedProjectWithRegion = getUriRegionPair(eObject);

	if (linkedProjectWithRegion != null) {
		URI uri = linkedProjectWithRegion.getFirst().toURI();
		IRegion region = linkedProjectWithRegion.getSecond();
		IN4JSProject uriProject = model.findProject(uri).orNull();

		String lnkName = uriProject == null ? ProjectDescriptionUtils.deriveN4JSProjectNameFromURI(uri)
				: uriProject.getProjectName().getRawName();

		XtextHyperlink hyperlink = hyperlinkProvider.get();
		hyperlink.setHyperlinkRegion(region);
		hyperlink.setURI(uri);
		hyperlink.setHyperlinkText(lnkName);

		return new IHyperlink[] { hyperlink };
	}

	return null;
}
 
源代码3 项目: n4js   文件: JSONHyperlinkHelperProvider.java
@Override
public IHyperlink[] createHyperlinksByOffset(XtextResource resource, int offset, boolean createMultipleHyperlinks) {
	List<IHyperlink> links = new LinkedList<>();

	Collection<IJSONHyperlinkHelperExtension> hyperlinkHelperExtensions = registry.getHyperlinkHelperExtensions();
	for (IJSONHyperlinkHelperExtension hhExt : hyperlinkHelperExtensions) {
		IHyperlink[] hyperlinks = null;
		if (hhExt.isResponsible(resource)) {
			hyperlinks = hhExt.getHyperlinks(resource, offset);
		}
		if (hyperlinks == null) {
			continue;
		}

		List<IHyperlink> hyperlinkList = Arrays.asList(hyperlinks);
		links.addAll(hyperlinkList);
	}

	if (links.isEmpty()) {
		return null;
	}

	return links.toArray(new IHyperlink[links.size()]);
}
 
源代码4 项目: xtext-eclipse   文件: HyperlinkHelperTest.java
@Test public void testCreateHyperlinksByOffset_06() {
	assertNull(helper.createHyperlinksByOffset(resource, model.indexOf(":EObject]"), true));
	int idx = model.indexOf("EObject]");
	int length = "EObject".length();
	for(int i = idx; i <= length; i++) {
		IHyperlink[] hyperlinks = helper.createHyperlinksByOffset(resource, i, true);
		assertNotNull(hyperlinks);
		assertEquals(1, hyperlinks.length);
		assertTrue(hyperlinks[0] instanceof XtextHyperlink);
		XtextHyperlink hyperLink = (XtextHyperlink) hyperlinks[0];
		assertEquals("EObject".length(), hyperLink.getHyperlinkRegion().getLength());
		assertEquals(
				grammar.eResource().getResourceSet().getURIConverter().normalize(
				EcoreUtil.getURI(EcorePackage.eINSTANCE.getEObject())), hyperLink.getURI());
	}
}
 
源代码5 项目: APICloud-Studio   文件: JSHyperlinkDetector.java
/**
 * detectHyperlinks
 * 
 * @param editor
 * @param region
 * @param canShowMultipleHyperlinks
 * @return
 */
public IHyperlink[] detectHyperlinks(AbstractThemeableEditor editor, IRegion region,
		boolean canShowMultipleHyperlinks)
{
	IHyperlink[] result = null;

	if (editor != null && region != null)
	{
		// grab AST
		IParseNode ast = editor.getAST();

		if (ast instanceof JSParseRootNode)
		{
			// gather links
			result = processAST(editor, (JSParseRootNode) ast, region.getOffset());
		}
	}

	if (!canShowMultipleHyperlinks && !ArrayUtil.isEmpty(result))
	{
		result = new IHyperlink[] { result[0] };
	}

	return result;
}
 
protected IHyperlink[] makeNullsafe(IHyperlink[] hyperlinks) {
	if (Arrays.stream(hyperlinks).anyMatch(hyperLink -> (hyperLink == null || hyperLink.getHyperlinkRegion() == null))) {
		List<IHyperlink> nullSafeList = new ArrayList<>();
		Arrays.stream(hyperlinks).forEach(hyperLink -> {
			if (hyperLink != null && hyperLink.getHyperlinkRegion() != null) {
				nullSafeList.add(hyperLink);
			} else {
				Class<? extends IHyperlink> clazz = null;
				if (hyperLink != null) {
					clazz = hyperLink.getClass();
				}
				String name = null;
				if (clazz != null) {
					name = clazz.getName();
				}
				log.warn("Filtered invalid hyperlink: " + name);
			}
		});
		return nullSafeList.toArray(new IHyperlink[nullSafeList.size()]);
	}
	return hyperlinks;
}
 
源代码7 项目: xtext-eclipse   文件: OpenDeclarationHandler.java
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
	XtextEditor xtextEditor = EditorUtils.getActiveXtextEditor(event);
	if (xtextEditor != null) {
		ITextSelection selection = (ITextSelection) xtextEditor.getSelectionProvider().getSelection();

		IRegion region = new Region(selection.getOffset(), selection.getLength());

		ISourceViewer internalSourceViewer = xtextEditor.getInternalSourceViewer();

		IHyperlink[] hyperlinks = getDetector().detectHyperlinks(internalSourceViewer, region, false);
		if (hyperlinks != null && hyperlinks.length > 0) {
			IHyperlink hyperlink = hyperlinks[0];
			hyperlink.open();
		}
	}		
	return null;
}
 
源代码8 项目: xtext-eclipse   文件: XbaseHyperLinkHelper.java
/**
 * If multiple links are requested, all ambiguous candidates are provided for feature and constructor calls.
 */
@Override
public IHyperlink[] createHyperlinksByOffset(XtextResource resource, int offset, boolean createMultipleHyperlinks) {
	List<IHyperlink> links = Lists.newArrayList();
	IHyperlinkAcceptor acceptor = new XbaseHyperlinkAcceptor(links, createMultipleHyperlinks);
	super.createHyperlinksByOffset(resource, offset, acceptor);
	INode crossRefNode = getEObjectAtOffsetHelper().getCrossReferenceNode(resource, new TextRegion(offset, 0));
	if (crossRefNode == null) {
		this.createHyperlinksByOffset(resource, offset, acceptor);
	} else {
		this.createHyperlinksForCrossRef(resource, crossRefNode, acceptor);
	}
	if (!links.isEmpty())
		return Iterables.toArray(links, IHyperlink.class);
	return null;
}
 
源代码9 项目: xtext-eclipse   文件: XbaseHyperLinkHelper.java
protected void addOpenInferredTypeHyperlink(final XtextResource resource, JvmIdentifiableElement typedElement,
		ILeafNode node, final IHyperlinkAcceptor acceptor) {
	IResolvedTypes resolveTypes = typeResolver.resolveTypes(resource);
	final LightweightTypeReference type = resolveTypes.getActualType(typedElement);
	if (type != null && !type.isUnknown() && type.getType() != null) {
		createHyperlinksTo(resource, new Region(node.getOffset(), node.getLength()), type.getType(), new IHyperlinkAcceptor() {
			@Override
			public void accept(IHyperlink hyperlink) {
				if (hyperlink instanceof AbstractHyperlink) {
					AbstractHyperlink abstractHyperlink = (AbstractHyperlink) hyperlink;
					abstractHyperlink.setHyperlinkText("Open Inferred Type - " + type.getSimpleName());
					abstractHyperlink.setTypeLabel(SingleHoverShowingHyperlinkPresenter.SHOW_ALWAYS);
				}
				acceptor.accept(hyperlink);
			}
		});
	}
}
 
源代码10 项目: xtext-xtend   文件: DetectImplHyperlinksTest.java
@Test public void testComputeHyperlink_1() throws Exception {
	String content = "package foo class Foo { def b|ar(String a) {} }";
	XtextEditor xtextEditor = openEditor(content.replace("|", ""));
	int offset = content.indexOf("|");

	IHyperlink[] detectHyperlinks = hyperlinkDetector.detectHyperlinks(xtextEditor.getInternalSourceViewer(), new Region(offset,1), true);
	assertEquals(2, detectHyperlinks.length);
	IHyperlink hyperlink = detectHyperlinks[0];
	assertTrue(hyperlink instanceof JdtHyperlink);
	JdtHyperlink casted = (JdtHyperlink) hyperlink;
	assertEquals(offset -1, casted.getHyperlinkRegion().getOffset());
	assertEquals(3, casted.getHyperlinkRegion().getLength());
	IJavaElement element = ((JdtHyperlink) hyperlink).getJavaElement();
	assertTrue(element instanceof IType);
	assertEquals("Object", element.getElementName());
	assertEquals("Open Inferred Type - Object", casted.getHyperlinkText());
}
 
源代码11 项目: xtext-xtend   文件: OpenImplHyperlinksTest.java
@Test public void testComputeHyperlink_1() throws Exception {
	String content = "package foo class Foo implements IBar { override bar(String a) { b|ar('foo') } } interface IBar { def String bar(String a) }";
	XtextEditor xtextEditor = openEditor(content.replace("|", ""));
	int offset = content.indexOf("|");
	IHyperlink[] detectHyperlinks = hyperlinkDetector.detectHyperlinks(xtextEditor.getInternalSourceViewer(), new Region(offset,1), true);
	XbaseImplementatorsHyperlink casted = null;
	for (IHyperlink iHyperlink : detectHyperlinks) {
		if (iHyperlink instanceof XbaseImplementatorsHyperlink) {
			casted = (XbaseImplementatorsHyperlink) iHyperlink;
		}
	}
	@SuppressWarnings("null")
	Field field = casted.getClass().getDeclaredField("opener");
	field.setAccessible(true);
	TestJvmImplementationOpener testOpener = new TestJvmImplementationOpener();
	field.set(casted, testOpener);
	casted.open();
	assertTrue(testOpener.isOpenInEditor);
	assertFalse(testOpener.isOpenQuickHierarchy);
}
 
源代码12 项目: xtext-xtend   文件: OpenImplHyperlinksTest.java
@Test public void testComputeHyperlink_2() throws Exception {
	String content = "package foo interface IBar {def void bar(String a)} class Foo implements IBar { override bar(String a){ val IBar x = null; x.b|ar('foo'} } class Foo2 implements IBar { override bar(String a) {} }";
	XtextEditor xtextEditor = openEditor(content.replace("|", ""));
	int offset = content.indexOf("|");
	IHyperlink[] detectHyperlinks = hyperlinkDetector.detectHyperlinks(xtextEditor.getInternalSourceViewer(), new Region(offset,1), true);
	XbaseImplementatorsHyperlink casted = null;
	for (IHyperlink iHyperlink : detectHyperlinks) {
		if (iHyperlink instanceof XbaseImplementatorsHyperlink) {
			casted = (XbaseImplementatorsHyperlink) iHyperlink;
		}
	}
	@SuppressWarnings("null")
	Field field = casted.getClass().getDeclaredField("opener");
	field.setAccessible(true);
	TestJvmImplementationOpener testOpener = new TestJvmImplementationOpener();
	field.set(casted, testOpener);
	casted.open();
	assertFalse(testOpener.isOpenInEditor);
	assertTrue(testOpener.isOpenQuickHierarchy);

}
 
@Override
protected void addHyperlinks(List<IHyperlink> hyperlinksCollector, IRegion wordRegion, SelectionDispatchAction openAction, IJavaElement element, boolean qualify, JavaEditor editor) {
	try {
		if (element.getElementType() == IJavaElement.FIELD || element.getElementType() == IJavaElement.LOCAL_VARIABLE) {
			String typeSignature= getTypeSignature(element);
			if (!JavaModelUtil.isPrimitive(typeSignature) && SelectionConverter.canOperateOn(editor)) {
				if (Signature.getTypeSignatureKind(typeSignature) == Signature.INTERSECTION_TYPE_SIGNATURE) {
					String[] bounds= Signature.getIntersectionTypeBounds(typeSignature);
					qualify|= bounds.length >= 2;
					for (int i= 0; i < bounds.length; i++) {
						hyperlinksCollector.add(new JavaElementDeclaredTypeHyperlink(wordRegion, openAction, element, bounds[i], qualify));
					}
				} else {
					hyperlinksCollector.add(new JavaElementDeclaredTypeHyperlink(wordRegion, openAction, element, qualify));
				}
			}
		}
	} catch (JavaModelException e) {
		JavaPlugin.log(e);
	}
}
 
@Override
public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
    JsonDocument document = (JsonDocument) textViewer.getDocument();
    JsonPointer basePath = document.getPath(region);

    if (!canDetect(basePath)) {
        return null;
    }

    HyperlinkInfo info = getHyperlinkInfo(textViewer, region);
    if (info == null) {
        return null;
    }

    return doDetect(document, textViewer, info, basePath);
}
 
@Override
protected IHyperlink[] doDetect(JsonDocument doc, ITextViewer viewer, HyperlinkInfo info, JsonPointer pointer) {
    Model model = doc.getModel();
    AbstractNode node = model.find(pointer);
    List<AbstractNode> nodes = model.findByType(JsonPointer.compile("/definitions/operation"));
    Iterator<AbstractNode> it = nodes.iterator();

    AbstractNode found = null;
    while (it.hasNext() && found == null) {
        AbstractNode current = it.next();
        AbstractNode value = current.get("operationId");

        if (value != null && Objects.equals(node.asValue().getValue(), value.asValue().getValue())) {
            found = value;
        }
    }

    if (found != null) {
        IRegion target = doc.getRegion(found.getPointer());
        if (target != null) {
            return new IHyperlink[] { new SwaggerHyperlink(info.text, viewer, info.region, target) };
        }
    }

    return null;
}
 
@Override
protected IHyperlink[] doDetect(JsonDocument doc, ITextViewer viewer, HyperlinkInfo info, JsonPointer pointer) {
    Matcher matcher = PATTERN.matcher(pointer.toString());
    String link = matcher.find() ? matcher.group(1) : null;

    if (link != null) {
        Model model = doc.getModel();
        AbstractNode securityScheme = model.find("/components/securitySchemes/" + link);

        if (securityScheme != null) {
            IRegion target = doc.getRegion(securityScheme.getPointer());
            if (target != null) {
                return new IHyperlink[] { new SwaggerHyperlink(info.text, viewer, info.region, target) };
            }
        }
    }
    return null;
}
 
源代码17 项目: n4js   文件: HyperlinkXpectMethod.java
private EObject getTarget(XtextResource resource, IHyperlink hyperlink) {
	final ResourceSet resourceSet = resource != null ? resource.getResourceSet() : null;
	final URI uri = getURI(hyperlink);
	final EObject target = resourceSet != null && uri != null && uri.fragment() != null
			? resourceSet.getEObject(uri, true)
			: null;
	if (target instanceof SyntaxRelatedTElement)
		return ((SyntaxRelatedTElement) target).getAstElement();
	return target;
}
 
public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) {
	ITextEditor textEditor= (ITextEditor)getAdapter(ITextEditor.class);
	if (region == null || textEditor == null)
		return null;

	IEditorSite site= textEditor.getEditorSite();
	if (site == null)
		return null;

	ITypeRoot javaElement= getInputJavaElement(textEditor);
	if (javaElement == null)
		return null;

	CompilationUnit ast= SharedASTProvider.getAST(javaElement, SharedASTProvider.WAIT_NO, null);
	if (ast == null)
		return null;

	ASTNode node= NodeFinder.perform(ast, region.getOffset(), 1);
	if (!(node instanceof StringLiteral)  && !(node instanceof SimpleName))
		return null;

	if (node.getLocationInParent() == QualifiedName.QUALIFIER_PROPERTY)
		return null;

	IRegion nlsKeyRegion= new Region(node.getStartPosition(), node.getLength());
	AccessorClassReference ref= NLSHintHelper.getAccessorClassReference(ast, nlsKeyRegion);
	if (ref == null)
		return null;
	String keyName= null;
	if (node instanceof StringLiteral) {
		keyName= ((StringLiteral)node).getLiteralValue();
	} else {
		keyName= ((SimpleName)node).getIdentifier();
	}
	if (keyName != null)
		return new IHyperlink[] {new NLSKeyHyperlink(nlsKeyRegion, keyName, ref, textEditor)};

	return null;
}
 
源代码19 项目: xtext-eclipse   文件: HyperlinkHelperTest.java
@Test public void testCreateHyperlinksByOffset_01() {
	IHyperlink[] links = helper.createHyperlinksByOffset(resource, model.indexOf("common.Terminals"), true);
	assertNotNull(links);
	assertEquals(1, links.length);
	assertTrue(links[0] instanceof XtextHyperlink);
	assertEquals(model.indexOf("org.eclipse.xtext.common.Terminals"), links[0].getHyperlinkRegion().getOffset());
	assertEquals("org.eclipse.xtext.common.Terminals".length(), links[0].getHyperlinkRegion().getLength());
	checkHyperlink((XtextHyperlink) links[0]);
}
 
源代码20 项目: xtext-eclipse   文件: HyperlinkHelperTest.java
@Test public void testCreateHyperlinksByOffset_04() {
	IHyperlink[] links = helper.createHyperlinksByOffset(resource, model.indexOf("TRING r"), true);
	assertNotNull(links);
	assertEquals(1, links.length);
	assertTrue(links[0] instanceof XtextHyperlink);
	XtextHyperlink hyperLink = (XtextHyperlink) links[0];
	assertEquals(model.indexOf("STRING r"), hyperLink.getHyperlinkRegion().getOffset());
	assertEquals("STRING".length(), hyperLink.getHyperlinkRegion().getLength());
	assertEquals(
			grammar.eResource().getResourceSet().getURIConverter().normalize(
			EcoreUtil.getURI(GrammarUtil.findRuleForName(grammar.getUsedGrammars().get(0), "STRING"))), hyperLink.getURI());
}
 
源代码21 项目: xtext-eclipse   文件: HyperlinkHelperTest.java
@Test public void testCreateHyperlinksByOffset_07() {
	assertNull(helper.createHyperlinksByOffset(resource, model.indexOf("Element*") - 1, true));
	IHyperlink[] hyperlinks = helper.createHyperlinksByOffset(resource, model.indexOf("lement*"), true);
	assertNotNull(hyperlinks);
	assertEquals(1, hyperlinks.length);
	assertTrue(hyperlinks[0] instanceof XtextHyperlink);
	XtextHyperlink hyperLink = (XtextHyperlink) hyperlinks[0];
	assertEquals(model.indexOf("Element*"), hyperLink.getHyperlinkRegion().getOffset());
	assertEquals("Element".length(), hyperLink.getHyperlinkRegion().getLength());
	assertEquals(
			grammar.eResource().getResourceSet().getURIConverter().normalize(
			EcoreUtil.getURI(GrammarUtil.findRuleForName(grammar, "Element"))), hyperLink.getURI());
}
 
@Override
public IHyperlinkDetector[] getHyperlinkDetectors(ISourceViewer sourceViewer) {
	List<IHyperlinkDetector> detectors = new LinkedList<IHyperlinkDetector>();
	IHyperlinkDetector[] inheritedDetectors = super.getHyperlinkDetectors(sourceViewer);
	if (inheritedDetectors != null) {
		for (final IHyperlinkDetector detector : inheritedDetectors) {
			detectors.add(new IHyperlinkDetector() {
				@Override
				public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region,
						boolean canShowMultipleHyperlinks) {
					try {
						IHyperlink[] result = detector.detectHyperlinks(textViewer, region, canShowMultipleHyperlinks);
						// fail safe detector: don't return an empty array
						// but null (see org.eclipse.jface.text.hyperlink.HyperlinkManager.findHyperlinks(IRegion))
						if (result != null && result.length == 0) {
							return null;
						}
						return result;
					}
					catch (Throwable e) {
						// fail safe hyperlink detector - prevent others
						// from failing
					}
					return null;
				}

			});
		}
	}
	detectors.add(detector);
	return detectors.toArray(new IHyperlinkDetector[detectors.size()]);
}
 
源代码23 项目: xtext-eclipse   文件: HyperlinkHelper.java
@Override
public IHyperlink[] createHyperlinksByOffset(XtextResource resource, int offset, boolean createMultipleHyperlinks) {
	List<IHyperlink> links = Lists.newArrayList();
	IHyperlinkAcceptor acceptor = new HyperlinkAcceptor(links);
	
	try {
		createHyperlinksByOffset(resource, offset, acceptor);
	} catch (RuntimeException e) {
		LOG.error(e.getMessage(), e);
	}
	if (!links.isEmpty())
		return Iterables.toArray(links, IHyperlink.class);
	return null;
}
 
源代码24 项目: xtext-eclipse   文件: AbstractHyperlinkingTest.java
protected void hyperlinkIsOffered(IHyperlink[] hyperlinks, IRegion expectedRegion, String expectedHyperlinkTarget) {
	assertNotNull("No hyperlinks found!", hyperlinks);
	assertEquals(1, hyperlinks.length);

	IHyperlink hyperlink = hyperlinks[0];
	assertEquals(expectedRegion, hyperlink.getHyperlinkRegion());
	assertEquals(expectedHyperlinkTarget, target(hyperlink));
}
 
源代码25 项目: xtext-eclipse   文件: AbstractHyperlinkingTest.java
protected String target(IHyperlink hyperlink) {
	if (hyperlink instanceof JdtHyperlink) {
		return _target((JdtHyperlink) hyperlink);
	} else if (hyperlink instanceof XtextHyperlink) {
		return _target((XtextHyperlink) hyperlink);
	} else {
		return _target(hyperlink);
	}
}
 
源代码26 项目: gama   文件: GamlHyperlinkDetector.java
@Override
public IHyperlink[] detectHyperlinks(final ITextViewer textViewer, final IRegion region,
		final boolean canShowMultipleHyperlinks) {
	final IXtextDocument document = (IXtextDocument) textViewer.getDocument();
	final IHyperlink[] importHyperlinks = importHyperlinks(document, region);
	if (importHyperlinks != NO_HYPERLINKS) { return importHyperlinks; }
	return document.readOnly(new CancelableUnitOfWork<IHyperlink[], XtextResource>() {

		@Override
		public IHyperlink[] exec(final XtextResource resource, final CancelIndicator c) {
			return getHelper().createHyperlinksByOffset(resource, region.getOffset(), canShowMultipleHyperlinks);
		}
	});
}
 
源代码27 项目: xds-ide   文件: OpenDeclarationsAction.java
@Override
public void run() {
       ISelection selection = modulaEditor.getSelectionProvider().getSelection();
       if (selection instanceof ITextSelection) {
           ITextSelection textSelection = (ITextSelection)selection;
   	    ModulaDeclarationHyperlinkDetector hld = new ModulaDeclarationHyperlinkDetector();
   	    hld.setContext(modulaEditor);
   	    ISourceViewer viewer = (ISourceViewer)modulaEditor.getAdapter(ISourceViewer.class);
   	    IHyperlink[] links = hld.detectHyperlinks(viewer, new Region(textSelection.getOffset(), 0), false);
   	    if (links != null && links.length > 0) {
   	        links[0].open();
   	    }
       }
	super.run();
}
 
源代码28 项目: xtext-xtend   文件: DetectImplHyperlinksTest.java
@Test public void testComputeHyperlink_3() throws Exception {
	String content = "package foo class Foo { def bar(S|tring a) { foo() } def foo(){}}";
	XtextEditor xtextEditor = openEditor(content.replace("|", ""));
	int offset = content.indexOf("|");

	IHyperlink[] detectHyperlinks = hyperlinkDetector.detectHyperlinks(xtextEditor.getInternalSourceViewer(), new Region(offset,1), true);
	assertEquals(1, detectHyperlinks.length);
	List<XbaseImplementatorsHyperlink> list = Lists.newArrayList(Iterables.filter(Lists.newArrayList(detectHyperlinks),XbaseImplementatorsHyperlink.class));
	assertEquals(0, list.size());
}
 
源代码29 项目: APICloud-Studio   文件: JSHyperlinkDetector.java
/**
 * processAST
 * 
 * @param editor
 * @param ast
 * @param offset
 * @return
 */
private IHyperlink[] processAST(AbstractThemeableEditor editor, JSParseRootNode ast, int offset)
{
	// walk AST to grab potential hyperlinks
	JSHyperlinkCollector collector = new JSHyperlinkCollector(editor, ast, offset);
	ast.accept(collector);
	Collection<? extends IHyperlink> result = collector.getHyperlinks();

	return (CollectionsUtil.isEmpty(result)) ? null : result.toArray(new IHyperlink[result.size()]);
}
 
源代码30 项目: xtext-xtend   文件: HyperlinkingTest.java
@Test public void testPlainMethod() throws Exception {
	String modelAsString = "class Foo {\n"
			+ "  def bar() { foo() }\n"
			+ "  def foo() { null }\n"
			+ "}";
	XtextResource resource = (XtextResource) testHelper.xtendFile("Foo", modelAsString).eResource();
	IHyperlink[] hyperlinks = hyperlinkHelper.createHyperlinksByOffset(resource, modelAsString.indexOf("foo"), true);
	assertEquals(2, hyperlinks.length);
	assertEquals("Open Declaration - foo() : Object", hyperlinks[0].getHyperlinkText());
	assertTrue(((XtextHyperlink) hyperlinks[0]).getURI().isPlatformResource());
	assertEquals("Open Return Type - Object", hyperlinks[1].getHyperlinkText());
	assertEquals("Object", ((JdtHyperlink) hyperlinks[1]).getJavaElement().getElementName());
}
 
 类所在包
 类方法
 同包方法