@Test public void testHover() throws Exception { //given //Hovers on the System.out String payload = createHoverRequest("src/java/Foo.java", 5, 15); TextDocumentPositionParams position = getParams(payload); //when Hover hover = handler.hover(position, monitor); //then assertNotNull(hover); assertNotNull(hover.getContents()); MarkedString signature = hover.getContents().get(0).getRight(); assertEquals("Unexpected hover " + signature, "java", signature.getLanguage()); assertEquals("Unexpected hover " + signature, "java.Foo", signature.getValue()); String doc = hover.getContents().get(1).getLeft(); assertEquals("Unexpected hover " + doc, "This is foo", doc); }
@Test public void testHoverStandalone() throws Exception { //given //Hovers on the System.out URI standalone = Paths.get("projects","maven","salut","src","main","java","java","Foo.java").toUri(); String payload = createHoverRequest(standalone, 10, 71); TextDocumentPositionParams position = getParams(payload); //when Hover hover = handler.hover(position, monitor); //then assertNotNull(hover); assertNotNull(hover.getContents()); MarkedString signature = hover.getContents().get(0).getRight(); assertEquals("Unexpected hover " + signature, "java", signature.getLanguage()); assertEquals("Unexpected hover " + signature, "java.Foo", signature.getValue()); String doc = hover.getContents().get(1).getLeft(); assertEquals("Unexpected hover "+doc, "This is foo", doc); }
@Test public void testHoverVariable() throws Exception { //given //Hover on args parameter String argParam = createHoverRequest("src/java/Foo.java", 7, 37); TextDocumentPositionParams position = getParams(argParam); //when Hover hover = handler.hover(position, monitor); //then assertNotNull(hover); assertNotNull(hover.getContents()); MarkedString signature = hover.getContents().get(0).getRight(); assertEquals("Unexpected hover " + signature, "java", signature.getLanguage()); assertEquals("Unexpected hover " + signature, "String[] args - java.Foo.main(String[])", signature.getValue()); }
public Hover hover(TextDocumentPositionParams position, IProgressMonitor monitor) { ITypeRoot unit = JDTUtils.resolveTypeRoot(position.getTextDocument().getUri()); List<Either<String, MarkedString>> content = null; if (unit != null && !monitor.isCanceled()) { content = computeHover(unit, position.getPosition().getLine(), position.getPosition().getCharacter(), monitor); } Hover $ = new Hover(); $.setContents(content); return $; }
private MarkedString computeSignature(IJavaElement element) { if (element == null) { return null; } String elementLabel = null; if (element instanceof ILocalVariable) { elementLabel = JavaElementLabels.getElementLabel(element,LOCAL_VARIABLE_FLAGS); } else { elementLabel = JavaElementLabels.getElementLabel(element,COMMON_SIGNATURE_FLAGS); } return new MarkedString(LANGUAGE_ID, elementLabel); }
/** * @param cu * @return */ private String getTitleHover(ICompilationUnit cu, int line, int character) { // when Hover hover = getHover(cu, line, character); // then assertNotNull(hover); MarkedString result = hover.getContents().get(0).getRight(); return result.getValue(); }
protected Hover hover(final HoverContext context) { if ((context == null)) { return IHoverService.EMPTY_HOVER; } final List<Either<String, MarkedString>> contents = this.getContents(context); if ((contents == null)) { return IHoverService.EMPTY_HOVER; } final Range range = this.getRange(context); if ((range == null)) { return IHoverService.EMPTY_HOVER; } return new Hover(contents, range); }
protected List<Either<String, MarkedString>> getContents(final HoverContext it) { final String language = this.getLanguage(it); final Function1<String, Either<String, MarkedString>> _function = (String value) -> { return this.toContents(language, value); }; return ListExtensions.<String, Either<String, MarkedString>>map(this.getContents(it.getElement()), _function); }
protected Either<String, MarkedString> toContents(final String language, final String value) { if ((language == null)) { return Either.<String, MarkedString>forLeft(value); } MarkedString _markedString = new MarkedString(language, value); return Either.<String, MarkedString>forRight(_markedString); }
@Test public void testEitherConversion() { Either<String, MarkedString> either1 = Either.forLeft("foobar"); Either<String, MarkedString> either2 = Either.forLeft("bar"); List<Either<String, MarkedString>> entries = Arrays.asList(either1, either2); Hover hover = new Hover(entries, new Range(new Position(0, 1), new Position(2, 3))); HoverDto originalDto = new HoverDto(hover); Assert.assertTrue(reflectionEquals(originalDto, hover)); String jsonString = originalDto.toJson(); HoverDto convertedDto = HoverDto.fromJson(jsonString); Assert.assertTrue(reflectionEquals(originalDto, convertedDto)); }
private String renderContent(Hover hover) { List<String> contents = new ArrayList<>(); for (Either<String, MarkedString> dto : hover.getContents()) { if (dto.isLeft()) { // plain markdown text contents.add(dto.getLeft()); } else { contents.add(dto.getRight().getLanguage()); contents.add(dto.getRight().getValue()); } } return Joiner.on("\n\n").join(contents); }
public Hover(@NonNull final List<Either<String, MarkedString>> contents) { this.contents = contents; }
public Hover(@NonNull final List<Either<String, MarkedString>> contents, final Range range) { this.contents = contents; this.range = range; }
/** * The hover's content as markdown */ @Pure @NonNull public List<Either<String, MarkedString>> getContents() { return this.contents; }
/** * The hover's content as markdown */ public void setContents(@NonNull final List<Either<String, MarkedString>> contents) { this.contents = contents; }
private List<Either<String, MarkedString>> computeHover(ITypeRoot unit, int line, int column, IProgressMonitor monitor) { HoverInfoProvider provider = new HoverInfoProvider(unit, this.preferenceManager); return provider.computeHover(line, column, monitor); }