8241625: use new "member-list" CSS class instead of general "block-list" for list of members

Reviewed-by: hannesw
This commit is contained in:
Jonathan Gibbons 2020-03-31 14:47:07 -07:00
parent 6d44ff7d93
commit 35f4df51d4
41 changed files with 284 additions and 194 deletions

@ -51,6 +51,7 @@ 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;
import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
import jdk.javadoc.internal.doclets.toolkit.MemberWriter;
import jdk.javadoc.internal.doclets.toolkit.Resources;
import jdk.javadoc.internal.doclets.toolkit.taglets.DeprecatedTaglet;
import jdk.javadoc.internal.doclets.toolkit.util.DocletConstants;
@ -70,7 +71,7 @@ import static javax.lang.model.element.Modifier.SYNCHRONIZED;
* This code and its internal interfaces are subject to change or
* deletion without notice.</b>
*/
public abstract class AbstractMemberWriter implements MemberSummaryWriter {
public abstract class AbstractMemberWriter implements MemberSummaryWriter, MemberWriter {
protected final HtmlConfiguration configuration;
protected final HtmlOptions options;
@ -467,6 +468,16 @@ public abstract class AbstractMemberWriter implements MemberSummaryWriter {
return writer.getMemberTree(memberTree);
}
@Override
public Content getMemberList() {
return writer.getMemberList();
}
@Override
public Content getMemberListItem(Content memberTree) {
return writer.getMemberListItem(memberTree);
}
/**
* A content builder for member signatures.
*/

@ -140,11 +140,6 @@ public class AnnotationTypeFieldWriterImpl extends AbstractMemberWriter
.setId(SectionName.ANNOTATION_TYPE_FIELD_DETAIL.getName()));
}
@Override
public Content getAnnotationDoc(Content annotationDocTree) {
return getMemberTree(annotationDocTree);
}
@Override
public void addSummaryLabel(Content memberTree) {
HtmlTree label = HtmlTree.HEADING(Headings.TypeDeclaration.SUMMARY_HEADING,

@ -140,11 +140,6 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
return getMemberTree(HtmlTree.SECTION(HtmlStyle.memberDetails, annotationDetails));
}
@Override
public Content getAnnotationDoc(Content annotationDocTree) {
return getMemberTree(annotationDocTree);
}
@Override
public void addSummaryLabel(Content memberTree) {
HtmlTree label = HtmlTree.HEADING(Headings.TypeDeclaration.SUMMARY_HEADING,

@ -316,7 +316,7 @@ public class ClassUseWriter extends SubWriterHolderWriter {
Content heading = HtmlTree.HEADING(Headings.TypeUse.SUMMARY_HEADING, link);
htmlTree.add(heading);
addClassUse(pkg, htmlTree);
ul.add(HtmlTree.LI(HtmlStyle.blockList, htmlTree));
ul.add(HtmlTree.LI(htmlTree));
}
Content li = HtmlTree.SECTION(HtmlStyle.classUses, ul);
contentTree.add(li);

@ -214,8 +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);
classConstantTree.add(li);
classConstantTree.add(HtmlTree.LI(table));
}
/**

@ -158,11 +158,6 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
.setId(SectionName.CONSTRUCTOR_DETAIL.getName()));
}
@Override
public Content getConstructorDoc(Content constructorDocTree) {
return getMemberTree(constructorDocTree);
}
/**
* Let the writer know whether a non public constructor was found.
*

@ -401,9 +401,8 @@ public class DeprecatedListWriter extends SubWriterHolderWriter {
}
table.addRow(link, desc);
}
Content li = HtmlTree.LI(HtmlStyle.blockList, table);
Content ul = HtmlTree.UL(HtmlStyle.blockList, li);
contentTree.add(ul);
// note: singleton list
contentTree.add(HtmlTree.UL(HtmlStyle.blockList, HtmlTree.LI(table)));
}
}

@ -127,11 +127,6 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
.setId(SectionName.ENUM_CONSTANT_DETAIL.getName()));
}
@Override
public Content getEnumConstants(Content enumConstantsTree) {
return getMemberTree(enumConstantsTree);
}
@Override
public void addSummaryLabel(Content memberTree) {
Content label = HtmlTree.HEADING(Headings.TypeDeclaration.SUMMARY_HEADING,

@ -127,11 +127,6 @@ public class FieldWriterImpl extends AbstractMemberWriter
.setId(SectionName.FIELD_DETAIL.getName()));
}
@Override
public Content getFieldDoc(Content fieldTree) {
return getMemberTree(fieldTree);
}
@Override
public void addSummaryLabel(Content memberTree) {
Content label = HtmlTree.HEADING(Headings.TypeDeclaration.SUMMARY_HEADING,

@ -107,7 +107,7 @@ public class HtmlSerialFieldWriter extends FieldWriterImpl
section.add(serialHeading);
section.add(serializableFieldsTree);
}
return HtmlTree.LI(HtmlStyle.blockList, section);
return HtmlTree.LI(section);
}
@Override

@ -94,7 +94,7 @@ public class HtmlSerialMethodWriter extends MethodWriterImpl implements
Content serialHeading = HtmlTree.HEADING(Headings.SerializedForm.CLASS_SUBHEADING, headingContent);
Content section = HtmlTree.SECTION(HtmlStyle.detail, serialHeading);
section.add(serializableMethodContent);
return HtmlTree.LI(HtmlStyle.blockList, section);
return HtmlTree.LI(section);
}
/**

@ -176,11 +176,6 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
.setId(SectionName.METHOD_DETAIL.getName()));
}
@Override
public Content getMethodDoc(Content methodDocTree) {
return getMemberTree(methodDocTree);
}
@Override
public void addSummaryLabel(Content memberTree) {
Content label = HtmlTree.HEADING(Headings.TypeDeclaration.SUMMARY_HEADING,

@ -514,7 +514,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
addModulesList(indirectModules, amrTable);
section.add(amrTable);
}
summaryContentTree.add(HtmlTree.LI(HtmlStyle.blockList, section));
summaryContentTree.add(HtmlTree.LI(section));
}
}
@ -560,7 +560,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
addIndirectPackages(aopTable, indirectOpenPackages);
section.add(aopTable);
}
summaryContentTree.add(HtmlTree.LI(HtmlStyle.blockList, section));
summaryContentTree.add(HtmlTree.LI(section));
}
}
@ -735,7 +735,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
section.add(table);
}
}
summaryContentTree.add(HtmlTree.LI(HtmlStyle.blockList, section));
summaryContentTree.add(HtmlTree.LI(section));
}
}

@ -220,7 +220,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
table.addRow(typeContent, summary);
}
section.add(table);
ul.add(HtmlTree.LI(HtmlStyle.blockList, section));
ul.add(HtmlTree.LI(section));
}
Content li = HtmlTree.SECTION(HtmlStyle.packageUses, ul);
contentTree.add(li);

@ -234,8 +234,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
}
table.addRow(classLink, description);
}
Content li = HtmlTree.LI(HtmlStyle.blockList, table);
summaryContentTree.add(li);
summaryContentTree.add(HtmlTree.LI(table));
}
}

@ -139,11 +139,6 @@ public class PropertyWriterImpl extends AbstractMemberWriter
.setId(SectionName.PROPERTY_DETAIL.getName()));
}
@Override
public Content getPropertyDoc(Content propertyDocTree) {
return getMemberTree(propertyDocTree);
}
@Override
public void addSummaryLabel(Content memberTree) {
Content label = HtmlTree.HEADING(Headings.TypeDeclaration.SUMMARY_HEADING,

@ -231,7 +231,7 @@ public class SerializedFormWriterImpl extends SubWriterHolderWriter
public void addPackageSerializedTree(Content serializedSummariesTree,
Content packageSerializedTree)
{
serializedSummariesTree.add(HtmlTree.LI(HtmlStyle.blockList, packageSerializedTree));
serializedSummariesTree.add(HtmlTree.LI(packageSerializedTree));
}
/**

@ -212,6 +212,25 @@ public abstract class SubWriterHolderWriter extends HtmlDocletWriter {
return ul;
}
/**
* Returns a list to be used for the list of members of a given kind.
*
* @return a list to be used for the list of members of a given kind
*/
public Content getMemberList() {
return new HtmlTree(TagName.UL).setStyle(HtmlStyle.memberList);
}
/**
* Returns an item for the list of elements of a given kind
*
* @param contentTree the tree used to generate the complete member tree
* @return an item for the list of elements of a given kind
*/
public Content getMemberListItem(Content contentTree) {
return HtmlTree.LI(contentTree);
}
public Content getMemberInheritedTree() {
HtmlTree div = new HtmlTree(TagName.DIV);
div.setStyle(HtmlStyle.inheritedList);
@ -238,7 +257,7 @@ public abstract class SubWriterHolderWriter extends HtmlDocletWriter {
* @return a content tree for the member
*/
public Content getMemberTree(Content contentTree) {
return HtmlTree.LI(HtmlStyle.blockList, contentTree);
return HtmlTree.LI(contentTree);
}
/**

@ -85,6 +85,7 @@ public enum HtmlStyle {
interfaceName,
legalCopy,
memberDetails,
memberList,
memberNameLabel,
memberNameLink,
memberSummary,

@ -37,7 +37,7 @@ import javax.lang.model.element.TypeElement;
* deletion without notice.</b>
*/
public interface AnnotationTypeFieldWriter {
public interface AnnotationTypeFieldWriter extends MemberWriter {
/**
* Add the annotation type member tree header.
@ -77,14 +77,6 @@ public interface AnnotationTypeFieldWriter {
*/
Content getAnnotationDetails(Content annotationDetailsTreeHeader, Content annotationDetailsTree);
/**
* Get the annotation type documentation.
*
* @param annotationDocTree the content tree representing annotation type documentation
* @return content tree for the annotation type documentation
*/
Content getAnnotationDoc(Content annotationDocTree);
/**
* Get the signature for the given member.
*

@ -37,7 +37,7 @@ import javax.lang.model.element.TypeElement;
* deletion without notice.</b>
*/
public interface AnnotationTypeRequiredMemberWriter {
public interface AnnotationTypeRequiredMemberWriter extends MemberWriter {
/**
* Add the annotation type member tree header.
@ -77,14 +77,6 @@ public interface AnnotationTypeRequiredMemberWriter {
*/
Content getAnnotationDetails(Content annotationDetailsTreeHeader, Content annotationDetailsTree);
/**
* Get the annotation type documentation.
*
* @param annotationDocTree the content tree representing annotation type documentation
* @return content tree for the annotation type documentation
*/
Content getAnnotationDoc(Content annotationDocTree);
/**
* Get the signature for the given member.
*

@ -37,7 +37,7 @@ import javax.lang.model.element.TypeElement;
* deletion without notice.</b>
*/
public interface ConstructorWriter {
public interface ConstructorWriter extends MemberWriter {
/**
* Get the constructor details tree header.
@ -96,14 +96,6 @@ public interface ConstructorWriter {
*/
Content getConstructorDetails(Content memberDetailsTreeHeader, Content memberDetailsTree);
/**
* Get the constructor documentation.
*
* @param constructorDocTree the content tree representing constructor documentation
* @return content tree for the constructor documentation
*/
Content getConstructorDoc(Content constructorDocTree);
/**
* Let the writer know whether a non public constructor was found.
*

@ -37,7 +37,7 @@ import javax.lang.model.element.VariableElement;
* deletion without notice.</b>
*/
public interface EnumConstantWriter {
public interface EnumConstantWriter extends MemberWriter {
/**
* Get the enum constants details tree header.
@ -99,14 +99,6 @@ public interface EnumConstantWriter {
*/
Content getEnumConstantsDetails(Content memberDetailsTreeHeader, Content memberDetailsTree);
/**
* Get the enum constants documentation.
*
* @param enumConstantsTree the content tree representing enum constants documentation
* @return content tree for the enum constants documentation
*/
Content getEnumConstants(Content enumConstantsTree);
/**
* Gets the member header tree.
*

@ -38,7 +38,7 @@ import javax.lang.model.element.VariableElement;
* deletion without notice.</b>
*/
public interface FieldWriter {
public interface FieldWriter extends MemberWriter {
/**
* Get the field details tree header.
@ -97,14 +97,6 @@ public interface FieldWriter {
*/
Content getFieldDetails(Content memberDetailsTreeHeader, Content memberDetailsTree);
/**
* Get the field documentation.
*
* @param fieldDocTree the content tree representing field documentation
* @return content tree for the field documentation
*/
Content getFieldDoc(Content fieldDocTree);
/**
* Gets the member header tree.
*

@ -0,0 +1,54 @@
/*
* Copyright (c) 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package jdk.javadoc.internal.doclets.toolkit;
/**
* Common behavior for writing members of a type.
*
* <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 interface MemberWriter {
/**
* Returns a list to be used for the members of a given kind.
*
* @return a list to be used for the members of a given kind
* @see #getMemberListItem(Content)
*/
Content getMemberList();
/**
* Returns an item for the list of elements of a given kind.
*
* @param content the content tree of the member to be documented
* @return an item for the list of elements of a given kind
* @see #getMemberList()
*/
Content getMemberListItem(Content content);
}

@ -26,7 +26,6 @@
package jdk.javadoc.internal.doclets.toolkit;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeMirror;
/**
@ -38,7 +37,7 @@ import javax.lang.model.type.TypeMirror;
* deletion without notice.</b>
*/
public interface MethodWriter {
public interface MethodWriter extends MemberWriter {
/**
* Get the method details tree header.
@ -98,14 +97,6 @@ public interface MethodWriter {
*/
Content getMethodDetails(Content methodDetailsTreeHeader, Content methodDetailsTree);
/**
* Get the method documentation.
*
* @param methodDocTree the content tree representing method documentation
* @return content tree for the method documentation
*/
Content getMethodDoc(Content methodDocTree);
/**
* Gets the member header tree.
*

@ -37,7 +37,7 @@ import javax.lang.model.element.TypeElement;
* deletion without notice.</b>
*/
public interface PropertyWriter {
public interface PropertyWriter extends MemberWriter {
/**
* Get the property details tree header.
@ -96,14 +96,6 @@ public interface PropertyWriter {
*/
Content getPropertyDetails(Content memberDetailsTreeHeader, Content memberDetailsTree);
/**
* Get the property documentation.
*
* @param propertyDocTree the content tree representing property documentation
* @return content tree for the property documentation
*/
Content getPropertyDoc(Content propertyDocTree);
/**
* Gets the member header tree.
*

@ -135,7 +135,7 @@ public class AnnotationTypeFieldBuilder extends AbstractMemberBuilder {
if (hasMembersToDocument()) {
writer.addAnnotationFieldDetailsMarker(memberDetailsTree);
Content annotationDetailsTreeHeader = writer.getAnnotationDetailsTreeHeader();
Content detailsTree = writer.getMemberTreeHeader();
Content memberList = writer.getMemberList();
for (Element member : members) {
currentMember = member;
@ -146,9 +146,9 @@ public class AnnotationTypeFieldBuilder extends AbstractMemberBuilder {
buildMemberComments(annotationDocTree);
buildTagInfo(annotationDocTree);
detailsTree.add(writer.getAnnotationDoc(annotationDocTree));
memberList.add(writer.getMemberListItem(annotationDocTree));
}
memberDetailsTree.add(writer.getAnnotationDetails(annotationDetailsTreeHeader, detailsTree));
memberDetailsTree.add(writer.getAnnotationDetails(annotationDetailsTreeHeader, memberList));
}
}
@ -173,7 +173,7 @@ public class AnnotationTypeFieldBuilder extends AbstractMemberBuilder {
/**
* Build the comments for the member. Do nothing if
* {@link BaseOptions#noComment} is set to true.
* {@link BaseOptions#noComment()} is set to true.
*
* @param annotationDocTree the content tree to which the documentation will be added
*/

@ -137,7 +137,7 @@ public class AnnotationTypeRequiredMemberBuilder extends AbstractMemberBuilder {
if (hasMembersToDocument()) {
writer.addAnnotationDetailsMarker(memberDetailsTree);
Content annotationDetailsTreeHeader = writer.getAnnotationDetailsTreeHeader();
Content detailsTree = writer.getMemberTreeHeader();
Content memberList = writer.getMemberList();
for (Element member : members) {
currentMember = member;
@ -145,9 +145,9 @@ public class AnnotationTypeRequiredMemberBuilder extends AbstractMemberBuilder {
buildAnnotationTypeMemberChildren(annotationDocTree);
detailsTree.add(writer.getAnnotationDoc(annotationDocTree));
memberList.add(writer.getMemberListItem(annotationDocTree));
}
memberDetailsTree.add(writer.getAnnotationDetails(annotationDetailsTreeHeader, detailsTree));
memberDetailsTree.add(writer.getAnnotationDetails(annotationDetailsTreeHeader, memberList));
}
}
@ -178,7 +178,7 @@ public class AnnotationTypeRequiredMemberBuilder extends AbstractMemberBuilder {
/**
* Build the comments for the member. Do nothing if
* {@link BaseOptions#noComment} is set to true.
* {@link BaseOptions#noComment()} is set to true.
*
* @param annotationDocTree the content tree to which the documentation will be added
*/

@ -119,7 +119,7 @@ public class ConstructorBuilder extends AbstractMemberBuilder {
* Build the constructor documentation.
*
* @param memberDetailsTree the content tree to which the documentation will be added
* @throws DocletException is there is a problem while building the documentation
* @throws DocletException if there is a problem while building the documentation
*/
protected void buildConstructorDoc(Content memberDetailsTree) throws DocletException {
if (writer == null) {
@ -127,7 +127,7 @@ public class ConstructorBuilder extends AbstractMemberBuilder {
}
if (hasMembersToDocument()) {
Content constructorDetailsTreeHeader = writer.getConstructorDetailsTreeHeader(memberDetailsTree);
Content constructorDetailsTree = writer.getMemberTreeHeader();
Content memberList = writer.getMemberList();
for (Element constructor : constructors) {
currentConstructor = (ExecutableElement)constructor;
@ -138,10 +138,10 @@ public class ConstructorBuilder extends AbstractMemberBuilder {
buildConstructorComments(constructorDocTree);
buildTagInfo(constructorDocTree);
constructorDetailsTree.add(writer.getConstructorDoc(constructorDocTree));
memberList.add(writer.getMemberListItem(constructorDocTree));
}
memberDetailsTree.add(
writer.getConstructorDetails(constructorDetailsTreeHeader, constructorDetailsTree));
writer.getConstructorDetails(constructorDetailsTreeHeader, memberList));
}
}
@ -165,7 +165,7 @@ public class ConstructorBuilder extends AbstractMemberBuilder {
/**
* Build the comments for the constructor. Do nothing if
* {@link BaseOptions#noComment} is set to true.
* {@link BaseOptions#noComment()} is set to true.
*
* @param constructorDocTree the content tree to which the documentation will be added
*/

@ -119,22 +119,22 @@ public class EnumConstantBuilder extends AbstractMemberBuilder {
if (hasMembersToDocument()) {
Content enumConstantsDetailsTreeHeader = writer.getEnumConstantsDetailsTreeHeader(typeElement,
memberDetailsTree);
Content enumConstantsDetailsTree = writer.getMemberTreeHeader();
Content memberList = writer.getMemberList();
for (Element enumConstant : enumConstants) {
currentElement = (VariableElement)enumConstant;
Content enumConstantsTree = writer.getEnumConstantsTreeHeader(currentElement,
enumConstantsDetailsTree);
memberList);
buildSignature(enumConstantsTree);
buildDeprecationInfo(enumConstantsTree);
buildEnumConstantComments(enumConstantsTree);
buildTagInfo(enumConstantsTree);
enumConstantsDetailsTree.add(writer.getEnumConstants(enumConstantsTree));
memberList.add(writer.getMemberListItem(enumConstantsTree));
}
memberDetailsTree.add(
writer.getEnumConstantsDetails(enumConstantsDetailsTreeHeader, enumConstantsDetailsTree));
writer.getEnumConstantsDetails(enumConstantsDetailsTreeHeader, memberList));
}
}
@ -158,7 +158,7 @@ public class EnumConstantBuilder extends AbstractMemberBuilder {
/**
* Build the comments for the enum constant. Do nothing if
* {@link BaseOptions#noComment} is set to true.
* {@link BaseOptions#noComment()} is set to true.
*
* @param enumConstantsTree the content tree to which the documentation will be added
*/

@ -120,7 +120,7 @@ public class FieldBuilder extends AbstractMemberBuilder {
}
if (!fields.isEmpty()) {
Content fieldDetailsTreeHeader = writer.getFieldDetailsTreeHeader(memberDetailsTree);
Content fieldDetailsTree = writer.getMemberTreeHeader();
Content memberList = writer.getMemberList();
for (Element element : fields) {
currentElement = (VariableElement)element;
@ -131,10 +131,10 @@ public class FieldBuilder extends AbstractMemberBuilder {
buildFieldComments(fieldDocTree);
buildTagInfo(fieldDocTree);
fieldDetailsTree.add(writer.getFieldDoc(fieldDocTree));
memberList.add(writer.getMemberListItem(fieldDocTree));
}
memberDetailsTree.add(
writer.getFieldDetails(fieldDetailsTreeHeader, fieldDetailsTree));
writer.getFieldDetails(fieldDetailsTreeHeader, memberList));
}
}
@ -158,7 +158,7 @@ public class FieldBuilder extends AbstractMemberBuilder {
/**
* Build the comments for the field. Do nothing if
* {@link BaseOptions#noComment} is set to true.
* {@link BaseOptions#noComment()} is set to true.
*
* @param fieldDocTree the content tree to which the documentation will be added
*/

@ -118,7 +118,7 @@ public class MethodBuilder extends AbstractMemberBuilder {
}
if (hasMembersToDocument()) {
Content methodDetailsTreeHeader = writer.getMethodDetailsTreeHeader(memberDetailsTree);
Content methodDetailsTree = writer.getMemberTreeHeader();
Content memberList = writer.getMemberList();
for (Element method : methods) {
currentMethod = (ExecutableElement)method;
@ -129,9 +129,9 @@ public class MethodBuilder extends AbstractMemberBuilder {
buildMethodComments(methodDocTree);
buildTagInfo(methodDocTree);
methodDetailsTree.add(writer.getMethodDoc(methodDocTree));
memberList.add(writer.getMemberListItem(methodDocTree));
}
memberDetailsTree.add(writer.getMethodDetails(methodDetailsTreeHeader, methodDetailsTree));
memberDetailsTree.add(writer.getMethodDetails(methodDetailsTreeHeader, memberList));
}
}
@ -155,7 +155,7 @@ public class MethodBuilder extends AbstractMemberBuilder {
/**
* Build the comments for the method. Do nothing if
* {@link BaseOptions#noComment} is set to true.
* {@link BaseOptions#noComment()} is set to true.
*
* @param methodDocTree the content tree to which the documentation will be added
*/

@ -120,7 +120,7 @@ public class PropertyBuilder extends AbstractMemberBuilder {
}
if (hasMembersToDocument()) {
Content propertyDetailsTreeHeader = writer.getPropertyDetailsTreeHeader(memberDetailsTree);
Content propertyDetailsTree = writer.getMemberTreeHeader();
Content memberList = writer.getMemberList();
for (Element property : properties) {
currentProperty = (ExecutableElement)property;
@ -130,10 +130,10 @@ public class PropertyBuilder extends AbstractMemberBuilder {
buildPropertyComments(propertyDocTree);
buildTagInfo(propertyDocTree);
propertyDetailsTree.add(writer.getPropertyDoc(propertyDocTree));
memberList.add(writer.getMemberListItem(propertyDocTree));
}
memberDetailsTree.add(
writer.getPropertyDetails(propertyDetailsTreeHeader, propertyDetailsTree));
writer.getPropertyDetails(propertyDetailsTreeHeader, memberList));
}
}
@ -157,7 +157,7 @@ public class PropertyBuilder extends AbstractMemberBuilder {
/**
* Build the comments for the property. Do nothing if
* {@link BaseOptions#noComment} is set to true.
* {@link BaseOptions#noComment()} is set to true.
*
* @param propertyDocTree the content tree to which the documentation will be added
*/

@ -258,16 +258,16 @@ ul.sub-nav-list li {
* Styles for headings.
*/
body.class-declaration-page .summary h2,
body.class-declaration-page .details h2,
body.class-declaration-page .details h2,
body.class-use-page h2,
body.module-declaration-page .block-list h2 {
font-style: italic;
padding:0;
margin:15px 0;
}
body.class-declaration-page .summary h3,
body.class-declaration-page .details h3,
body.class-declaration-page .summary .inherited-list h2 {
body.class-declaration-page .summary h3,
body.class-declaration-page .details h3,
body.class-declaration-page .summary .inherited-list h2 {
background-color:#dee3e9;
border:1px solid #d0d9e0;
margin:0 0 6px -8px;
@ -321,11 +321,11 @@ div.inheritance {
div.inheritance div.inheritance {
margin-left:2em;
}
ul.block-list {
ul.block-list, ul.member-list {
margin:10px 0 10px 0;
padding:0;
}
ul.block-list li.block-list {
ul.block-list > li, ul.member-list > li {
list-style:none;
margin-bottom:15px;
line-height:1.4;

@ -74,14 +74,14 @@ public class TestAnnotationTypes extends JavadocTester {
checkOutput("pkg/AnnotationType.html", true,
"<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->",
"<ul class=\"block-list\">",
"<li class=\"block-list\">",
"<ul class=\"member-list\">",
"<li>",
"<section class=\"details\" id=\"annotation.type.element.detail\">",
"<h2>Element Details</h2>",
"<!-- -->",
"</a>",
"<ul class=\"block-list\">",
"<li class=\"block-list\">",
"<ul class=\"member-list\">",
"<li>",
"<section class=\"detail\" id=\"value()\">",
"<h3>value</h3>\n",
"<div class=\"member-signature\"><span class=\"return-type\">int</span>"

@ -102,7 +102,7 @@ public class TestHtmlVersion extends JavadocTester {
checkOutput("pkg1/package-summary.html", true,
"<section class=\"summary\">\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\">\n"
+ "<li>\n"
+ "<div class=\"type-summary\">\n<table>\n"
+ "<caption><span>Class Summary</span><span class=\"tab-end\">&nbsp;</span></caption>");
@ -396,7 +396,7 @@ public class TestHtmlVersion extends JavadocTester {
"<section class=\"details\" id=\"annotation.type.element.detail\">\n"
+ "<ul class=\"block-list\">\n"
+ "<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->\n"
+ "<li class=\"block-list\">\n"
+ "<li>\n"
+ "<section class=\"member-details\">\n"
+ "<h2>Element Details</h2>\n",
"<footer role=\"contentinfo\">\n"
@ -515,7 +515,7 @@ public class TestHtmlVersion extends JavadocTester {
"<!-- ========= END OF TOP NAVBAR ========= -->\n"
+ "</div>\n"
+ "<div class=\"header\">",
"<li class=\"block-list\">\n"
"<li>\n"
+ "<h2 title=\"Package\">Package&nbsp;pkg</h2>");
// Negated test for overview-tree page
@ -563,11 +563,11 @@ public class TestHtmlVersion extends JavadocTester {
+ "</div>\n"
+ "<div class=\"header\">",
"<ul class=\"block-list\">\n"
+ "<li class=\"block-list\">\n"
+ "<li>\n"
+ "<h2>Overview</h2>",
"<li class=\"block-list\">\n"
"<li>\n"
+ "<h2>Package</h2>",
"<li class=\"block-list\">\n"
"<li>\n"
+ "<h2>Class/Interface</h2>");
// Negated test for a regular class page and members (nested class, field, constructore and method)
@ -579,7 +579,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "</a>",
"<!-- ======== NESTED CLASS SUMMARY ======== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"nested.class.summary\">\n"
+ "<li><a name=\"nested.class.summary\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Nested Class Summary</h2>\n"
@ -587,7 +587,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "<table summary=\"Nested Class Summary table, listing nested classes, and an explanation\">",
"<!-- =========== FIELD SUMMARY =========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"field.summary\">\n"
+ "<li><a name=\"field.summary\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Field Summary</h2>\n"
@ -595,7 +595,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "<table summary=\"Field Summary table, listing fields, and an explanation\">",
"<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"constructor.summary\">\n"
+ "<li><a name=\"constructor.summary\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Constructor Summary</h2>\n"
@ -603,7 +603,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "<table summary=\"Constructor Summary table, listing constructors, and an explanation\">",
"<!-- ========== METHOD SUMMARY =========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"method.summary\">\n"
+ "<li><a name=\"method.summary\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Method Summary</h2>\n"
@ -611,19 +611,19 @@ public class TestHtmlVersion extends JavadocTester {
+ "<table summary=\"Method Summary table, listing methods, and an explanation\">",
"<!-- ============ FIELD DETAIL =========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"field.detail\">\n"
+ "<li><a name=\"field.detail\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Field Details</h2>",
"<!-- ========= CONSTRUCTOR DETAIL ======== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"constructor.detail\">\n"
+ "<li><a name=\"constructor.detail\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Constructor Details</h2>",
"<!-- ============ METHOD DETAIL ========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"method.detail\">\n"
+ "<li><a name=\"method.detail\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Method Details</h2>");
@ -637,7 +637,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "</a>",
"<!-- =========== ENUM CONSTANT SUMMARY =========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"enum.constant.summary\">\n"
+ "<li><a name=\"enum.constant.summary\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Enum Constant Summary</h2>\n"
@ -645,7 +645,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "<table summary=\"Enum Constant Summary table, listing enum constants, and an explanation\">",
"<!-- ========== METHOD SUMMARY =========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"method.summary\">\n"
+ "<li><a name=\"method.summary\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Method Summary</h2>\n"
@ -653,13 +653,13 @@ public class TestHtmlVersion extends JavadocTester {
+ "<table summary=\"Method Summary table, listing methods, and an explanation\">",
"<!-- ============ ENUM CONSTANT DETAIL =========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"enum.constant.detail\">\n"
+ "<li><a name=\"enum.constant.detail\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Enum Constant Details</h2>",
"<!-- ============ METHOD DETAIL ========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"method.detail\">\n"
+ "<li><a name=\"method.detail\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Method Details</h2>");
@ -673,7 +673,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "</a>",
"<!-- ========== METHOD SUMMARY =========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"method.summary\">\n"
+ "<li><a name=\"method.summary\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Method Summary</h2>\n"
@ -681,7 +681,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "<table summary=\"Method Summary table, listing methods, and an explanation\">",
"<!-- ============ METHOD DETAIL ========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"method.detail\">\n"
+ "<li><a name=\"method.detail\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Method Details</h2>");
@ -695,13 +695,13 @@ public class TestHtmlVersion extends JavadocTester {
+ "</a>",
"<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"constructor.summary\">\n"
+ "<li><a name=\"constructor.summary\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Constructor Summary</h2>",
"<!-- ========= CONSTRUCTOR DETAIL ======== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"constructor.detail\">\n"
+ "<li><a name=\"constructor.detail\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Constructor Details</h2>");
@ -715,13 +715,13 @@ public class TestHtmlVersion extends JavadocTester {
+ "</a>",
"<!-- ======== CONSTRUCTOR SUMMARY ======== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"constructor.summary\">\n"
+ "<li><a name=\"constructor.summary\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Constructor Summary</h2>",
"<!-- ========= CONSTRUCTOR DETAIL ======== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"constructor.detail\">\n"
+ "<li><a name=\"constructor.detail\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Constructor Details</h2>");
@ -735,7 +735,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "</a>",
"<!-- =========== ANNOTATION TYPE REQUIRED MEMBER SUMMARY =========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"annotation.type.required.element.summary\">\n"
+ "<li><a name=\"annotation.type.required.element.summary\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Required Element Summary</h2>\n"
@ -743,7 +743,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "<table summary=\"Required Element Summary table, listing required elements, and an explanation\">",
"<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"annotation.type.optional.element.summary\">\n"
+ "<li><a name=\"annotation.type.optional.element.summary\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Optional Element Summary</h2>\n"
@ -751,7 +751,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "<table summary=\"Optional Element Summary table, listing optional elements, and an explanation\">",
"<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\"><a name=\"annotation.type.element.detail\">\n"
+ "<li><a name=\"annotation.type.element.detail\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Element Details</h2>");
@ -768,7 +768,7 @@ public class TestHtmlVersion extends JavadocTester {
+ "<div class=\"header\">",
"<div class=\"use-summary\">\n"
+ "<table summary=\"Use table, listing packages, and an explanation\">",
"<li class=\"block-list\"><a name=\"pkg\">\n"
"<li><a name=\"pkg\">\n"
+ "<!-- -->\n"
+ "</a>\n"
+ "<h2>Uses of <a href=\"../RegClass.html\" title=\"class in pkg1\">RegClass</a> in <a href=\"../../pkg/package-summary.html\">pkg</a></h2>\n"

@ -209,8 +209,8 @@ public class TestJavaFX extends JavadocTester {
checkOutput("pkg2/Test.html", true,
"<section class=\"property-details\" id=\"property.detail\">\n"
+ "<h2>Property Details</h2>\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\">\n"
+ "<ul class=\"member-list\">\n"
+ "<li>\n"
+ "<section class=\"detail\" id=\"betaProperty\">\n"
+ "<h3>beta</h3>\n"
+ "<div class=\"member-signature\"><span class=\"modifiers\">public</span>&nbsp;"
@ -218,7 +218,7 @@ public class TestJavaFX extends JavadocTester {
+ "&nbsp;<span class=\"member-name\">betaProperty</span></div>\n"
+ "</section>\n"
+ "</li>\n"
+ "<li class=\"block-list\">\n"
+ "<li>\n"
+ "<section class=\"detail\" id=\"gammaProperty\">\n"
+ "<h3>gamma</h3>\n"
+ "<div class=\"member-signature\"><span class=\"modifiers\">public final</span>&nbsp;"
@ -226,7 +226,7 @@ public class TestJavaFX extends JavadocTester {
+ "&nbsp;<span class=\"member-name\">gammaProperty</span></div>\n"
+ "</section>\n"
+ "</li>\n"
+ "<li class=\"block-list\">\n"
+ "<li>\n"
+ "<section class=\"detail\" id=\"deltaProperty\">\n"
+ "<h3>delta</h3>\n"
+ "<div class=\"member-signature\"><span class=\"modifiers\">public final</span>&nbsp;"

@ -0,0 +1,100 @@
/*
* Copyright (c) 2013, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 8241625
* @summary test the lists genereated by the doclet
* @library /tools/lib ../../lib
* @modules jdk.javadoc/jdk.javadoc.internal.tool
* @build toolbox.ToolBox javadoc.tester.*
* @run main TestLists
*/
import java.io.IOException;
import java.nio.file.Path;
import javadoc.tester.JavadocTester;
import toolbox.ToolBox;
public class TestLists extends JavadocTester {
public static void main(String... args) throws Exception {
TestLists tester = new TestLists();
tester.runTests(m -> new Object[]{Path.of(m.getName())});
}
private final ToolBox tb = new ToolBox();
@Test
public void testMemberLists(Path base) throws IOException {
Path src = base.resolve("src");
tb.writeJavaFiles(src,
"package p; public class C {\n"
+ " public C() { }\n"
+ " public C(int i) { }\n"
+ " public int f1;\n"
+ " public int f2;\n"
+ " public void m1() { }\n"
+ " public void m2() { }\n"
+ "}\n",
"package p; public enum E { E1, E2 }\n",
"package p; public @interface A { int value(); }\n"
);
javadoc("-d", base.resolve("out").toString(),
"-sourcepath", src.toString(),
"p");
checkExit(Exit.OK);
checkOutput("p/C.html", true,
"<h2>Field Details</h2>\n"
+ "<ul class=\"member-list\">\n"
+ "<li>\n"
+ "<section class=\"detail\" id=\"f1\">\n"
+ "<h3>f1</h3>\n",
"<h2>Constructor Details</h2>\n"
+ "<ul class=\"member-list\">\n"
+ "<li>\n"
+ "<section class=\"detail\" id=\"&lt;init&gt;()\">\n"
+ "<h3>C</h3>",
"<section class=\"method-details\" id=\"method.detail\">\n"
+ "<h2>Method Details</h2>\n"
+ "<ul class=\"member-list\">\n"
+ "<li>\n"
+ "<section class=\"detail\" id=\"m1()\">\n"
+ "<h3>m1</h3>\n");
checkOutput("p/E.html", true,
"<h2>Enum Constant Details</h2>\n"
+ "<ul class=\"member-list\">\n"
+ "<li>\n"
+ "<section class=\"detail\" id=\"E1\">\n");
checkOutput("p/A.html", true,
"<h2>Element Details</h2>\n"
+ "<ul class=\"member-list\">\n"
+ "<li>\n"
+ "<section class=\"detail\" id=\"value()\">");
}
}

@ -495,15 +495,15 @@ public class TestModules extends JavadocTester {
+ "<h1 title=\"Module\" class=\"title\">Module&nbsp;moduleA</h1>\n"
+ "</div>"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\">\n"
+ "<li>\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\">\n"
+ "<li>\n"
+ "<!-- ============ PACKAGES SUMMARY =========== -->");
checkOutput("moduleB/module-summary.html", found,
"<ul class=\"block-list\">\n"
+ "<li class=\"block-list\">\n"
+ "<li>\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\">\n"
+ "<li>\n"
+ "<!-- ============ PACKAGES SUMMARY =========== -->");
}
@ -550,7 +550,7 @@ public class TestModules extends JavadocTester {
+ "</div>\n"
+ "<section class=\"summary\">\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\">\n"
+ "<li>\n"
+ "<section class=\"packages-summary\" id=\"packages.summary\">\n"
+ "<!-- ============ PACKAGES SUMMARY =========== -->");
checkOutput("moduleB/module-summary.html", found,
@ -562,7 +562,7 @@ public class TestModules extends JavadocTester {
+ "</div>\n"
+ "<section class=\"summary\">\n"
+ "<ul class=\"block-list\">\n"
+ "<li class=\"block-list\">\n"
+ "<li>\n"
+ "<section class=\"packages-summary\" id=\"packages.summary\">\n"
+ "<!-- ============ PACKAGES SUMMARY =========== -->");
}

@ -149,7 +149,7 @@ public class TestUseOption extends JavadocTester {
+ "UsedInC</a> in <a href=\"../package-summary.html\">&lt;Unnamed&gt;</a>"
);
checkOutput("class-use/UsedInC.html", true,
"<li class=\"block-list\">\n"
"<li>\n"
+ "<section class=\"detail\" id=\"unnamed.package\">\n"
);
checkOutput("package-use.html", true,