package jdk.javadoc.internal.doclets.formats.html;
import java.util.*;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
import javax.lang.model.type.TypeMirror;
import com.sun.source.doctree.DocTree;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.SerializedFormWriter;
import jdk.javadoc.internal.doclets.toolkit.taglets.TagletWriter;
import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper;
public class HtmlSerialFieldWriter extends FieldWriterImpl
implements SerializedFormWriter.SerialFieldWriter {
public HtmlSerialFieldWriter(SubWriterHolderWriter writer, TypeElement typeElement) {
super(writer, typeElement);
}
public SortedSet<VariableElement> members(TypeElement te) {
return utils.serializableFields(te);
}
public Content getSerializableFieldsHeader() {
HtmlTree ul = new HtmlTree(HtmlTag.UL);
ul.setStyle(HtmlStyle.blockList);
return ul;
}
public Content getFieldsContentHeader(boolean isLastContent) {
HtmlTree li = new HtmlTree(HtmlTag.LI);
li.setStyle(HtmlStyle.blockList);
return li;
}
public Content getSerializableFields(String heading, Content serializableFieldsTree) {
HtmlTree section = HtmlTree.SECTION(HtmlStyle.detail);
if (serializableFieldsTree.isValid()) {
Content headingContent = new StringContent(heading);
Content serialHeading = HtmlTree.HEADING(Headings.SerializedForm.CLASS_SUBHEADING, headingContent);
section.add(serialHeading);
section.add(serializableFieldsTree);
}
return HtmlTree.LI(HtmlStyle.blockList, section);
}
@Override
public void addMemberHeader(TypeElement fieldType, String fieldTypeStr,
String fieldDimensions, String fieldName, Content contentTree) {
Content nameContent = new StringContent(fieldName);
Content heading = HtmlTree.HEADING(Headings.SerializedForm.MEMBER_HEADING, nameContent);
contentTree.add(heading);
Content pre = new HtmlTree(HtmlTag.PRE);
if (fieldType == null) {
pre.add(fieldTypeStr);
} else {
Content fieldContent = writer.getLink(new LinkInfoImpl(
configuration, LinkInfoImpl.Kind.SERIAL_MEMBER, fieldType));
pre.add(fieldContent);
}
pre.add(fieldDimensions + " ");
pre.add(fieldName);
contentTree.add(pre);
}
@Override
public void addMemberHeader(TypeMirror fieldType, String fieldName, Content contentTree) {
Content nameContent = new StringContent(fieldName);
Content heading = HtmlTree.HEADING(HtmlTag.H5, nameContent);
contentTree.add(heading);
Content pre = new HtmlTree(HtmlTag.PRE);
Content fieldContent = writer.getLink(new LinkInfoImpl(
configuration, LinkInfoImpl.Kind.SERIAL_MEMBER, fieldType));
pre.add(fieldContent);
pre.add(" ");
pre.add(fieldName);
contentTree.add(pre);
}
public void addMemberDeprecatedInfo(VariableElement field, Content contentTree) {
addDeprecatedInfo(field, contentTree);
}
public void addMemberDescription(VariableElement field, Content contentTree) {
if (!utils.getFullBody(field).isEmpty()) {
writer.addInlineComment(field, contentTree);
}
List<? extends DocTree> tags = utils.getBlockTags(field, DocTree.Kind.SERIAL);
if (!tags.isEmpty()) {
writer.addInlineComment(field, tags.get(0), contentTree);
}
}
public void addMemberDescription(VariableElement field, DocTree serialFieldTag, Content contentTree) {
CommentHelper ch = utils.getCommentHelper(field);
List<? extends DocTree> description = ch.getDescription(configuration, serialFieldTag);
if (!description.isEmpty()) {
Content serialFieldContent = new RawHtml(ch.getText(description));
Content div = HtmlTree.DIV(HtmlStyle.block, serialFieldContent);
contentTree.add(div);
}
}
public void addMemberTags(VariableElement field, Content contentTree) {
Content tagContent = new ContentBuilder();
TagletWriter.genTagOutput(configuration.tagletManager, field,
configuration.tagletManager.getBlockTaglets(field),