src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageTreeWriter.java
changeset 59294 48b88b9c11eb
parent 54350 4f9772f4403d
equal deleted inserted replaced
59293:5af9fa90cd7b 59294:48b88b9c11eb
    25 
    25 
    26 package jdk.javadoc.internal.doclets.formats.html;
    26 package jdk.javadoc.internal.doclets.formats.html;
    27 
    27 
    28 import javax.lang.model.element.PackageElement;
    28 import javax.lang.model.element.PackageElement;
    29 
    29 
       
    30 import jdk.javadoc.internal.doclets.formats.html.markup.BodyContents;
       
    31 import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
    30 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
    32 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
    31 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
    33 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
    32 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
    34 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
    33 import jdk.javadoc.internal.doclets.formats.html.markup.Navigation;
    35 import jdk.javadoc.internal.doclets.formats.html.markup.Navigation;
    34 import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
    36 import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
    58      */
    60      */
    59     protected PackageElement packageElement;
    61     protected PackageElement packageElement;
    60 
    62 
    61     private final Navigation navBar;
    63     private final Navigation navBar;
    62 
    64 
       
    65     private final BodyContents bodyContents = new BodyContents();
       
    66 
    63     /**
    67     /**
    64      * Constructor.
    68      * Constructor.
    65      * @param configuration the configuration
    69      * @param configuration the configuration
    66      * @param path the docpath to generate files into
    70      * @param path the docpath to generate files into
    67      * @param packageElement the current package
    71      * @param packageElement the current package
    68      */
    72      */
    69     public PackageTreeWriter(HtmlConfiguration configuration, DocPath path, PackageElement packageElement) {
    73     public PackageTreeWriter(HtmlConfiguration configuration, DocPath path, PackageElement packageElement) {
    70         super(configuration, path,
    74         super(configuration, path,
    71               new ClassTree(configuration.typeElementCatalog.allClasses(packageElement), configuration));
    75               new ClassTree(configuration.typeElementCatalog.allClasses(packageElement), configuration));
    72         this.packageElement = packageElement;
    76         this.packageElement = packageElement;
    73         this.navBar = new Navigation(packageElement, configuration, fixedNavDiv, PageMode.TREE, path);
    77         this.navBar = new Navigation(packageElement, configuration, PageMode.TREE, path);
    74     }
    78     }
    75 
    79 
    76     /**
    80     /**
    77      * Construct a PackageTreeWriter object and then use it to generate the
    81      * Construct a PackageTreeWriter object and then use it to generate the
    78      * package tree page.
    82      * package tree page.
    95      * Generate a separate tree file for each package.
    99      * Generate a separate tree file for each package.
    96      * @throws DocFileIOException if there is a problem generating the package tree file
   100      * @throws DocFileIOException if there is a problem generating the package tree file
    97      */
   101      */
    98     protected void generatePackageTreeFile() throws DocFileIOException {
   102     protected void generatePackageTreeFile() throws DocFileIOException {
    99         HtmlTree body = getPackageTreeHeader();
   103         HtmlTree body = getPackageTreeHeader();
   100         HtmlTree mainTree = HtmlTree.MAIN();
   104         Content mainContent = new ContentBuilder();
   101         Content headContent = contents.getContent("doclet.Hierarchy_For_Package",
   105         Content headContent = contents.getContent("doclet.Hierarchy_For_Package",
   102                 utils.getPackageName(packageElement));
   106                 utils.getPackageName(packageElement));
   103         Content heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, false,
   107         Content heading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, false,
   104                 HtmlStyle.title, headContent);
   108                 HtmlStyle.title, headContent);
   105         Content div = HtmlTree.DIV(HtmlStyle.header, heading);
   109         Content div = HtmlTree.DIV(HtmlStyle.header, heading);
   106         if (configuration.packages.size() > 1) {
   110         if (configuration.packages.size() > 1) {
   107             addLinkToMainTree(div);
   111             addLinkToMainTree(div);
   108         }
   112         }
   109         mainTree.add(div);
   113         mainContent.add(div);
   110         HtmlTree divTree = new HtmlTree(HtmlTag.DIV);
   114         HtmlTree divTree = new HtmlTree(HtmlTag.DIV);
   111         divTree.setStyle(HtmlStyle.contentContainer);
   115         divTree.setStyle(HtmlStyle.contentContainer);
   112         addTree(classtree.baseClasses(), "doclet.Class_Hierarchy", divTree);
   116         addTree(classtree.baseClasses(), "doclet.Class_Hierarchy", divTree);
   113         addTree(classtree.baseInterfaces(), "doclet.Interface_Hierarchy", divTree);
   117         addTree(classtree.baseInterfaces(), "doclet.Interface_Hierarchy", divTree);
   114         addTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy", divTree);
   118         addTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy", divTree);
   115         addTree(classtree.baseEnums(), "doclet.Enum_Hierarchy", divTree, true);
   119         addTree(classtree.baseEnums(), "doclet.Enum_Hierarchy", divTree, true);
   116         mainTree.add(divTree);
   120         mainContent.add(divTree);
   117         body.add(mainTree);
   121         bodyContents.addMainContent(mainContent);
   118         HtmlTree footer = HtmlTree.FOOTER();
   122         HtmlTree footer = HtmlTree.FOOTER();
   119         navBar.setUserFooter(getUserHeaderFooter(false));
   123         navBar.setUserFooter(getUserHeaderFooter(false));
   120         footer.add(navBar.getContent(false));
   124         footer.add(navBar.getContent(false));
   121         addBottom(footer);
   125         addBottom(footer);
   122         body.add(footer);
   126         bodyContents.setFooter(footer);
       
   127         body.add(bodyContents.toContent());
   123         printHtmlDocument(null, getDescription("tree", packageElement), body);
   128         printHtmlDocument(null, getDescription("tree", packageElement), body);
   124     }
   129     }
   125 
   130 
   126     /**
   131     /**
   127      * Get the package tree header.
   132      * Get the package tree header.
   130      */
   135      */
   131     protected HtmlTree getPackageTreeHeader() {
   136     protected HtmlTree getPackageTreeHeader() {
   132         String packageName = packageElement.isUnnamed() ? "" : utils.getPackageName(packageElement);
   137         String packageName = packageElement.isUnnamed() ? "" : utils.getPackageName(packageElement);
   133         String title = packageName + " " + resources.getText("doclet.Window_Class_Hierarchy");
   138         String title = packageName + " " + resources.getText("doclet.Window_Class_Hierarchy");
   134         HtmlTree bodyTree = getBody(getWindowTitle(title));
   139         HtmlTree bodyTree = getBody(getWindowTitle(title));
   135         HtmlTree htmlTree = HtmlTree.HEADER();
   140         Content headerContent = new ContentBuilder();
   136         addTop(htmlTree);
   141         addTop(headerContent);
   137         Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(packageElement),
   142         Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(packageElement),
   138                 contents.moduleLabel);
   143                 contents.moduleLabel);
   139         navBar.setNavLinkModule(linkContent);
   144         navBar.setNavLinkModule(linkContent);
   140         navBar.setUserHeader(getUserHeaderFooter(true));
   145         navBar.setUserHeader(getUserHeaderFooter(true));
   141         htmlTree.add(navBar.getContent(true));
   146         headerContent.add(navBar.getContent(true));
   142         bodyTree.add(htmlTree);
   147         bodyContents.setHeader(headerContent);
   143         return bodyTree;
   148         return bodyTree;
   144     }
   149     }
   145 
   150 
   146     /**
   151     /**
   147      * Add a link to the tree for all the packages.
   152      * Add a link to the tree for all the packages.