PT #156686000: Make enum value description look closer to javadoc

This commit is contained in:
BoykoAlex
2018-06-06 21:42:28 -04:00
parent 1a8f536b60
commit 1203b899dd
12 changed files with 124 additions and 22 deletions

View File

@@ -11,6 +11,8 @@
package org.springframework.ide.vscode.boot.metadata.hints;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ide.vscode.boot.configurationmetadata.Deprecation;
import org.springframework.ide.vscode.boot.configurationmetadata.ValueHint;
import org.springframework.ide.vscode.boot.java.links.SourceLinkFactory;
@@ -22,7 +24,6 @@ import org.springframework.ide.vscode.commons.java.IJavaElement;
import org.springframework.ide.vscode.commons.java.IJavaProject;
import org.springframework.ide.vscode.commons.java.IType;
import org.springframework.ide.vscode.commons.util.Assert;
import org.springframework.ide.vscode.commons.util.Log;
import org.springframework.ide.vscode.commons.util.Renderable;
import org.springframework.ide.vscode.commons.util.Renderables;
import org.springframework.ide.vscode.commons.util.StringUtil;
@@ -39,6 +40,7 @@ import org.springframework.ide.vscode.commons.util.StringUtil;
*/
public class StsValueHint {
private static final Logger log = LoggerFactory.getLogger(StsValueHint.class);
private final String value;
private final Renderable description;
@@ -87,7 +89,7 @@ public class StsValueHint {
}
}
} catch (Exception e) {
Log.log(e);
log.error("", e);
}
return null;
}
@@ -122,7 +124,7 @@ public class StsValueHint {
private static Renderable javaDocSnippet(IJavaProject project, IJavaElement je) {
return Renderables.lazy(() -> {
SourceLinks sourceLinks = SourceLinkFactory.createSourceLinks(null);
return PropertyDocUtils.documentation(sourceLinks, project, je);
return PropertyDocUtils.documentJavaValue(sourceLinks, project, je);
});
}

View File

@@ -42,16 +42,32 @@ public class PropertyDocUtils {
* @return
*/
public static Renderable documentation(SourceLinks sourceLinks, IJavaProject project, IJavaElement je) {
IJavadoc javadoc = je.getJavaDoc();
Builder<Renderable> renderableBuilder = ImmutableList.builder();
renderableBuilder.add(javadoc == null ? Renderables.NO_DESCRIPTION: javadoc.getRenderable());
IJavadoc javadoc = je.getJavaDoc();
renderableBuilder.add(Renderables.lineBreak());
renderableBuilder.add(Renderables.paragraph(javadoc == null ? Renderables.NO_DESCRIPTION: javadoc.getRenderable()));
return Renderables.concat(renderableBuilder.build());
}
/**
* Generates documentation for the value of some Java type. Includes signature, javadoc, link to container type.
*
* @param sourceLinks
* @param project
* @param je
* @return
*/
public static Renderable documentJavaValue(SourceLinks sourceLinks, IJavaProject project, IJavaElement je) {
Builder<Renderable> renderableBuilder = ImmutableList.builder();
if (je instanceof IMember) {
IType containingType = je instanceof IType ? (IType) je : ((IMember)je).getDeclaringType();
IMember member = (IMember) je;
renderableBuilder.add(Renderables.lineBreak());
renderableBuilder.add(Renderables.inlineSnippet(Renderables.text(member.signature())));
IType containingType = je instanceof IType ? (IType) je : ((IMember)je).getDeclaringType();
if (je != null) {
renderableBuilder.add(Renderables.lineBreak());
renderableBuilder.add(Renderables.text("Type: "));
String type = containingType.getFullyQualifiedName();
Optional<String> url = SourceLinkFactory.createSourceLinks(null).sourceLinkUrlForFQName(project, type);
renderableBuilder.add(Renderables.lineBreak());
if (url.isPresent()) {
renderableBuilder.add(Renderables.link(type, url.get()));
} else {
@@ -59,6 +75,9 @@ public class PropertyDocUtils {
}
}
}
IJavadoc javadoc = je.getJavaDoc();
renderableBuilder.add(Renderables.lineBreak());
renderableBuilder.add(Renderables.paragraph(javadoc == null ? Renderables.NO_DESCRIPTION: javadoc.getRenderable()));
return Renderables.concat(renderableBuilder.build());
}