make/jdk/src/classes/build/tools/taglet/Preview.java
branchJDK-8226585-branch
changeset 58440 4c8a6d1d066c
parent 58342 ebb1ff3d6707
child 58441 82f43796b28c
equal deleted inserted replaced
58342:ebb1ff3d6707 58440:4c8a6d1d066c
    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