package jdk.javadoc.internal.doclets.formats.html;
import java.util.Set;
import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
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.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
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.util.DocFileIOException;
import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
public class SerializedFormWriterImpl extends SubWriterHolderWriter
implements SerializedFormWriter {
Set<TypeElement> visibleClasses;
private final Navigation navBar;
public SerializedFormWriterImpl(HtmlConfiguration configuration) {
super(configuration, DocPaths.SERIALIZED_FORM);
visibleClasses = configuration.getIncludedTypeElements();
this.navBar = new Navigation(null, configuration, PageMode.SERIALIZEDFORM, path);
}
public Content getHeader(String header) {
HtmlTree bodyTree = getBody(getWindowTitle(header));
Content headerContent = new ContentBuilder();
addTop(headerContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
Content h1Content = new StringContent(header);
Content heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, true,
HtmlStyle.title, h1Content);
Content div = HtmlTree.DIV(HtmlStyle.header, heading);
bodyContents.setHeader(headerContent)
.addMainContent(div);
return bodyTree;
}
public Content getSerializedSummariesHeader() {
HtmlTree ul = new HtmlTree(HtmlTag.UL);
ul.setStyle(HtmlStyle.blockList);
return ul;
}
public Content getPackageSerializedHeader() {
return HtmlTree.SECTION(HtmlStyle.serializedPackageContainer);
}
public Content getPackageHeader(String packageName) {
Content heading = HtmlTree.HEADING(Headings.SerializedForm.PACKAGE_HEADING, true,
contents.packageLabel);
heading.add(Entity.NO_BREAK_SPACE);
heading.add(packageName);
return heading;
}
public Content getClassSerializedHeader() {
HtmlTree ul = new HtmlTree(HtmlTag.UL);
ul.setStyle(HtmlStyle.blockList);
return ul;
}
public boolean isVisibleClass(TypeElement typeElement) {
return visibleClasses.contains(typeElement) && configuration.isGeneratedDoc(typeElement);
}
public Content getClassHeader(TypeElement typeElement) {
Content classLink = (isVisibleClass(typeElement))
? getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.DEFAULT, typeElement)
.label(configuration.getClassName(typeElement)))
: new StringContent(utils.getFullyQualifiedName(typeElement));
Content section = HtmlTree.SECTION(HtmlStyle.serializedClassDetails, links.createAnchor(
utils.getFullyQualifiedName(typeElement)));
Content superClassLink = typeElement.getSuperclass() != null
? getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.SERIALIZED_FORM,
typeElement.getSuperclass()))
: null;
Content className = superClassLink == null ?
contents.getContent(
"doclet.Class_0_implements_serializable", classLink) :
contents.getContent(
"doclet.Class_0_extends_implements_serializable", classLink,
superClassLink);
section.add(HtmlTree.HEADING(Headings.SerializedForm.CLASS_HEADING, className));
return section;
}
public Content getSerialUIDInfoHeader() {
HtmlTree dl = new HtmlTree(HtmlTag.DL);
dl.setStyle(HtmlStyle.nameValue);
return dl;
}
public void addSerialUIDInfo(String header, String serialUID,
Content serialUidTree) {
Content headerContent = new StringContent(header);
serialUidTree.add(HtmlTree.DT(headerContent));
Content serialContent = new StringContent(serialUID);
serialUidTree.add(HtmlTree.DD(serialContent));
}
public Content getClassContentHeader() {
HtmlTree ul = new HtmlTree(HtmlTag.UL);
ul.setStyle(HtmlStyle.blockList);
return ul;
}
public void addSerializedContent(Content serializedTreeContent) {
HtmlTree divContent = HtmlTree.DIV(HtmlStyle.serializedFormContainer,
serializedTreeContent);
bodyContents.addMainContent(divContent);
}
public void addPackageSerializedTree(Content serializedSummariesTree,
Content packageSerializedTree) {
serializedSummariesTree.add(HtmlTree.LI(HtmlStyle.blockList, packageSerializedTree));
}
public void addFooter() {
Content htmlTree = HtmlTree.FOOTER();