JDK 11 jdk.javadoc.jmod - Java Document Tool

JDK 11 jdk.javadoc.jmod is the JMOD file for JDK 11 Java Document tool, which can be invoked by the "javadoc" command.

JDK 11 Java Document tool compiled class files are stored in \fyicenter\jdk-11.0.1\jmods\jdk.javadoc.jmod.

JDK 11 Java Document tool compiled class files are also linked and stored in the \fyicenter\jdk-11.0.1\lib\modules JImage file.

JDK 11 Java Document tool source code files are stored in \fyicenter\jdk-11.0.1\lib\src.zip\jdk.javadoc.

You can click and view the content of each source code file in the list below.

✍: FYIcenter

jdk/javadoc/internal/doclets/formats/html/AbstractTreeWriter.java

/*
 * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package jdk.javadoc.internal.doclets.formats.html;

import java.util.*;

import javax.lang.model.element.TypeElement;

import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
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.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.ClassTree;
import jdk.javadoc.internal.doclets.toolkit.util.DocPath;


/**
 * Abstract class to print the class hierarchy page for all the Classes. This
 * is sub-classed by {@link PackageTreeWriter} and {@link TreeWriter} to
 * generate the Package Tree and global Tree(for all the classes and packages)
 * pages.
 *
 *  <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>
 *
 * @author Atul M Dambalkar
 */
public abstract class AbstractTreeWriter extends HtmlDocletWriter {

    /**
     * The class and interface tree built by using {@link ClassTree}
     */
    protected final ClassTree classtree;

    /**
     * Constructor initializes classtree variable. This constructor will be used
     * while generating global tree file "overview-tree.html".
     *
     * @param configuration  The current configuration
     * @param filename   File to be generated.
     * @param classtree  Tree built by {@link ClassTree}.
     */
    protected AbstractTreeWriter(HtmlConfiguration configuration,
                                 DocPath filename, ClassTree classtree) {
        super(configuration, filename);
        this.classtree = classtree;
    }

    /**
     * Add each level of the class tree. For each sub-class or
     * sub-interface indents the next level information.
     * Recurses itself to add sub-classes info.
     *
     * @param parent the superclass or superinterface of the sset
     * @param collection  a collection of the sub-classes at this level
     * @param isEnum true if we are generating a tree for enums
     * @param contentTree the content tree to which the level information will be added
     */
    protected void addLevelInfo(TypeElement parent, Collection<TypeElement> collection,
            boolean isEnum, Content contentTree) {
        if (!collection.isEmpty()) {
            Content ul = new HtmlTree(HtmlTag.UL);
            for (TypeElement local : collection) {
                HtmlTree li = new HtmlTree(HtmlTag.LI);
                li.setStyle(HtmlStyle.circle);
                addPartialInfo(local, li);
                addExtendsImplements(parent, local, li);
                addLevelInfo(local, classtree.directSubClasses(local, isEnum),
                             isEnum, li);   // Recurse
                ul.addContent(li);
            }
            contentTree.addContent(ul);
        }
    }

    /**
     * Add the heading for the tree depending upon tree type if it's a
     * Class Tree or Interface tree.
     *
     * @param sset classes which are at the most base level, all the
     * other classes in this run will derive from these classes
     * @param heading heading for the tree
     * @param div the content tree to which the tree will be added
     */
    protected void addTree(SortedSet<TypeElement> sset, String heading, HtmlTree div) {
        addTree(sset, heading, div, false);
    }

    protected void addTree(SortedSet<TypeElement> sset, String heading,
                           HtmlTree div, boolean isEnums) {
        if (!sset.isEmpty()) {
            TypeElement firstTypeElement = sset.first();
            Content headingContent = contents.getContent(heading);
            Content sectionHeading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, true,
                    headingContent);
            HtmlTree htmlTree;
            if (configuration.allowTag(HtmlTag.SECTION)) {
                htmlTree = HtmlTree.SECTION(sectionHeading);
            } else {
                div.addContent(sectionHeading);
                htmlTree = div;
            }
            addLevelInfo(!utils.isInterface(firstTypeElement) ? firstTypeElement : null,
                    sset, isEnums, htmlTree);
            if (configuration.allowTag(HtmlTag.SECTION)) {
                div.addContent(htmlTree);
            }
        }
    }

    /**
     * Add information regarding the classes which this class extends or
     * implements.
     *
     * @param parent the parent class of the class being documented
     * @param typeElement the TypeElement under consideration
     * @param contentTree the content tree to which the information will be added
     */
    protected void addExtendsImplements(TypeElement parent, TypeElement typeElement,
            Content contentTree) {
        SortedSet<TypeElement> interfaces = new TreeSet<>(utils.makeGeneralPurposeComparator());
        typeElement.getInterfaces().stream().forEach((t) -> {
            interfaces.add(utils.asTypeElement(t));
        });
        if (interfaces.size() > (utils.isInterface(typeElement) ? 1 : 0)) {
            boolean isFirst = true;
            for (TypeElement intf : interfaces) {
                if (parent != intf) {
                    if (utils.isPublic(intf) || utils.isLinkable(intf)) {
                        if (isFirst) {
                            isFirst = false;
                            if (utils.isInterface(typeElement)) {
                                contentTree.addContent(" (");
                                contentTree.addContent(contents.also);
                                contentTree.addContent(" extends ");
                            } else {
                                contentTree.addContent(" (implements ");
                            }
                        } else {
                            contentTree.addContent(", ");
                        }
                        addPreQualifiedClassLink(LinkInfoImpl.Kind.TREE, intf, contentTree);
                    }
                }
            }
            if (!isFirst) {
                contentTree.addContent(")");
            }
        }
    }

    /**
     * Add information about the class kind, if it's a "class" or "interface".
     *
     * @param typeElement the class being documented
     * @param contentTree the content tree to which the information will be added
     */
    protected void addPartialInfo(TypeElement typeElement, Content contentTree) {
        addPreQualifiedStrongClassLink(LinkInfoImpl.Kind.TREE, typeElement, contentTree);
    }
}

jdk/javadoc/internal/doclets/formats/html/AbstractTreeWriter.java

 

JDK 11 jdk.jcmd.jmod - JCmd Tool

JDK 11 jdk.jartool.jmod - JAR Tool

Download and Use JDK 11

⇑⇑ FAQ for JDK (Java Development Kit)

2020-07-22, 14367👍, 0💬