src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DocFilesHandlerImpl.java
changeset 49551 0d4786e42471
parent 48759 ffa68af7da87
child 52685 6d243dcde190
equal deleted inserted replaced
49550:dce997f9a93e 49551:0d4786e42471
    25 
    25 
    26 package jdk.javadoc.internal.doclets.formats.html;
    26 package jdk.javadoc.internal.doclets.formats.html;
    27 
    27 
    28 import com.sun.source.doctree.AttributeTree;
    28 import com.sun.source.doctree.AttributeTree;
    29 import com.sun.source.doctree.AttributeTree.ValueKind;
    29 import com.sun.source.doctree.AttributeTree.ValueKind;
    30 import com.sun.source.doctree.DocRootTree;
       
    31 import com.sun.source.doctree.DocTree;
    30 import com.sun.source.doctree.DocTree;
    32 import com.sun.source.doctree.EndElementTree;
    31 import com.sun.source.doctree.EndElementTree;
    33 import com.sun.source.doctree.LinkTree;
       
    34 import com.sun.source.doctree.StartElementTree;
    32 import com.sun.source.doctree.StartElementTree;
    35 import com.sun.source.doctree.TextTree;
    33 import com.sun.source.doctree.TextTree;
    36 import com.sun.source.util.SimpleDocTreeVisitor;
    34 import com.sun.source.util.SimpleDocTreeVisitor;
    37 import com.sun.tools.doclint.HtmlTag;
    35 import com.sun.tools.doclint.HtmlTag;
    38 import com.sun.tools.doclint.HtmlTag.Attr;
    36 import com.sun.tools.doclint.HtmlTag.Attr;
    39 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
    37 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
       
    38 import jdk.javadoc.internal.doclets.formats.html.markup.Navigation;
    40 import jdk.javadoc.internal.doclets.toolkit.Content;
    39 import jdk.javadoc.internal.doclets.toolkit.Content;
    41 import jdk.javadoc.internal.doclets.toolkit.DocFileElement;
    40 import jdk.javadoc.internal.doclets.toolkit.DocFileElement;
    42 import jdk.javadoc.internal.doclets.toolkit.DocFilesHandler;
    41 import jdk.javadoc.internal.doclets.toolkit.DocFilesHandler;
    43 import jdk.javadoc.internal.doclets.toolkit.util.DocFile;
    42 import jdk.javadoc.internal.doclets.toolkit.util.DocFile;
    44 import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
    43 import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
    49 import javax.lang.model.element.Element;
    48 import javax.lang.model.element.Element;
    50 import javax.lang.model.element.ModuleElement;
    49 import javax.lang.model.element.ModuleElement;
    51 import javax.lang.model.element.PackageElement;
    50 import javax.lang.model.element.PackageElement;
    52 import javax.tools.FileObject;
    51 import javax.tools.FileObject;
    53 import javax.tools.JavaFileManager.Location;
    52 import javax.tools.JavaFileManager.Location;
       
    53 
    54 import java.util.Collections;
    54 import java.util.Collections;
    55 import java.util.List;
    55 import java.util.List;
       
    56 
       
    57 import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
    56 
    58 
    57 public class DocFilesHandlerImpl implements DocFilesHandler {
    59 public class DocFilesHandlerImpl implements DocFilesHandler {
    58 
    60 
    59     public final Element element;
    61     public final Element element;
    60     public final Location location;
    62     public final Location location;
    61     public final DocPath  source;
    63     public final DocPath  source;
    62     public final HtmlConfiguration configuration;
    64     public final HtmlConfiguration configuration;
       
    65     private Navigation navBar;
    63 
    66 
    64     /**
    67     /**
    65      * Constructor to construct the DocFilesWriter object.
    68      * Constructor to construct the DocFilesWriter object.
    66      *
    69      *
    67      * @param configuration the configuration of this doclet.
    70      * @param configuration the configuration of this doclet.
   169         configuration.messages.notice("doclet.Generating_0", docletWriter.filename);
   172         configuration.messages.notice("doclet.Generating_0", docletWriter.filename);
   170 
   173 
   171         String title = getWindowTitle(docletWriter, dfElement).trim();
   174         String title = getWindowTitle(docletWriter, dfElement).trim();
   172         HtmlTree htmlContent = docletWriter.getBody(true, title);
   175         HtmlTree htmlContent = docletWriter.getBody(true, title);
   173         docletWriter.addTop(htmlContent);
   176         docletWriter.addTop(htmlContent);
   174         docletWriter.addNavLinks(true, htmlContent);
   177         PackageElement pkg = (PackageElement) element;
       
   178         this.navBar = new Navigation(pkg, configuration, docletWriter.fixedNavDiv,
       
   179                 PageMode.DOCFILE, docletWriter.path);
       
   180         Content mdleLinkContent = docletWriter.getModuleLink(utils.elementUtils.getModuleOf(pkg),
       
   181                 docletWriter.contents.moduleLabel);
       
   182         navBar.setNavLinkModule(mdleLinkContent);
       
   183         Content pkgLinkContent = docletWriter.getPackageLink(pkg, docletWriter.contents.packageLabel);
       
   184         navBar.setNavLinkPackage(pkgLinkContent);
       
   185         navBar.setUserHeader(docletWriter.getUserHeaderFooter(true));
       
   186         htmlContent.addContent(navBar.getContent(true));
   175         List<? extends DocTree> fullBody = utils.getFullBody(dfElement);
   187         List<? extends DocTree> fullBody = utils.getFullBody(dfElement);
   176         Content bodyContent = docletWriter.commentTagsToContent(null, dfElement, fullBody, false);
   188         Content bodyContent = docletWriter.commentTagsToContent(null, dfElement, fullBody, false);
   177 
   189 
   178         docletWriter.addTagsInfo(dfElement, bodyContent);
   190         docletWriter.addTagsInfo(dfElement, bodyContent);
   179         htmlContent.addContent(bodyContent);
   191         htmlContent.addContent(bodyContent);
   180 
   192 
   181         docletWriter.addNavLinks(false, htmlContent);
   193         navBar.setUserFooter(docletWriter.getUserHeaderFooter(false));
       
   194         htmlContent.addContent(navBar.getContent(false));
   182         docletWriter.addBottom(htmlContent);
   195         docletWriter.addBottom(htmlContent);
   183         docletWriter.printHtmlDocument(Collections.emptyList(), false, htmlContent);
   196         docletWriter.printHtmlDocument(Collections.emptyList(), false, htmlContent);
   184         return true;
   197         return true;
   185     }
   198     }
   186 
   199 
   299                     break;
   312                     break;
   300                 default:
   313                 default:
   301                     throw new AssertionError("unsupported element: " + e.getKind());
   314                     throw new AssertionError("unsupported element: " + e.getKind());
   302             }
   315             }
   303         }
   316         }
   304 
       
   305         /**
       
   306          * Get the module link.
       
   307          *
       
   308          * @return a content tree for the module link
       
   309          */
       
   310         @Override
       
   311         protected Content getNavLinkModule() {
       
   312             Content linkContent = getModuleLink(utils.elementUtils.getModuleOf(pkg),
       
   313                     contents.moduleLabel);
       
   314             Content li = HtmlTree.LI(linkContent);
       
   315             return li;
       
   316         }
       
   317 
       
   318         /**
       
   319          * Get this package link.
       
   320          *
       
   321          * @return a content tree for the package link
       
   322          */
       
   323         @Override
       
   324         protected Content getNavLinkPackage() {
       
   325             Content linkContent = getPackageLink(pkg,
       
   326                     contents.packageLabel);
       
   327             Content li = HtmlTree.LI(linkContent);
       
   328             return li;
       
   329         }
       
   330     }
   317     }
   331 }
   318 }