8240697: convert builders to high-level Content blocks

Reviewed-by: prappo
This commit is contained in:
Jonathan Gibbons 2020-03-10 14:46:28 -07:00
parent 39ab073173
commit 0fd2ac701f
32 changed files with 297 additions and 216 deletions

View file

@ -45,8 +45,7 @@ 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.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.DocFile;

View file

@ -360,7 +360,7 @@ public abstract class AbstractMemberWriter implements MemberSummaryWriter {
writer.addSummaryLinkComment(this, element, desc);
useTable.addRow(summaryType, typeContent, desc);
}
contentTree.add(useTable.toContent());
contentTree.add(useTable);
}
}
@ -453,7 +453,7 @@ public abstract class AbstractMemberWriter implements MemberSummaryWriter {
if (table.needsScript()) {
writer.getMainBodyScript().append(table.getScript());
}
return table.toContent();
return table;
}
/**

View file

@ -28,10 +28,8 @@ package jdk.javadoc.internal.doclets.formats.html;
import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents;
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.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
@ -72,7 +70,7 @@ public abstract class AbstractOverviewIndexWriter extends HtmlDocletWriter {
protected void addNavigationBarHeader(Content header) {
addTop(header);
navBar.setUserHeader(getUserHeaderFooter(true));
header.add(navBar.getContent(true));
header.add(navBar.getContent(Navigation.Position.TOP));
}
/**
@ -83,7 +81,7 @@ public abstract class AbstractOverviewIndexWriter extends HtmlDocletWriter {
*/
protected void addNavigationBarFooter(Content footer) {
navBar.setUserFooter(getUserHeaderFooter(false));
footer.add(navBar.getContent(false));
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(footer);
}
@ -135,8 +133,7 @@ public abstract class AbstractOverviewIndexWriter extends HtmlDocletWriter {
body.add(new BodyContents()
.setHeader(header)
.addMainContent(main)
.setFooter(footer)
.toContent());
.setFooter(footer));
printHtmlDocument(
configuration.metakeywords.getOverviewMetaKeywords(title, configuration.getOptions().docTitle()),
description, body);

View file

@ -34,10 +34,8 @@ import com.sun.source.doctree.DocTree;
import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents;
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.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.Content;
@ -96,23 +94,22 @@ public class AllClassesIndexWriter extends HtmlDocletWriter {
String label = resources.getText("doclet.All_Classes");
Content header = new ContentBuilder();
addTop(header);
Navigation navBar = new Navigation(null, configuration, PageMode.ALLCLASSES, path);
Navigation navBar = new Navigation(null, configuration, PageMode.ALL_CLASSES, path);
navBar.setUserHeader(getUserHeaderFooter(true));
header.add(navBar.getContent(true));
header.add(navBar.getContent(Navigation.Position.TOP));
Content allClassesContent = new ContentBuilder();
addContents(allClassesContent);
Content mainContent = new ContentBuilder();
mainContent.add(allClassesContent);
Content footer = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
footer.add(navBar.getContent(false));
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(footer);
HtmlTree bodyTree = getBody(getWindowTitle(label));
bodyTree.add(new BodyContents()
.setHeader(header)
.addMainContent(mainContent)
.setFooter(footer)
.toContent());
.setFooter(footer));
printHtmlDocument(null, "class index", bodyTree);
}
@ -149,7 +146,7 @@ public class AllClassesIndexWriter extends HtmlDocletWriter {
Content headerDiv = HtmlTree.DIV(HtmlStyle.header, pHeading);
content.add(headerDiv);
if (!table.isEmpty()) {
content.add(table.toContent());
content.add(table);
if (table.needsScript()) {
getMainBodyScript().append(table.getScript());
}

View file

@ -29,10 +29,8 @@ import javax.lang.model.element.PackageElement;
import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents;
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.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
@ -77,10 +75,10 @@ public class AllPackagesIndexWriter extends HtmlDocletWriter {
protected void buildAllPackagesFile() throws DocFileIOException {
String label = resources.getText("doclet.All_Packages");
Content headerContent = new ContentBuilder();
Navigation navBar = new Navigation(null, configuration, PageMode.ALLPACKAGES, path);
Navigation navBar = new Navigation(null, configuration, PageMode.ALL_PACKAGES, path);
addTop(headerContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
Content mainContent = new ContentBuilder();
addPackages(mainContent);
Content titleContent = contents.allPackagesLabel;
@ -89,15 +87,14 @@ public class AllPackagesIndexWriter extends HtmlDocletWriter {
Content headerDiv = HtmlTree.DIV(HtmlStyle.header, pHeading);
Content footer = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
footer.add(navBar.getContent(false));
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(footer);
HtmlTree bodyTree = getBody(getWindowTitle(label));
bodyTree.add(new BodyContents()
.setHeader(headerContent)
.addMainContent(headerDiv)
.addMainContent(mainContent)
.setFooter(footer)
.toContent());
.setFooter(footer));
printHtmlDocument(null, "package index", bodyTree);
}
@ -119,6 +116,6 @@ public class AllPackagesIndexWriter extends HtmlDocletWriter {
table.addRow(pkg, packageLinkContent, summaryContent);
}
}
content.add(table.toContent());
content.add(table);
}
}

View file

@ -37,8 +37,7 @@ 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.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeWriter;
import jdk.javadoc.internal.doclets.toolkit.Content;
@ -87,7 +86,7 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
navBar.setNavLinkModule(linkContent);
navBar.setMemberSummaryBuilder(configuration.getBuilderFactory().getMemberSummaryBuilder(this));
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
HtmlTree div = new HtmlTree(HtmlTag.DIV);
div.setStyle(HtmlStyle.header);
@ -129,7 +128,7 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
public void addFooter() {
Content htmlTree = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
htmlTree.add(navBar.getContent(false));
htmlTree.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(htmlTree);
bodyContents.addMainContent(MarkerComments.END_OF_CLASS_DATA)
.setFooter(htmlTree);
@ -140,7 +139,7 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
String description = getDescription("declaration", annotationType);
PackageElement pkg = utils.containingPackage(this.annotationType);
List<DocPath> localStylesheets = getLocalStylesheets(pkg);
contentTree.add(bodyContents.toContent());
contentTree.add(bodyContents);
printHtmlDocument(configuration.metakeywords.getMetaKeywords(annotationType),
description, localStylesheets, contentTree);
}

View file

@ -45,8 +45,7 @@ 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.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.ClassTree;
@ -229,10 +228,10 @@ public class ClassUseWriter extends SubWriterHolderWriter {
bodyContents.addMainContent(mainContent);
HtmlTree footer = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
footer.add(navBar.getContent(false));
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(footer);
bodyContents.setFooter(footer);
body.add(bodyContents.toContent());
body.add(bodyContents);
String description = getDescription("use", typeElement);
printHtmlDocument(null, description, body);
}
@ -269,7 +268,7 @@ public class ClassUseWriter extends SubWriterHolderWriter {
for (PackageElement pkg : pkgSet) {
addPackageUse(pkg, table);
}
contentTree.add(table.toContent());
contentTree.add(table);
}
/**
@ -297,7 +296,7 @@ public class ClassUseWriter extends SubWriterHolderWriter {
addSummaryComment(pkg, summary);
table.addRow(getPackageLink(pkg), summary);
}
contentTree.add(table.toContent());
contentTree.add(table);
}
/**
@ -435,7 +434,7 @@ public class ClassUseWriter extends SubWriterHolderWriter {
.label(resources.getText("doclet.Class")));
navBar.setNavLinkClass(classLinkContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
ContentBuilder headingContent = new ContentBuilder();
headingContent.add(contents.getContent("doclet.ClassUse_Title", cltype));
headingContent.add(new HtmlTree(HtmlTag.BR));

View file

@ -47,8 +47,7 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr;
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.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.ClassWriter;
import jdk.javadoc.internal.doclets.toolkit.Content;
@ -115,7 +114,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter implements ClassWrite
navBar.setNavLinkModule(linkContent);
navBar.setMemberSummaryBuilder(configuration.getBuilderFactory().getMemberSummaryBuilder(this));
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
HtmlTree div = new HtmlTree(HtmlTag.DIV);
div.setStyle(HtmlStyle.header);
if (configuration.showModules) {
@ -161,7 +160,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter implements ClassWrite
bodyContents.addMainContent(MarkerComments.END_OF_CLASS_DATA);
Content htmlTree = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
htmlTree.add(navBar.getContent(false));
htmlTree.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(htmlTree);
bodyContents.setFooter(htmlTree);
}
@ -171,7 +170,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter implements ClassWrite
String description = getDescription("declaration", typeElement);
PackageElement pkg = utils.containingPackage(typeElement);
List<DocPath> localStylesheets = getLocalStylesheets(pkg);
contentTree.add(bodyContents.toContent());
contentTree.add(bodyContents);
printHtmlDocument(configuration.metakeywords.getMetaKeywords(typeElement),
description, localStylesheets, contentTree);
}

View file

@ -39,8 +39,7 @@ 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.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
@ -92,7 +91,7 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements Cons
this.configuration = configuration;
constantsTableHeader = new TableHeader(
contents.modifierAndTypeLabel, contents.constantFieldLabel, contents.valueLabel);
this.navBar = new Navigation(null, configuration, PageMode.CONSTANTVALUES, path);
this.navBar = new Navigation(null, configuration, PageMode.CONSTANT_VALUES, path);
}
@Override
@ -102,7 +101,7 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements Cons
Content headerContent = new ContentBuilder();
addTop(headerContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
bodyContents.setHeader(headerContent);
return bodyTree;
}
@ -215,7 +214,7 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements Cons
for (VariableElement field : fields) {
table.addRow(getTypeColumn(field), getNameColumn(field), getValue(field));
}
Content li = HtmlTree.LI(HtmlStyle.blockList, table.toContent());
Content li = HtmlTree.LI(HtmlStyle.blockList, table);
classConstantTree.add(li);
}
@ -277,14 +276,14 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements Cons
public void addFooter() {
Content htmlTree = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
htmlTree.add(navBar.getContent(false));
htmlTree.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(htmlTree);
bodyContents.setFooter(htmlTree);
}
@Override
public void printDocument(Content contentTree) throws DocFileIOException {
contentTree.add(bodyContents.toContent());
contentTree.add(bodyContents);
printHtmlDocument(null, "summary of constants", contentTree);
}
}

View file

@ -41,8 +41,7 @@ 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.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.DeprecatedAPIListBuilder;
@ -298,11 +297,11 @@ public class DeprecatedListWriter extends SubWriterHolderWriter {
bodyContents.addMainContent(content);
HtmlTree htmlTree = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
htmlTree.add(navBar.getContent(false));
htmlTree.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(htmlTree);
bodyContents.setFooter(htmlTree);
String description = "deprecated elements";
body.add(bodyContents.toContent());
body.add(bodyContents);
printHtmlDocument(null, description, body);
}
@ -355,7 +354,7 @@ public class DeprecatedListWriter extends SubWriterHolderWriter {
Content headerContent = new ContentBuilder();
addTop(headerContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
bodyContents.setHeader(headerContent);
return bodyTree;
}
@ -402,7 +401,7 @@ public class DeprecatedListWriter extends SubWriterHolderWriter {
}
table.addRow(link, desc);
}
Content li = HtmlTree.LI(HtmlStyle.blockList, table.toContent());
Content li = HtmlTree.LI(HtmlStyle.blockList, table);
Content ul = HtmlTree.UL(HtmlStyle.blockList, li);
contentTree.add(ul);
}

View file

@ -33,9 +33,7 @@ import com.sun.source.util.DocTreeFactory;
import com.sun.tools.doclint.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents;
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.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.DocFileElement;
import jdk.javadoc.internal.doclets.toolkit.DocFilesHandler;
@ -56,7 +54,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode;
public class DocFilesHandlerImpl implements DocFilesHandler {
@ -187,7 +185,7 @@ public class DocFilesHandlerImpl implements DocFilesHandler {
String title = getWindowTitle(docletWriter, dfElement).trim();
HtmlTree htmlContent = docletWriter.getBody(title);
PackageElement pkg = dfElement.getPackageElement();
this.navBar = new Navigation(element, configuration, PageMode.DOCFILE, docletWriter.path);
this.navBar = new Navigation(element, configuration, PageMode.DOC_FILE, docletWriter.path);
Content headerContent = new ContentBuilder();
docletWriter.addTop(headerContent);
Content mdleLinkContent = docletWriter.getModuleLink(utils.elementUtils.getModuleOf(pkg),
@ -196,7 +194,7 @@ public class DocFilesHandlerImpl implements DocFilesHandler {
Content pkgLinkContent = docletWriter.getPackageLink(pkg, docletWriter.contents.packageLabel);
navBar.setNavLinkPackage(pkgLinkContent);
navBar.setUserHeader(docletWriter.getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
List<? extends DocTree> fullBody = utils.getFullBody(dfElement);
Content pageContent = docletWriter.commentTagsToContent(null, dfElement, fullBody, false);
@ -204,13 +202,12 @@ public class DocFilesHandlerImpl implements DocFilesHandler {
navBar.setUserFooter(docletWriter.getUserHeaderFooter(false));
Content footer = HtmlTree.FOOTER();
footer.add(navBar.getContent(false));
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
docletWriter.addBottom(footer);
htmlContent.add(new BodyContents()
.setHeader(headerContent)
.addMainContent(pageContent)
.setFooter(footer)
.toContent());
.setFooter(footer));
docletWriter.printHtmlDocument(Collections.emptyList(), null, localTagsContent, Collections.emptyList(), htmlContent);
}

View file

@ -30,8 +30,7 @@ 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.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
@ -95,18 +94,17 @@ public class HelpWriter extends HtmlDocletWriter {
Content headerContent = new ContentBuilder();
addTop(headerContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
ContentBuilder helpFileContent = new ContentBuilder();
addHelpFileContents(helpFileContent);
HtmlTree footer = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
footer.add(navBar.getContent(false));
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(footer);
body.add(new BodyContents()
.setHeader(headerContent)
.addMainContent(helpFileContent)
.setFooter(footer)
.toContent());
.setFooter(footer));
printHtmlDocument(null, "help", body);
}

View file

@ -464,7 +464,7 @@ public class HtmlDocletWriter {
.setIndex(options.createIndex(), mainBodyScript)
.addContent(extraHeadContent);
Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(), head.toContent(), body);
Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(), head, body);
HtmlDocument htmlDocument = new HtmlDocument(htmlComment, htmlTree);
htmlDocument.write(DocFile.createFileForOutput(configuration, path));
}

View file

@ -109,7 +109,7 @@ public class IndexRedirectWriter extends HtmlDocletWriter {
HtmlTree main = HtmlTree.MAIN(bodyContent);
body.add(main);
Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(), head.toContent(), body);
Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(), head, body);
HtmlDocument htmlDocument = new HtmlDocument(htmlComment, htmlTree);
htmlDocument.write(DocFile.createFileForOutput(configuration, path));
}

View file

@ -117,7 +117,7 @@ public class ModuleIndexWriter extends AbstractOverviewIndexWriter {
}
}
main.add(table.toContent());
main.add(table);
if (table.needsScript()) {
mainBodyScript.append(table.getScript());

View file

@ -48,8 +48,7 @@ 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.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
@ -194,7 +193,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
|| display(indirectOpenPackages));
navBar.setDisplaySummaryServicesLink(displayServices(uses, usesTrees) || displayServices(provides.keySet(), providesTrees));
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
HtmlTree div = new HtmlTree(HtmlTag.DIV);
div.setStyle(HtmlStyle.header);
Content annotationContent = new HtmlTree(HtmlTag.P);
@ -501,7 +500,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
Table table = getTable3(caption, tableSummary, HtmlStyle.requiresSummary,
requiresTableHeader);
addModulesList(requires, table);
section.add(table.toContent());
section.add(table);
}
// Display indirect modules table in both "api" and "all" mode.
if (display(indirectModules)) {
@ -513,7 +512,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
Table amrTable = getTable3(amrCaption, amrTableSummary, HtmlStyle.requiresSummary,
requiresTableHeader);
addModulesList(indirectModules, amrTable);
section.add(amrTable.toContent());
section.add(amrTable);
}
summaryContentTree.add(HtmlTree.LI(HtmlStyle.blockList, section));
}
@ -552,14 +551,14 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
Table aepTable = getTable2(new StringContent(aepText),
HtmlStyle.packagesSummary, indirectPackagesHeader);
addIndirectPackages(aepTable, indirectPackages);
section.add(aepTable.toContent());
section.add(aepTable);
}
if (display(indirectOpenPackages)) {
String aopText = resources.getText("doclet.Indirect_Opens_Summary");
Table aopTable = getTable2(new StringContent(aopText), HtmlStyle.packagesSummary,
indirectPackagesHeader);
addIndirectPackages(aopTable, indirectOpenPackages);
section.add(aopTable.toContent());
section.add(aopTable);
}
summaryContentTree.add(HtmlTree.LI(HtmlStyle.blockList, section));
}
@ -646,7 +645,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
table.addRow(pkg, row);
}
li.add(table.toContent());
li.add(table);
if (table.needsScript()) {
mainBodyScript.append(table.getScript());
}
@ -724,7 +723,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
usesProvidesTableHeader);
addProvidesList(table);
if (!table.isEmpty()) {
section.add(table.toContent());
section.add(table);
}
}
if (haveUses){
@ -733,7 +732,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
usesProvidesTableHeader);
addUsesList(table);
if (!table.isEmpty()) {
section.add(table.toContent());
section.add(table);
}
}
summaryContentTree.add(HtmlTree.LI(HtmlStyle.blockList, section));
@ -862,14 +861,14 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
public void addModuleFooter() {
Content htmlTree = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
htmlTree.add(navBar.getContent(false));
htmlTree.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(htmlTree);
bodyContents.setFooter(htmlTree);
}
@Override
public void printDocument(Content contentTree) throws DocFileIOException {
contentTree.add(bodyContents.toContent());
contentTree.add(bodyContents);
printHtmlDocument(configuration.metakeywords.getMetaKeywordsForModule(mdle),
getDescription("declaration", mdle), getLocalStylesheets(mdle), contentTree);
}

View file

@ -22,7 +22,7 @@
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jdk.javadoc.internal.doclets.formats.html.markup;
package jdk.javadoc.internal.doclets.formats.html;
import java.util.ArrayList;
import java.util.List;
@ -35,12 +35,14 @@ import javax.lang.model.element.ModuleElement;
import javax.lang.model.element.PackageElement;
import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.AbstractMemberWriter;
import jdk.javadoc.internal.doclets.formats.html.Contents;
import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration;
import jdk.javadoc.internal.doclets.formats.html.HtmlOptions;
import jdk.javadoc.internal.doclets.formats.html.MarkerComments;
import jdk.javadoc.internal.doclets.formats.html.SectionName;
import jdk.javadoc.internal.doclets.formats.html.markup.Comment;
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.HtmlAttr;
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.Links;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.builders.MemberSummaryBuilder;
import jdk.javadoc.internal.doclets.toolkit.util.DocFile;
@ -85,19 +87,19 @@ public class Navigation {
private static final Content EMPTY_COMMENT = new Comment(" ");
public enum PageMode {
ALLCLASSES,
ALLPACKAGES,
ALL_CLASSES,
ALL_PACKAGES,
CLASS,
CONSTANTVALUES,
CONSTANT_VALUES,
DEPRECATED,
DOCFILE,
DOC_FILE,
HELP,
INDEX,
MODULE,
OVERVIEW,
PACKAGE,
SERIALIZEDFORM,
SYSTEMPROPERTIES,
SERIALIZED_FORM,
SYSTEM_PROPERTIES,
TREE,
USE;
}
@ -322,11 +324,11 @@ public class Navigation {
addHelpLink(tree);
}
break;
case ALLCLASSES:
case ALLPACKAGES:
case CONSTANTVALUES:
case SERIALIZEDFORM:
case SYSTEMPROPERTIES:
case ALL_CLASSES:
case ALL_PACKAGES:
case CONSTANT_VALUES:
case SERIALIZED_FORM:
case SYSTEM_PROPERTIES:
addOverviewLink(tree);
addModuleLink(tree);
addPackageLink(tree);
@ -337,7 +339,7 @@ public class Navigation {
addIndexLink(tree);
addHelpLink(tree);
break;
case DOCFILE:
case DOC_FILE:
addOverviewLink(tree);
addModuleOfElementLink(tree);
addContentToTree(tree, navLinkPackage);
@ -906,67 +908,88 @@ public class Navigation {
/**
* Get the navigation content.
*
* @param top true if the top navigation bar is to be printed
* @param posn the position for the navigation bar
* @return the navigation contents
*/
public Content getContent(boolean top) {
public Content getContent(Position posn) {
if (options.noNavbar()) {
return new ContentBuilder();
}
Content tree = HtmlTree.NAV();
HtmlTree navDiv = new HtmlTree(HtmlTag.DIV);
Content skipNavLinks = contents.getContent("doclet.Skip_navigation_links");
if (top) {
tree.add(Position.TOP.startOfNav());
navDiv.setStyle(HtmlStyle.topNav)
.setId(SectionName.NAVBAR_TOP.getName())
.add(HtmlTree.DIV(HtmlStyle.skipNav,
links.createLink(SectionName.SKIP_NAVBAR_TOP, skipNavLinks,
skipNavLinks.toString(), "")));
} else {
tree.add(Position.BOTTOM.startOfNav());
navDiv.setStyle(HtmlStyle.bottomNav)
.setId(SectionName.NAVBAR_BOTTOM.getName())
.add(HtmlTree.DIV(HtmlStyle.skipNav,
links.createLink(SectionName.SKIP_NAVBAR_BOTTOM, skipNavLinks,
skipNavLinks.toString(), "")));
SectionName navListSection;
Content aboutContent;
boolean addSearch;
switch (posn) {
case TOP:
tree.add(Position.TOP.startOfNav());
navDiv.setStyle(HtmlStyle.topNav)
.setId(SectionName.NAVBAR_TOP.getName())
.add(HtmlTree.DIV(HtmlStyle.skipNav,
links.createLink(SectionName.SKIP_NAVBAR_TOP, skipNavLinks,
skipNavLinks.toString(), "")));
navListSection = SectionName.NAVBAR_TOP_FIRSTROW;
aboutContent = userHeader;
addSearch = options.createIndex();
break;
case BOTTOM:
tree.add(Position.BOTTOM.startOfNav());
navDiv.setStyle(HtmlStyle.bottomNav)
.setId(SectionName.NAVBAR_BOTTOM.getName())
.add(HtmlTree.DIV(HtmlStyle.skipNav,
links.createLink(SectionName.SKIP_NAVBAR_BOTTOM, skipNavLinks,
skipNavLinks.toString(), "")));
navListSection = SectionName.NAVBAR_BOTTOM_FIRSTROW;
aboutContent = userFooter;
addSearch = false;
break;
default:
throw new Error();
}
HtmlTree navList = new HtmlTree(HtmlTag.UL);
navList.setId(top ? SectionName.NAVBAR_TOP_FIRSTROW.getName()
: SectionName.NAVBAR_BOTTOM_FIRSTROW.getName());
navList.setStyle(HtmlStyle.navList);
navList.put(HtmlAttr.TITLE, rowListTitle);
HtmlTree navList = new HtmlTree(HtmlTag.UL)
.setId(navListSection.getName())
.setStyle(HtmlStyle.navList)
.put(HtmlAttr.TITLE, rowListTitle);
addMainNavLinks(navList);
navDiv.add(navList);
Content aboutDiv = HtmlTree.DIV(HtmlStyle.aboutLanguage, top ? userHeader : userFooter);
Content aboutDiv = HtmlTree.DIV(HtmlStyle.aboutLanguage, aboutContent);
navDiv.add(aboutDiv);
tree.add(navDiv);
HtmlTree subDiv = new HtmlTree(HtmlTag.DIV);
subDiv.setStyle(HtmlStyle.subNav);
HtmlTree subDiv = new HtmlTree(HtmlTag.DIV).setStyle(HtmlStyle.subNav);
HtmlTree div = new HtmlTree(HtmlTag.DIV);
// Add the summary links if present.
HtmlTree ulNavSummary = new HtmlTree(HtmlTag.UL);
ulNavSummary.setStyle(HtmlStyle.subNavList);
HtmlTree ulNavSummary = new HtmlTree(HtmlTag.UL).setStyle(HtmlStyle.subNavList);
addSummaryLinks(ulNavSummary);
div.add(ulNavSummary);
// Add the detail links if present.
HtmlTree ulNavDetail = new HtmlTree(HtmlTag.UL);
ulNavDetail.setStyle(HtmlStyle.subNavList);
HtmlTree ulNavDetail = new HtmlTree(HtmlTag.UL).setStyle(HtmlStyle.subNavList);
addDetailLinks(ulNavDetail);
div.add(ulNavDetail);
subDiv.add(div);
if (top && options.createIndex()) {
if (addSearch) {
addSearch(subDiv);
}
tree.add(subDiv);
if (top) {
tree.add(Position.TOP.endOfNav());
tree.add(HtmlTree.SPAN(HtmlStyle.skipNav, EMPTY_COMMENT)
.setId(SectionName.SKIP_NAVBAR_TOP.getName()));
} else {
tree.add(Position.BOTTOM.endOfNav());
tree.add(HtmlTree.SPAN(HtmlStyle.skipNav, EMPTY_COMMENT)
.setId(SectionName.SKIP_NAVBAR_BOTTOM.getName()));
switch (posn) {
case TOP:
tree.add(Position.TOP.endOfNav());
tree.add(HtmlTree.SPAN(HtmlStyle.skipNav, EMPTY_COMMENT)
.setId(SectionName.SKIP_NAVBAR_TOP.getName()));
break;
case BOTTOM:
tree.add(Position.BOTTOM.endOfNav());
tree.add(HtmlTree.SPAN(HtmlStyle.skipNav, EMPTY_COMMENT)
.setId(SectionName.SKIP_NAVBAR_BOTTOM.getName()));
}
return tree;
}

View file

@ -118,7 +118,7 @@ public class PackageIndexWriter extends AbstractOverviewIndexWriter {
}
}
main.add(table.toContent());
main.add(table);
if (table.needsScript()) {
getMainBodyScript().append(table.getScript());

View file

@ -32,8 +32,7 @@ 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.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.ClassTree;
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
@ -115,10 +114,10 @@ public class PackageTreeWriter extends AbstractTreeWriter {
bodyContents.addMainContent(mainContent);
HtmlTree footer = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
footer.add(navBar.getContent(false));
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(footer);
bodyContents.setFooter(footer);
body.add(bodyContents.toContent());
body.add(bodyContents);
printHtmlDocument(null, getDescription("tree", packageElement), body);
}
@ -137,7 +136,7 @@ public class PackageTreeWriter extends AbstractTreeWriter {
contents.moduleLabel);
navBar.setNavLinkModule(linkContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
bodyContents.setHeader(headerContent);
return bodyTree;
}

View file

@ -38,8 +38,7 @@ 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.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
@ -134,10 +133,10 @@ public class PackageUseWriter extends SubWriterHolderWriter {
bodyContents.addMainContent(mainContent);
HtmlTree footer = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
footer.add(navBar.getContent(false));
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(footer);
bodyContents.setFooter(footer);
body.add(bodyContents.toContent());
body.add(bodyContents);
printHtmlDocument(null,
getDescription("use", packageElement),
body);
@ -182,7 +181,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
}
table.addRow(packageLink, summary);
}
contentTree.add(table.toContent());
contentTree.add(table);
}
/**
@ -220,7 +219,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
table.addRow(typeContent, summary);
}
section.add(table.toContent());
section.add(table);
ul.add(HtmlTree.LI(HtmlStyle.blockList, section));
}
Content li = HtmlTree.SECTION(HtmlStyle.packageUses, ul);
@ -243,7 +242,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
contents.moduleLabel);
navBar.setNavLinkModule(linkContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
ContentBuilder headingContent = new ContentBuilder();
headingContent.add(contents.getContent("doclet.ClassUse_Title", packageText));
headingContent.add(new HtmlTree(HtmlTag.BR));

View file

@ -39,8 +39,7 @@ 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.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
@ -106,7 +105,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
contents.moduleLabel);
navBar.setNavLinkModule(linkContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
HtmlTree div = new HtmlTree(HtmlTag.DIV);
div.setStyle(HtmlStyle.header);
if (configuration.showModules) {
@ -235,7 +234,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
}
table.addRow(classLink, description);
}
Content li = HtmlTree.LI(HtmlStyle.blockList, table.toContent());
Content li = HtmlTree.LI(HtmlStyle.blockList, table);
summaryContentTree.add(li);
}
}
@ -266,7 +265,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
public void addPackageFooter() {
Content htmlTree = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
htmlTree.add(navBar.getContent(false));
htmlTree.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(htmlTree);
bodyContents.setFooter(htmlTree);
}
@ -275,7 +274,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
public void printDocument(Content contentTree) throws DocFileIOException {
String description = getDescription("declaration", packageElement);
List<DocPath> localStylesheets = getLocalStylesheets(packageElement);
contentTree.add(bodyContents.toContent());
contentTree.add(bodyContents);
printHtmlDocument(configuration.metakeywords.getMetaKeywords(packageElement),
description, localStylesheets, contentTree);
}

View file

@ -34,8 +34,7 @@ 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.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;
@ -63,7 +62,7 @@ public class SerializedFormWriterImpl extends SubWriterHolderWriter
public SerializedFormWriterImpl(HtmlConfiguration configuration) {
super(configuration, DocPaths.SERIALIZED_FORM);
visibleClasses = configuration.getIncludedTypeElements();
this.navBar = new Navigation(null, configuration, PageMode.SERIALIZEDFORM, path);
this.navBar = new Navigation(null, configuration, PageMode.SERIALIZED_FORM, path);
}
/**
@ -78,7 +77,7 @@ public class SerializedFormWriterImpl extends SubWriterHolderWriter
Content headerContent = new ContentBuilder();
addTop(headerContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
Content h1Content = new StringContent(header);
Content heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, true,
HtmlStyle.title, h1Content);
@ -242,14 +241,14 @@ public class SerializedFormWriterImpl extends SubWriterHolderWriter
public void addFooter() {
Content htmlTree = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
htmlTree.add(navBar.getContent(false));
htmlTree.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(htmlTree);
bodyContents.setFooter(htmlTree);
}
@Override
public void printDocument(Content serializedTree) throws DocFileIOException {
serializedTree.add(bodyContents.toContent());
serializedTree.add(bodyContents);
printHtmlDocument(null, "serialized forms", serializedTree);
}

View file

@ -98,7 +98,7 @@ public class SingleIndexWriter extends AbstractIndexWriter {
Content headerContent = new ContentBuilder();
addTop(headerContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
Content mainContent = new ContentBuilder();
elements = new TreeSet<>(indexBuilder.asMap().keySet());
elements.addAll(tagSearchIndexMap.keySet());
@ -116,7 +116,7 @@ public class SingleIndexWriter extends AbstractIndexWriter {
addLinksForIndexes(mainContent);
HtmlTree footer = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
footer.add(navBar.getContent(false));
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(footer);
body.add(new BodyContents()
.setHeader(headerContent)
@ -124,8 +124,7 @@ public class SingleIndexWriter extends AbstractIndexWriter {
HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING,
contents.getContent("doclet.Index"))))
.addMainContent(mainContent)
.setFooter(footer)
.toContent());
.setFooter(footer));
createSearchIndexFiles();
printHtmlDocument(null, "index", body);
}

View file

@ -245,8 +245,7 @@ public class SourceToHTMLConverter {
.setGenerator(HtmlDocletWriter.getGenerator(getClass()))
.addDefaultScript(false)
.setStylesheets(configuration.getMainStylesheet(), configuration.getAdditionalStylesheets());
Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(),
head.toContent(), body);
Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(), head, body);
HtmlDocument htmlDocument = new HtmlDocument(htmlTree);
messages.notice("doclet.Generating_0", path.getPath());
htmlDocument.write(DocFile.createFileForOutput(configuration, path));

View file

@ -125,7 +125,7 @@ public class SplitIndexWriter extends AbstractIndexWriter {
Content headerContent = new ContentBuilder();
addTop(headerContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
Content main = new ContentBuilder();
main.add(HtmlTree.DIV(HtmlStyle.header,
HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING,
@ -144,13 +144,12 @@ public class SplitIndexWriter extends AbstractIndexWriter {
main.add(mainContent);
HtmlTree footer = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
footer.add(navBar.getContent(false));
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(footer);
body.add(new BodyContents()
.setHeader(headerContent)
.addMainContent(main)
.setFooter(footer)
.toContent());
.setFooter(footer));
String description = "index: " + unicode;
printHtmlDocument(null, description, body);
}

View file

@ -26,10 +26,8 @@ package jdk.javadoc.internal.doclets.formats.html;
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.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.formats.html.markup.Table;
import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
@ -69,7 +67,7 @@ public class SystemPropertiesWriter extends HtmlDocletWriter {
*/
public SystemPropertiesWriter(HtmlConfiguration configuration, DocPath filename) {
super(configuration, filename);
this.navBar = new Navigation(null, configuration, PageMode.SYSTEMPROPERTIES, path);
this.navBar = new Navigation(null, configuration, PageMode.SYSTEM_PROPERTIES, path);
}
/**
@ -96,7 +94,7 @@ public class SystemPropertiesWriter extends HtmlDocletWriter {
HtmlTree header = HtmlTree.HEADER();
addTop(header);
navBar.setUserHeader(getUserHeaderFooter(true));
header.add(navBar.getContent(true));
header.add(navBar.getContent(Navigation.Position.TOP));
bodyTree.add(header);
Content mainContent = new ContentBuilder();
addSystemProperties(mainContent);
@ -109,7 +107,7 @@ public class SystemPropertiesWriter extends HtmlDocletWriter {
bodyTree.add(mainTree);
Content footer = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
footer.add(navBar.getContent(false));
footer.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(footer);
bodyTree.add(footer);
printHtmlDocument(null, "system properties", bodyTree);
@ -142,7 +140,7 @@ public class SystemPropertiesWriter extends HtmlDocletWriter {
}
table.addRow(propertyName, separatedReferenceLinks);
}
content.add(table.toContent());
content.add(table);
}
private Map<String, List<SearchIndexItem>> groupSystemProperties() {

View file

@ -34,8 +34,7 @@ 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.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.ClassTree;
@ -121,12 +120,11 @@ public class TreeWriter extends AbstractTreeWriter {
addTree(classtree.baseEnums(), "doclet.Enum_Hierarchy", mainContent, true);
HtmlTree footerTree = HtmlTree.FOOTER();
navBar.setUserFooter(getUserHeaderFooter(false));
footerTree.add(navBar.getContent(false));
footerTree.add(navBar.getContent(Navigation.Position.BOTTOM));
addBottom(footerTree);
body.add(bodyContents
.addMainContent(mainContent)
.setFooter(footerTree)
.toContent());
.setFooter(footerTree));
printHtmlDocument(null, "class tree", body);
}
@ -180,7 +178,7 @@ public class TreeWriter extends AbstractTreeWriter {
Content headerContent = new ContentBuilder();
addTop(headerContent);
navBar.setUserHeader(getUserHeaderFooter(true));
headerContent.add(navBar.getContent(true));
headerContent.add(navBar.getContent(Navigation.Position.TOP));
bodyContents.setHeader(headerContent);
return bodyTree;
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2019, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -27,18 +27,24 @@ package jdk.javadoc.internal.doclets.formats.html.markup;
import jdk.javadoc.internal.doclets.toolkit.Content;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
/**
* A builder for the contents of the BODY element.
* Content for the {@code <body>} element.
*
* The content is a {@code <div>} element that contains a
* header that is always visible, and main content that
* can be scrolled if necessary.
*
* <p><b>This is NOT part of any supported API.
* If you write code that depends on this, you do so at your own risk.
* This code and its internal interfaces are subject to change or
* deletion without notice.</b>
*/
public class BodyContents {
public class BodyContents extends Content {
private List<Content> mainContents = new ArrayList<>();
private Content header = HtmlTree.EMPTY;
@ -59,20 +65,39 @@ public class BodyContents {
return this;
}
/**
* {@inheritDoc}
*
* @implSpec This implementation always returns {@code false}.
*
* @return {@code false}
*/
@Override
public boolean isEmpty() {
return false;
}
@Override
public boolean write(Writer out, boolean atNewline) throws IOException {
return toContent().write(out, atNewline);
}
/**
* Returns the HTML for the contents of the BODY element.
*
* @return the HTML
*/
public Content toContent() {
HtmlTree mainTree = HtmlTree.MAIN();
mainContents.forEach(mainTree::add);
HtmlTree flexHeader = HtmlTree.HEADER().setStyle(HtmlStyle.flexHeader);
flexHeader.add(header);
HtmlTree flexBox = HtmlTree.DIV(HtmlStyle.flexBox, flexHeader);
HtmlTree flexContent = HtmlTree.DIV(HtmlStyle.flexContent, mainTree);
flexContent.add(footer);
flexBox.add(flexContent);
return flexBox;
private Content toContent() {
HtmlTree flexHeader = HtmlTree.HEADER()
.setStyle(HtmlStyle.flexHeader)
.add(header);
HtmlTree flexContent = HtmlTree.DIV(HtmlStyle.flexContent)
.add(HtmlTree.MAIN().add(mainContents))
.add(footer);
return HtmlTree.DIV(HtmlStyle.flexBox)
.add(flexHeader)
.add(flexContent);
}
}

View file

@ -25,6 +25,8 @@
package jdk.javadoc.internal.doclets.formats.html.markup;
import java.io.IOException;
import java.io.Writer;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
@ -37,7 +39,7 @@ import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
/**
* A builder for HTML HEAD elements.
* An HTML {@code <head>} element.
*
* Many methods return the current object, to facilitate fluent builder-style usage.
*
@ -46,7 +48,7 @@ import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
* This code and its internal interfaces are subject to change or
* deletion without notice.</b>
*/
public class Head {
public class Head extends Content {
private final String docletVersion;
private final Date generatedDate;
private final DocPath pathToRoot;
@ -228,12 +230,29 @@ public class Head {
return this;
}
/**
* {@inheritDoc}
*
* @implSpec This implementation always returns {@code false}.
*
* @return {@code false}
*/
@Override
public boolean isEmpty() {
return false;
}
@Override
public boolean write(Writer out, boolean atNewline) throws IOException {
return toContent().write(out, atNewline);
}
/**
* Returns the HTML for the HEAD element.
*
* @return the HTML
*/
public Content toContent() {
private Content toContent() {
HtmlTree tree = new HtmlTree(HtmlTag.HEAD);
tree.add(getGeneratedBy(showTimestamp, generatedDate));
tree.add(HtmlTree.TITLE(title));

View file

@ -188,6 +188,17 @@ public class HtmlTree extends Content {
return this;
}
/**
* Adds each of a list of content items.
*
* @param list the list
* @return this object
*/
public HtmlTree add(List<? extends Content> list) {
list.forEach(this::add);
return this;
}
@Override
public int charCount() {
int n = 0;
@ -331,6 +342,16 @@ public class HtmlTree extends Content {
return new HtmlTree(HtmlTag.DL, nullCheck(body)).setStyle(style);
}
/**
* Generates a DIV tag with the style class attributes.
*
* @param styleClass stylesheet class for the tag
* @return an HtmlTree object for the DIV tag
*/
public static HtmlTree DIV(HtmlStyle styleClass) {
return new HtmlTree(HtmlTag.DIV).setStyle(styleClass);
}
/**
* Generates a DIV tag with the style class attributes. It also encloses
* a content.

View file

@ -25,6 +25,8 @@
package jdk.javadoc.internal.doclets.formats.html.markup;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
@ -41,8 +43,7 @@ import javax.lang.model.element.Element;
import jdk.javadoc.internal.doclets.toolkit.Content;
/**
* A builder for HTML tables, such as the summary tables for various
* types of element.
* An HTML table, such as the summary tables for various kinds of element.
*
* <p>The table should be used in three phases:
* <ol>
@ -58,7 +59,7 @@ import jdk.javadoc.internal.doclets.toolkit.Content;
* This code and its internal interfaces are subject to change or
* deletion without notice.</b>
*/
public class Table {
public class Table extends Content {
private final HtmlStyle tableStyle;
private Content caption;
private Map<String, Predicate<Element>> tabMap;
@ -399,12 +400,17 @@ public class Table {
return bodyRows.isEmpty();
}
@Override
public boolean write(Writer out, boolean atNewline) throws IOException {
return toContent().write(out, atNewline);
}
/**
* Returns the HTML for the table.
*
* @return the HTML
*/
public Content toContent() {
private Content toContent() {
HtmlTree mainDiv = new HtmlTree(HtmlTag.DIV);
mainDiv.setStyle(tableStyle);
if (id != null) {
@ -464,7 +470,7 @@ public class Table {
private Content getTableBody() {
ContentBuilder tableContent = new ContentBuilder();
Content thead = new HtmlTree(HtmlTag.THEAD);
thead.add(header.toContent());
thead.add(header);
tableContent.add(thead);
Content tbody = new HtmlTree(HtmlTag.TBODY);
bodyRows.forEach(tbody::add);

View file

@ -25,6 +25,8 @@
package jdk.javadoc.internal.doclets.formats.html.markup;
import java.io.IOException;
import java.io.Writer;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@ -33,7 +35,7 @@ import jdk.javadoc.internal.doclets.formats.html.Contents;
import jdk.javadoc.internal.doclets.toolkit.Content;
/**
* A row header for an HTML table.
* A row of header cells for an HTML table.
*
* The header contains a list of {@code <th>} cells, providing the column headers.
* The attribute {@code scope="col"} is automatically added to each header cell.
@ -44,7 +46,7 @@ import jdk.javadoc.internal.doclets.toolkit.Content;
* This code and its internal interfaces are subject to change or
* deletion without notice.</b>
*/
public class TableHeader {
public class TableHeader extends Content {
/**
* The content to be put in each of the {@code <th>} cells in the header row.
@ -112,11 +114,28 @@ public class TableHeader {
return this;
}
/**
* {@inheritDoc}
*
* @implSpec This implementation always returns {@code false}.
*
* @return {@code false}
*/
@Override
public boolean isEmpty() {
return false;
}
@Override
public boolean write(Writer out, boolean atNewline) throws IOException {
return toContent().write(out, atNewline);
}
/**
* Converts this header to a {@link Content} object, for use in an {@link HtmlTree}.
* @return a Content object
*/
public Content toContent() {
private Content toContent() {
String scope = "col";
Content tr = new HtmlTree(HtmlTag.TR);
int i = 0;