diff --git a/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/AbstractPropertyRenderableProvider.java b/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/AbstractPropertyRenderableProvider.java index 71ffc114e..0f546b341 100644 --- a/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/AbstractPropertyRenderableProvider.java +++ b/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/AbstractPropertyRenderableProvider.java @@ -32,19 +32,25 @@ public abstract class AbstractPropertyRenderableProvider { if (type==null) { type = Object.class.getName(); } + renderableBuilder.add(lineBreak()); actionLink(renderableBuilder, type); String deflt = formatDefaultValue(getDefaultValue()); if (deflt!=null) { + renderableBuilder.add(lineBreak()); + renderableBuilder.add(lineBreak()); defaultValueRenderable(renderableBuilder, deflt); } if (isDeprecated()) { + renderableBuilder.add(lineBreak()); + renderableBuilder.add(lineBreak()); depreactionRenderable(renderableBuilder); } Renderable description = getDescription(); if (description!=null) { + renderableBuilder.add(lineBreak()); descriptionRenderable(renderableBuilder, description); } @@ -97,20 +103,15 @@ public abstract class AbstractPropertyRenderableProvider { * link then the provided runnable is to be executed. */ public void actionLink(Builder renderableBuilder, String displayString) { - renderableBuilder.add(lineBreak()); renderableBuilder.add(link(displayString, "null")); } - private void defaultValueRenderable(Builder renderableBuilder, String defaultValue) { - renderableBuilder.add(lineBreak()); - renderableBuilder.add(lineBreak()); + protected void defaultValueRenderable(Builder renderableBuilder, String defaultValue) { renderableBuilder.add(text("Default: ")); renderableBuilder.add(italic(text(defaultValue))); } - private void depreactionRenderable(Builder renderableBuilder) { - renderableBuilder.add(lineBreak()); - renderableBuilder.add(lineBreak()); + protected void depreactionRenderable(Builder renderableBuilder) { String reason = getDeprecationReason(); if (StringUtil.hasText(reason)) { renderableBuilder.add(bold(text("Deprecated: "))); @@ -120,8 +121,7 @@ public abstract class AbstractPropertyRenderableProvider { } } - private void descriptionRenderable(Builder renderableBuilder, Renderable description) { - renderableBuilder.add(lineBreak()); + protected void descriptionRenderable(Builder renderableBuilder, Renderable description) { renderableBuilder.add(paragraph(description)); } diff --git a/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/PropertyCompletionFactory.java b/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/PropertyCompletionFactory.java index 47d50d6f7..285d67dd2 100644 --- a/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/PropertyCompletionFactory.java +++ b/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/PropertyCompletionFactory.java @@ -133,7 +133,7 @@ public class PropertyCompletionFactory { super(doc, applier); this.typeUtil = typeUtil; this.match = match; - this.propertyRenderable = Suppliers.memoize(() -> new PropertyRenderableProvider(documentContextFinder.find(fDoc), match.data)); + this.propertyRenderable = Suppliers.memoize(() -> new ShortDocumentationRenderableProvider(documentContextFinder.find(fDoc), match.data)); if (match.data.isDeprecated()) { deprecate(); } diff --git a/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/ShortDocumentationRenderableProvider.java b/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/ShortDocumentationRenderableProvider.java new file mode 100644 index 000000000..46c848f8b --- /dev/null +++ b/vscode-extensions/vscode-boot-properties/src/main/java/org/springframework/ide/vscode/boot/common/ShortDocumentationRenderableProvider.java @@ -0,0 +1,50 @@ +package org.springframework.ide.vscode.boot.common; + +import static org.springframework.ide.vscode.commons.util.Renderables.concat; +import static org.springframework.ide.vscode.commons.util.Renderables.lineBreak; + +import org.springframework.ide.vscode.application.properties.metadata.PropertyInfo; +import org.springframework.ide.vscode.commons.java.IJavaProject; +import org.springframework.ide.vscode.commons.util.Renderable; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableList.Builder; + +public class ShortDocumentationRenderableProvider extends PropertyRenderableProvider { + + public ShortDocumentationRenderableProvider(IJavaProject project, PropertyInfo data) { + super(project, data); + } + + @Override + public Renderable getRenderable() { + Builder renderableBuilder = ImmutableList.builder(); + + Renderable description = getDescription(); + if (description!=null) { + descriptionRenderable(renderableBuilder, description); + } + + String deflt = formatDefaultValue(getDefaultValue()); + if (deflt!=null) { + if (description != null) { + renderableBuilder.add(lineBreak()); + } + defaultValueRenderable(renderableBuilder, deflt); + } + + if (isDeprecated()) { + if (description != null) { + renderableBuilder.add(lineBreak()); + } + depreactionRenderable(renderableBuilder); + } + + + ImmutableList pieces = renderableBuilder.build(); + return pieces.isEmpty() ? null : concat(pieces); + } + + + +}