diff -r 5af9fa90cd7b -r 48b88b9c11eb src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Wed Nov 27 12:18:40 2019 +0100 +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Wed Nov 27 13:08:16 2019 +0100 @@ -42,6 +42,7 @@ import com.sun.source.doctree.DocTree; import jdk.javadoc.doclet.DocletEnvironment.ModuleMode; +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.Entity; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; @@ -161,12 +162,9 @@ private final Map providesTrees = new TreeMap<>(utils.makeAllClassesComparator()); - /** - * The HTML tree for main tag. - */ - protected HtmlTree mainTree = HtmlTree.MAIN(); + private final Navigation navBar; - private final Navigation navBar; + private final BodyContents bodyContents = new BodyContents(); /** * Constructor to construct ModuleWriter object and to generate "moduleName-summary.html" file. @@ -178,7 +176,7 @@ super(configuration, configuration.docPaths.moduleSummary(mdle)); this.mdle = mdle; this.moduleMode = configuration.docEnv.getModuleMode(); - this.navBar = new Navigation(mdle, configuration, fixedNavDiv, PageMode.MODULE, path); + this.navBar = new Navigation(mdle, configuration, PageMode.MODULE, path); computeModulesData(); } @@ -190,16 +188,15 @@ @Override public Content getModuleHeader(String heading) { HtmlTree bodyTree = getBody(getWindowTitle(mdle.getQualifiedName().toString())); - HtmlTree htmlTree = HtmlTree.HEADER(); - addTop(htmlTree); + Content headerContent = new ContentBuilder(); + addTop(headerContent); navBar.setDisplaySummaryModuleDescLink(!utils.getFullBody(mdle).isEmpty() && !configuration.nocomment); navBar.setDisplaySummaryModulesLink(display(requires) || display(indirectModules)); navBar.setDisplaySummaryPackagesLink(display(packages) || display(indirectPackages) || display(indirectOpenPackages)); navBar.setDisplaySummaryServicesLink(displayServices(uses, usesTrees) || displayServices(provides.keySet(), providesTrees)); navBar.setUserHeader(getUserHeaderFooter(true)); - htmlTree.add(navBar.getContent(true)); - bodyTree.add(htmlTree); + headerContent.add(navBar.getContent(true)); HtmlTree div = new HtmlTree(HtmlTag.DIV); div.setStyle(HtmlStyle.header); Content annotationContent = new HtmlTree(HtmlTag.P); @@ -213,7 +210,8 @@ Content moduleHead = new RawHtml(heading); tHeading.add(moduleHead); div.add(tHeading); - mainTree.add(div); + bodyContents.setHeader(headerContent) + .addMainContent(div); return bodyTree; } @@ -877,21 +875,20 @@ * {@inheritDoc} */ @Override - public void addModuleContent(Content contentTree, Content moduleContentTree) { - mainTree.add(moduleContentTree); - contentTree.add(mainTree); + public void addModuleContent(Content moduleContentTree) { + bodyContents.addMainContent(moduleContentTree); } /** * {@inheritDoc} */ @Override - public void addModuleFooter(Content contentTree) { + public void addModuleFooter() { Content htmlTree = HtmlTree.FOOTER(); navBar.setUserFooter(getUserHeaderFooter(false)); htmlTree.add(navBar.getContent(false)); addBottom(htmlTree); - contentTree.add(htmlTree); + bodyContents.setFooter(htmlTree); } /** @@ -901,6 +898,7 @@ */ @Override public void printDocument(Content contentTree) throws DocFileIOException { + contentTree.add(bodyContents.toContent()); printHtmlDocument(configuration.metakeywords.getMetaKeywordsForModule(mdle), getDescription("declaration", mdle), getLocalStylesheets(mdle), contentTree); }