23 * questions. |
23 * questions. |
24 */ |
24 */ |
25 |
25 |
26 package build.tools.taglet; |
26 package build.tools.taglet; |
27 |
27 |
|
28 import java.util.Arrays; |
28 import java.util.EnumSet; |
29 import java.util.EnumSet; |
29 import java.util.List; |
30 import java.util.List; |
30 import java.util.Set; |
31 import java.util.Set; |
31 import javax.lang.model.element.Element; |
32 import javax.lang.model.element.Element; |
32 import com.sun.source.doctree.DocTree; |
33 import com.sun.source.doctree.DocTree; |
33 import com.sun.source.doctree.UnknownBlockTagTree; |
34 import com.sun.source.doctree.TextTree; |
|
35 import com.sun.source.doctree.UnknownInlineTagTree; |
34 import jdk.javadoc.doclet.Taglet; |
36 import jdk.javadoc.doclet.Taglet; |
35 import static jdk.javadoc.doclet.Taglet.Location.*; |
37 import static jdk.javadoc.doclet.Taglet.Location.*; |
36 |
38 |
37 /** |
39 /** |
38 * An block tag to insert a standard warning about a preview API. |
40 * An block tag to insert a standard warning about a preview API. |
45 return EnumSet.of(MODULE, PACKAGE, TYPE, CONSTRUCTOR, METHOD, FIELD); |
47 return EnumSet.of(MODULE, PACKAGE, TYPE, CONSTRUCTOR, METHOD, FIELD); |
46 } |
48 } |
47 |
49 |
48 @Override |
50 @Override |
49 public boolean isInlineTag() { |
51 public boolean isInlineTag() { |
50 return false; |
52 return true; |
51 } |
53 } |
52 |
54 |
53 @Override |
55 @Override |
54 public String getName() { |
56 public String getName() { |
55 return "preview"; |
57 return "preview"; |
56 } |
58 } |
57 |
59 |
58 @Override |
60 @Override |
59 public String toString(List<? extends DocTree> tags, Element elem) { |
61 public String toString(List<? extends DocTree> tags, Element elem) { |
60 StringBuilder sb = new StringBuilder(); |
62 UnknownInlineTagTree previewTag = (UnknownInlineTagTree) tags.get(0); |
61 sb.append("<dt>Preview Feature:\n"); |
63 List<? extends DocTree> previewContent = previewTag.getContent(); |
62 for (DocTree tag : tags) { |
64 String previewText = ((TextTree) previewContent.get(0)).getBody(); |
63 UnknownBlockTagTree ubt = (UnknownBlockTagTree) tag; |
65 String[] summaryAndDetails = previewText.split("\n\r?\n\r?"); |
64 sb.append("<dd style=\"border: 1px solid red; border-radius: 5px; padding: 5px; font-size: larger\"> <b>Preview:</b> ") |
66 String summary = summaryAndDetails[0]; |
65 .append(ubt.getContent()); |
67 String details = summaryAndDetails.length > 1 ? summaryAndDetails[1] : summaryAndDetails[0]; |
|
68 if (Arrays.stream(new Exception().getStackTrace()).anyMatch(el -> el.getClassName().endsWith("HtmlDocletWriter") && el.getMethodName().equals("addSummaryComment"))) { |
|
69 return "<div style=\"display:inline-block; font-weight:bold\">" + summary + "</div><br>"; |
66 } |
70 } |
67 return sb.toString(); |
71 return "<div style=\"border: 1px solid red; border-radius: 25px; padding: 5px; display:inline-block; font-size: larger\">" + details + "</div><br>"; |
68 } |
72 } |
69 } |
73 } |
70 |
74 |