make/jdk/src/classes/build/tools/taglet/Preview.java
branchJDK-8226585-branch
changeset 58440 4c8a6d1d066c
parent 58342 ebb1ff3d6707
child 58441 82f43796b28c
--- a/make/jdk/src/classes/build/tools/taglet/Preview.java	Wed Sep 25 21:19:21 2019 +0200
+++ b/make/jdk/src/classes/build/tools/taglet/Preview.java	Wed Oct 02 10:59:40 2019 +0200
@@ -25,12 +25,14 @@
 
 package build.tools.taglet;
 
+import java.util.Arrays;
 import java.util.EnumSet;
 import java.util.List;
 import java.util.Set;
 import javax.lang.model.element.Element;
 import com.sun.source.doctree.DocTree;
-import com.sun.source.doctree.UnknownBlockTagTree;
+import com.sun.source.doctree.TextTree;
+import com.sun.source.doctree.UnknownInlineTagTree;
 import jdk.javadoc.doclet.Taglet;
 import static jdk.javadoc.doclet.Taglet.Location.*;
 
@@ -47,7 +49,7 @@
 
     @Override
     public boolean isInlineTag() {
-        return false;
+        return true;
     }
 
     @Override
@@ -57,14 +59,16 @@
 
     @Override
     public String toString(List<? extends DocTree> tags, Element elem) {
-        StringBuilder sb = new StringBuilder();
-	sb.append("<dt>Preview Feature:\n");
-        for (DocTree tag : tags) {
-	    UnknownBlockTagTree ubt = (UnknownBlockTagTree) tag;
-	    sb.append("<dd style=\"border: 1px solid red; border-radius: 5px; padding: 5px; font-size: larger\"> <b>Preview:</b> ")
-		.append(ubt.getContent()); 
+        UnknownInlineTagTree previewTag = (UnknownInlineTagTree) tags.get(0);
+        List<? extends DocTree> previewContent = previewTag.getContent();
+        String previewText = ((TextTree) previewContent.get(0)).getBody();
+        String[] summaryAndDetails = previewText.split("\n\r?\n\r?");
+        String summary = summaryAndDetails[0];
+        String details = summaryAndDetails.length > 1 ? summaryAndDetails[1] : summaryAndDetails[0];
+        if (Arrays.stream(new Exception().getStackTrace()).anyMatch(el -> el.getClassName().endsWith("HtmlDocletWriter") && el.getMethodName().equals("addSummaryComment"))) {
+            return "<div style=\"display:inline-block; font-weight:bold\">" + summary + "</div><br>";
         }
-	return sb.toString();
+        return "<div style=\"border: 1px solid red; border-radius: 25px; padding: 5px; display:inline-block; font-size: larger\">" + details + "</div><br>";
     }
 }