8189405: More cleanup in HtmlWriter

Reviewed-by: bpatel, ksrini
This commit is contained in:
Jonathan Gibbons 2017-10-20 11:08:18 -07:00
parent 4e93f8fc9f
commit 97db013bd3
29 changed files with 456 additions and 398 deletions

View File

@ -36,6 +36,7 @@ import javax.lang.model.element.TypeParameterElement;
import javax.lang.model.type.TypeMirror;
import com.sun.source.doctree.DocTree;
import jdk.javadoc.internal.doclets.formats.html.TableHeader;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
@ -123,7 +124,7 @@ public abstract class AbstractMemberWriter {
* @param member the member to be documented
* @return the summary table header
*/
public abstract List<String> getSummaryTableHeader(Element member);
public abstract TableHeader getSummaryTableHeader(Element member);
/**
* Add inherited summary label for the member.
@ -428,8 +429,7 @@ public abstract class AbstractMemberWriter {
for (Element element : members) {
TypeElement te = utils.getEnclosingTypeElement(element);
if (!printedUseTableHeader) {
table.addContent(writer.getSummaryTableHeader(
this.getSummaryTableHeader(element), "col"));
table.addContent(getSummaryTableHeader(element).toContent());
printedUseTableHeader = true;
}
HtmlTree tr = new HtmlTree(HtmlTag.TR);

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013, 2017, 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
@ -25,14 +25,12 @@
package jdk.javadoc.internal.doclets.formats.html;
import java.util.Arrays;
import java.util.List;
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.TableHeader;
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;
@ -218,10 +216,10 @@ public class AnnotationTypeFieldWriterImpl extends AbstractMemberWriter
/**
* {@inheritDoc}
*/
public List<String> getSummaryTableHeader(Element member) {
List<String> header = Arrays.asList(writer.getModifierTypeHeader(),
resources.getText("doclet.Fields"), resources.getText("doclet.Description"));
return header;
@Override
public TableHeader getSummaryTableHeader(Element member) {
return new TableHeader(contents.modifierAndTypeLabel, contents.fields,
contents.descriptionLabel);
}
/**

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2017, 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
@ -33,6 +33,7 @@ import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.TableHeader;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
@ -131,11 +132,10 @@ public class AnnotationTypeOptionalMemberWriterImpl extends
/**
* {@inheritDoc}
*/
public List<String> getSummaryTableHeader(Element member) {
List<String> header = Arrays.asList(writer.getModifierTypeHeader(),
resources.getText("doclet.Annotation_Type_Optional_Member"),
resources.getText("doclet.Description"));
return header;
@Override
public TableHeader getSummaryTableHeader(Element member) {
return new TableHeader(contents.modifierAndTypeLabel,
contents.annotationTypeOptionalMemberLabel, contents.descriptionLabel);
}
/**

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2017, 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
@ -33,6 +33,7 @@ import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.TableHeader;
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;
@ -220,10 +221,9 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
/**
* {@inheritDoc}
*/
public List<String> getSummaryTableHeader(Element member) {
List<String> header = Arrays.asList(writer.getModifierTypeHeader(),
resources.getText("doclet.Annotation_Type_Required_Member"), resources.getText("doclet.Description"));
return header;
public TableHeader getSummaryTableHeader(Element member) {
return new TableHeader(contents.modifierAndTypeLabel,
contents.annotationTypeRequiredMemberLabel, contents.descriptionLabel);
}
/**

View File

@ -25,6 +25,7 @@
package jdk.javadoc.internal.doclets.formats.html;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@ -101,6 +102,7 @@ public class ClassUseWriter extends SubWriterHolderWriter {
final String fieldUseTableSummary;
final String methodUseTableSummary;
final String constructorUseTableSummary;
final String packageUseTableSummary;
/**
* The HTML tree for main tag.
@ -152,22 +154,27 @@ public class ClassUseWriter extends SubWriterHolderWriter {
"Internal error: package sets don't match: "
+ pkgSet + " with: " + mapper.classToPackage.get(this.typeElement));
}
methodSubWriter = new MethodWriterImpl(this);
constrSubWriter = new ConstructorWriterImpl(this);
fieldSubWriter = new FieldWriterImpl(this);
classSubWriter = new NestedClassWriterImpl(this);
classUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
configuration.getText("doclet.classes"));
subclassUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
configuration.getText("doclet.subclasses"));
subinterfaceUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
configuration.getText("doclet.subinterfaces"));
fieldUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
configuration.getText("doclet.fields"));
methodUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
configuration.getText("doclet.methods"));
constructorUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
configuration.getText("doclet.constructors"));
String useTableSummary = resources.getText("doclet.Use_Table_Summary");
classUseTableSummary = MessageFormat.format(useTableSummary,
resources.getText("doclet.classes"));
subclassUseTableSummary = MessageFormat.format(useTableSummary,
resources.getText("doclet.subclasses"));
subinterfaceUseTableSummary = MessageFormat.format(useTableSummary,
resources.getText("doclet.subinterfaces"));
fieldUseTableSummary = MessageFormat.format(useTableSummary,
resources.getText("doclet.fields"));
methodUseTableSummary = MessageFormat.format(useTableSummary,
resources.getText("doclet.methods"));
constructorUseTableSummary = MessageFormat.format(useTableSummary,
resources.getText("doclet.constructors"));
packageUseTableSummary = MessageFormat.format(useTableSummary,
resources.getText("doclet.packages"));
}
/**
@ -290,8 +297,8 @@ public class ClassUseWriter extends SubWriterHolderWriter {
LinkInfoImpl.Kind.CLASS_USE_HEADER, typeElement))));
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(HtmlStyle.useSummary, caption)
: HtmlTree.TABLE(HtmlStyle.useSummary, useTableSummary, caption);
table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
: HtmlTree.TABLE(HtmlStyle.useSummary, packageUseTableSummary, caption);
table.addContent(getPackageTableHeader().toContent());
Content tbody = new HtmlTree(HtmlTag.TBODY);
boolean altColor = true;
for (PackageElement pkg : pkgSet) {
@ -323,8 +330,8 @@ public class ClassUseWriter extends SubWriterHolderWriter {
LinkInfoImpl.Kind.CLASS_USE_HEADER, typeElement))));
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(HtmlStyle.useSummary, caption)
: HtmlTree.TABLE(HtmlStyle.useSummary, useTableSummary, caption);
table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
: HtmlTree.TABLE(HtmlStyle.useSummary, packageUseTableSummary, caption);
table.addContent(getPackageTableHeader().toContent());
Content tbody = new HtmlTree(HtmlTag.TBODY);
boolean altColor = true;
for (PackageElement pkg : pkgToPackageAnnotations) {

View File

@ -70,7 +70,7 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements Cons
private final String constantsTableSummary;
private final List<String> constantsTableHeader;
private final TableHeader constantsTableHeader;
/**
* The HTML tree for main tag.
@ -92,10 +92,8 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements Cons
this.configuration = configuration;
constantsTableSummary = configuration.getText("doclet.Constants_Table_Summary",
configuration.getText("doclet.Constants_Summary"));
constantsTableHeader = new ArrayList<>();
constantsTableHeader.add(getModifierTypeHeader());
constantsTableHeader.add(configuration.getText("doclet.ConstantField"));
constantsTableHeader.add(configuration.getText("doclet.Value"));
constantsTableHeader = new TableHeader(
contents.modifierAndTypeLabel, contents.constantFieldLabel, contents.valueLabel);
}
/**
@ -261,7 +259,7 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements Cons
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(HtmlStyle.constantsSummary, caption)
: HtmlTree.TABLE(HtmlStyle.constantsSummary, constantsTableSummary, caption);
table.addContent(getSummaryTableHeader(constantsTableHeader, "col"));
table.addContent(constantsTableHeader.toContent());
return table;
}

View File

@ -31,6 +31,7 @@ import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.TableHeader;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
@ -260,14 +261,13 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
* {@inheritDoc}
*/
@Override
public List<String> getSummaryTableHeader(Element member) {
List<String> header = new ArrayList<>();
public TableHeader getSummaryTableHeader(Element member) {
if (foundNonPubConstructor) {
header.add(resources.getText("doclet.Modifier"));
return new TableHeader(contents.modifierLabel, contents.constructorLabel,
contents.descriptionLabel);
} else {
return new TableHeader(contents.constructorLabel, contents.descriptionLabel);
}
header.add(resources.getText("doclet.Constructor"));
header.add(resources.getText("doclet.Description"));
return header;
}
/**

View File

@ -56,15 +56,20 @@ public class Contents {
public final Content allPackagesLabel;
public final Content allSuperinterfacesLabel;
public final Content also;
public final Content annotationTypeOptionalMemberLabel;
public final Content annotationTypeRequiredMemberLabel;
public final Content annotateTypeOptionalMemberSummaryLabel;
public final Content annotateTypeRequiredMemberSummaryLabel;
public final Content annotationType;
public final Content annotationTypeDetailsLabel;
public final Content annotationTypeMemberDetail;
public final Content annotationtypes;
public final Content annotationTypes;
public final Content classLabel;
public final Content classes;
public final Content constantFieldLabel;
public final Content constantsSummaryTitle;
public final Content constructorLabel;
public final Content constructorDetailsLabel;
public final Content constructorSummaryLabel;
public final Content constructors;
@ -81,16 +86,21 @@ public class Contents {
public final Content detailLabel;
public final Content enclosingClassLabel;
public final Content enclosingInterfaceLabel;
public final Content enumConstantLabel;
public final Content enumConstantDetailLabel;
public final Content enumConstantSummary;
public final Content enum_;
public final Content enums;
public final Content error;
public final Content errors;
public final Content exception;
public final Content exceptions;
public final Content fieldLabel;
public final Content fieldDetailsLabel;
public final Content fieldSummaryLabel;
public final Content fields;
public final Content framesLabel;
public final Content fromLabel;
public final Content functionalInterface;
public final Content functionalInterfaceMessage;
public final Content helpLabel;
@ -100,11 +110,15 @@ public class Contents {
public final Content inClass;
public final Content inInterface;
public final Content indexLabel;
public final Content interfaceLabel;
public final Content interfaces;
public final Content interfacesItalic;
public final Content methodDetailLabel;
public final Content methodLabel;
public final Content methodSummary;
public final Content methods;
public final Content modifierAndTypeLabel;
public final Content modifierLabel;
public final Content moduleLabel;
public final Content module_;
public final Content moduleSubNavLabel;
@ -143,6 +157,7 @@ public class Contents {
public final Content prevModuleLabel;
public final Content prevPackageLabel;
public final Content properties;
public final Content propertyLabel;
public final Content propertyDetailsLabel;
public final Content propertySummary;
public final Content seeLabel;
@ -152,7 +167,9 @@ public class Contents {
public final Content subinterfacesLabel;
public final Content summaryLabel;
public final Content treeLabel;
public final Content typeLabel;
public final Content useLabel;
public final Content valueLabel;
private final Resources resources;
@ -171,15 +188,20 @@ public class Contents {
allPackagesLabel = getNonBreakContent("doclet.All_Packages");
allSuperinterfacesLabel = getContent("doclet.All_Superinterfaces");
also = getContent("doclet.also");
annotationTypeOptionalMemberLabel = getContent("doclet.Annotation_Type_Optional_Member");
annotationTypeRequiredMemberLabel = getContent("doclet.Annotation_Type_Required_Member");
annotateTypeOptionalMemberSummaryLabel = getContent("doclet.Annotation_Type_Optional_Member_Summary");
annotateTypeRequiredMemberSummaryLabel = getContent("doclet.Annotation_Type_Required_Member_Summary");
annotationType = getContent("doclet.AnnotationType");
annotationTypeDetailsLabel = getContent("doclet.Annotation_Type_Member_Detail");
annotationTypeMemberDetail = getContent("doclet.Annotation_Type_Member_Detail");
annotationTypes = getContent("doclet.AnnotationTypes");
annotationtypes = getContent("doclet.annotationtypes");
classLabel = getContent("doclet.Class");
classes = getContent("doclet.Classes");
constantFieldLabel = getContent("doclet.ConstantField");
constantsSummaryTitle = getContent("doclet.Constants_Summary");
constructorLabel = getContent("doclet.Constructor");
constructorDetailsLabel = getContent("doclet.Constructor_Detail");
constructorSummaryLabel = getContent("doclet.Constructor_Summary");
constructors = getContent("doclet.Constructors");
@ -196,16 +218,21 @@ public class Contents {
detailLabel = getContent("doclet.Detail");
enclosingClassLabel = getContent("doclet.Enclosing_Class");
enclosingInterfaceLabel = getContent("doclet.Enclosing_Interface");
enumConstantLabel = getContent("doclet.Enum_Constant");
enumConstantDetailLabel = getContent("doclet.Enum_Constant_Detail");
enumConstantSummary = getContent("doclet.Enum_Constant_Summary");
enum_ = getContent("doclet.Enum");
enums = getContent("doclet.Enums");
error = getContent("doclet.Error");
errors = getContent("doclet.Errors");
exception = getContent("doclet.Exception");
exceptions = getContent("doclet.Exceptions");
fieldDetailsLabel = getContent("doclet.Field_Detail");
fieldSummaryLabel = getContent("doclet.Field_Summary");
fieldLabel = getContent("doclet.Field");
fields = getContent("doclet.Fields");
framesLabel = getContent("doclet.Frames");
fromLabel = getContent("doclet.From");
functionalInterface = getContent("doclet.Functional_Interface");
functionalInterfaceMessage = getContent("doclet.Functional_Interface_Message");
helpLabel = getContent("doclet.Help");
@ -215,11 +242,15 @@ public class Contents {
inClass = getContent("doclet.in_class");
inInterface = getContent("doclet.in_interface");
indexLabel = getContent("doclet.Index");
interfaceLabel = getContent("doclet.Interface");
interfaces = getContent("doclet.Interfaces");
interfacesItalic = getContent("doclet.Interfaces_Italic");
methodDetailLabel = getContent("doclet.Method_Detail");
methodSummary = getContent("doclet.Method_Summary");
methodLabel = getContent("doclet.Method");
methods = getContent("doclet.Methods");
modifierLabel = getContent("doclet.Modifier");
modifierAndTypeLabel = getContent("doclet.Modifier_and_Type");
moduleLabel = getContent("doclet.Module");
module_ = getContent("doclet.module");
moduleSubNavLabel = getContent("doclet.Module_Sub_Nav");
@ -258,6 +289,7 @@ public class Contents {
prevModuleLabel = getNonBreakContent("doclet.Prev_Module");
prevPackageLabel = getNonBreakContent("doclet.Prev_Package");
properties = getContent("doclet.Properties");
propertyLabel = getContent("doclet.Property");
propertyDetailsLabel = getContent("doclet.Property_Detail");
propertySummary = getContent("doclet.Property_Summary");
seeLabel = getContent("doclet.See");
@ -267,7 +299,9 @@ public class Contents {
subinterfacesLabel = getContent("doclet.Subinterfaces");
summaryLabel = getContent("doclet.Summary");
treeLabel = getContent("doclet.Tree");
typeLabel = getContent("doclet.Type");
useLabel = getContent("doclet.navClassUse");
valueLabel = getContent("doclet.Value");
}
/**
@ -286,7 +320,6 @@ public class Contents {
* a given key in the doclet's resources, formatted with
* given arguments.
*
* @param key the key to look for in the configuration fil
* @param key the key for the desired string
* @param o0 string or content argument to be formatted into the result
* @return a content tree for the text

View File

@ -25,7 +25,6 @@
package jdk.javadoc.internal.doclets.formats.html;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.SortedSet;
@ -286,13 +285,11 @@ public class DeprecatedListWriter extends SubWriterHolderWriter {
for (DeprElementKind kind : DeprElementKind.values()) {
if (deprapi.hasDocumentation(kind)) {
addAnchor(deprapi, kind, div);
memberTableSummary
= resources.getText("doclet.Member_Table_Summary",
resources.getText(getHeadingKey(kind)),
resources.getText(getSummaryKey(kind)));
List<String> memberTableHeader = new ArrayList<>();
memberTableHeader.add(resources.getText(getHeaderKey(kind)));
memberTableHeader.add(resources.getText("doclet.Description"));
memberTableSummary = resources.getText("doclet.Member_Table_Summary",
resources.getText(getHeadingKey(kind)),
resources.getText(getSummaryKey(kind)));
TableHeader memberTableHeader = new TableHeader(
contents.getContent(getHeaderKey(kind)), contents.descriptionLabel);
addDeprecatedAPI(deprapi.getSet(kind),
getHeadingKey(kind), memberTableSummary, memberTableHeader, div);
}
@ -405,13 +402,13 @@ public class DeprecatedListWriter extends SubWriterHolderWriter {
* @param contentTree the content tree to which the deprecated table will be added
*/
protected void addDeprecatedAPI(SortedSet<Element> deprList, String headingKey,
String tableSummary, List<String> tableHeader, Content contentTree) {
String tableSummary, TableHeader tableHeader, Content contentTree) {
if (deprList.size() > 0) {
Content caption = getTableCaption(configuration.getContent(headingKey));
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(HtmlStyle.deprecatedSummary, caption)
: HtmlTree.TABLE(HtmlStyle.deprecatedSummary, tableSummary, caption);
table.addContent(getSummaryTableHeader(tableHeader, "col"));
table.addContent(tableHeader.toContent());
Content tbody = new HtmlTree(HtmlTag.TBODY);
boolean altColor = true;
for (Element e : deprList) {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2017, 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
@ -33,6 +33,7 @@ import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
import jdk.javadoc.internal.doclets.formats.html.TableHeader;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
@ -213,10 +214,8 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
* {@inheritDoc}
*/
@Override
public List<String> getSummaryTableHeader(Element member) {
List<String> header = Arrays.asList(resources.getText("doclet.Enum_Constant"),
resources.getText("doclet.Description"));
return header;
public TableHeader getSummaryTableHeader(Element member) {
return new TableHeader(contents.enumConstantLabel, contents.descriptionLabel);
}
/**

View File

@ -25,13 +25,11 @@
package jdk.javadoc.internal.doclets.formats.html;
import java.util.Arrays;
import java.util.List;
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
import jdk.javadoc.internal.doclets.formats.html.TableHeader;
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;
@ -212,10 +210,9 @@ public class FieldWriterImpl extends AbstractMemberWriter
* {@inheritDoc}
*/
@Override
public List<String> getSummaryTableHeader(Element member) {
List<String> header = Arrays.asList(writer.getModifierTypeHeader(),
resources.getText("doclet.Field"), resources.getText("doclet.Description"));
return header;
public TableHeader getSummaryTableHeader(Element member) {
return new TableHeader(contents.modifierAndTypeLabel, contents.fieldLabel,
contents.descriptionLabel);
}
/**

View File

@ -75,12 +75,10 @@ import jdk.javadoc.internal.doclets.formats.html.markup.HtmlDocument;
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.formats.html.markup.HtmlVersion;
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeWriter;
import jdk.javadoc.internal.doclets.toolkit.ClassWriter;
import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.Messages;
import jdk.javadoc.internal.doclets.toolkit.PackageSummaryWriter;
@ -390,46 +388,6 @@ public class HtmlDocletWriter extends HtmlDocWriter {
DocPaths.moduleSummary(mdle)), label, "", target);
}
public void addClassesSummary(SortedSet<TypeElement> classes, String label,
String tableSummary, List<String> tableHeader, Content summaryContentTree) {
if (!classes.isEmpty()) {
Content caption = getTableCaption(new RawHtml(label));
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(HtmlStyle.typeSummary, caption)
: HtmlTree.TABLE(HtmlStyle.typeSummary, tableSummary, caption);
table.addContent(getSummaryTableHeader(tableHeader, "col"));
Content tbody = new HtmlTree(HtmlTag.TBODY);
boolean altColor = true;
for (TypeElement te : classes) {
if (!utils.isCoreClass(te) ||
!configuration.isGeneratedDoc(te)) {
continue;
}
Content classContent = getLink(new LinkInfoImpl(
configuration, LinkInfoImpl.Kind.PACKAGE, te));
Content tdClass = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, classContent);
HtmlTree tr = HtmlTree.TR(tdClass);
tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor);
altColor = !altColor;
HtmlTree tdClassDescription = new HtmlTree(HtmlTag.TD);
tdClassDescription.addStyle(HtmlStyle.colLast);
if (utils.isDeprecated(te)) {
tdClassDescription.addContent(getDeprecatedPhrase(te));
List<? extends DocTree> tags = utils.getDeprecatedTrees(te);
if (!tags.isEmpty()) {
addSummaryDeprecatedComment(te, tags.get(0), tdClassDescription);
}
} else {
addSummaryComment(te, tdClassDescription);
}
tr.addContent(tdClassDescription);
tbody.addContent(tr);
}
table.addContent(tbody);
summaryContentTree.addContent(table);
}
}
/**
* Generates the HTML document tree and prints it out.
*
@ -938,42 +896,10 @@ public class HtmlDocletWriter extends HtmlDocWriter {
liNav.addContent(Contents.SPACE);
}
/**
* Get summary table header.
*
* @param header the header for the table
* @param scope the scope of the headers
* @return a content tree for the header
*/
public Content getSummaryTableHeader(List<String> header, String scope) {
Content tr = new HtmlTree(HtmlTag.TR);
final int size = header.size();
Content tableHeader;
if (size == 2) {
tableHeader = new StringContent(header.get(0));
tr.addContent(HtmlTree.TH(HtmlStyle.colFirst, scope, tableHeader));
tableHeader = new StringContent(header.get(1));
tr.addContent(HtmlTree.TH(HtmlStyle.colLast, scope, tableHeader));
return tr;
}
for (int i = 0; i < size; i++) {
tableHeader = new StringContent(header.get(i));
if (i == 0)
tr.addContent(HtmlTree.TH(HtmlStyle.colFirst, scope, tableHeader));
else if (i == 1)
tr.addContent(HtmlTree.TH(HtmlStyle.colSecond, scope, tableHeader));
else if (i == (size - 1))
tr.addContent(HtmlTree.TH(HtmlStyle.colLast, scope, tableHeader));
else
tr.addContent(HtmlTree.TH(scope, tableHeader));
}
return tr;
}
/**
* Get table caption.
*
* @param rawText the caption for the table which could be raw Html
* @param title the content for the caption
* @return a content tree for the caption
*/
public Content getTableCaption(Content title) {
@ -2615,13 +2541,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
}.visit(annotationValue);
}
/**
* Return the configuration for this doclet.
*
* @return the configuration for this doclet.
*/
@Override
public BaseConfiguration configuration() {
return configuration;
protected TableHeader getPackageTableHeader() {
return new TableHeader(contents.packageLabel, contents.descriptionLabel);
}
}

View File

@ -29,7 +29,6 @@ import jdk.javadoc.internal.doclets.formats.html.markup.Comment;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
import jdk.javadoc.internal.doclets.formats.html.markup.DocType;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlDocument;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;

View File

@ -35,6 +35,7 @@ import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.TableHeader;
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;
@ -259,10 +260,9 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
* {@inheritDoc}
*/
@Override
public List<String> getSummaryTableHeader(Element member) {
List<String> header = Arrays.asList(writer.getModifierTypeHeader(),
resources.getText("doclet.Method"), resources.getText("doclet.Description"));
return header;
public TableHeader getSummaryTableHeader(Element member) {
return new TableHeader(contents.modifierAndTypeLabel, contents.methodLabel,
contents.descriptionLabel);
}
/**

View File

@ -30,7 +30,6 @@ import java.util.*;
import javax.lang.model.element.ModuleElement;
import javax.lang.model.element.PackageElement;
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;
@ -145,7 +144,8 @@ public class ModuleIndexWriter extends AbstractModuleIndexWriter {
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(HtmlStyle.overviewSummary, getTableCaption(new RawHtml(text)))
: HtmlTree.TABLE(HtmlStyle.overviewSummary, tableSummary, getTableCaption(new RawHtml(text)));
table.addContent(getSummaryTableHeader(moduleTableHeader, "col"));
Content header = new TableHeader(contents.moduleLabel, contents.descriptionLabel).toContent();
table.addContent(header);
Content tbody = new HtmlTree(HtmlTag.TBODY);
addModulesList(modules, tbody);
table.addContent(tbody);

View File

@ -457,14 +457,15 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
* @param heading the heading for the section
* @param htmltree the content tree to which the information is added
*/
public void addSummaryHeader(Content startMarker, SectionName markerAnchor, Content heading, Content htmltree) {
public void addSummaryHeader(Content startMarker, SectionName markerAnchor, Content heading,
Content htmltree) {
htmltree.addContent(startMarker);
htmltree.addContent(getMarkerAnchor(markerAnchor));
htmltree.addContent(HtmlTree.HEADING(HtmlTag.H3, heading));
}
/**
* Get table header.
* Get a table.
*
* @param text the table caption
* @param tableSummary the summary for the table
@ -472,13 +473,13 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
* @param tableHeader the table header
* @return a content object
*/
public Content getTableHeader(String text, String tableSummary, HtmlStyle tableStyle,
List<String> tableHeader) {
return getTableHeader(getTableCaption(new RawHtml(text)), tableSummary, tableStyle, tableHeader);
Content getTable(String text, String tableSummary, HtmlStyle tableStyle,
TableHeader tableHeader) {
return getTable(getTableCaption(new RawHtml(text)), tableSummary, tableStyle, tableHeader);
}
/**
* Get table header.
* Get a table.
*
* @param caption the table caption
* @param tableSummary the summary for the table
@ -486,20 +487,24 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
* @param tableHeader the table header
* @return a content object
*/
public Content getTableHeader(Content caption, String tableSummary, HtmlStyle tableStyle,
List<String> tableHeader) {
Content getTable(Content caption, String tableSummary, HtmlStyle tableStyle,
TableHeader tableHeader) {
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(tableStyle, caption)
: HtmlTree.TABLE(tableStyle, tableSummary, caption);
table.addContent(getSummaryTableHeader(tableHeader, "col"));
table.addContent(tableHeader.toContent());
return table;
}
/**
* {@inheritDoc}
*/
@Override
public void addModulesSummary(Content summaryContentTree) {
if (display(requires) || display(indirectModules)) {
TableHeader requiresTableHeader =
new TableHeader(contents.modifierLabel, contents.moduleLabel,
contents.descriptionLabel);
HtmlTree li = new HtmlTree(HtmlTag.LI);
li.addStyle(HtmlStyle.blockList);
addSummaryHeader(HtmlConstants.START_OF_MODULES_SUMMARY, SectionName.MODULES,
@ -507,9 +512,10 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
if (display(requires)) {
String text = configuration.getText("doclet.Requires_Summary");
String tableSummary = configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Requires_Summary"),
text,
configuration.getText("doclet.modules"));
Content table = getTableHeader(text, tableSummary, HtmlStyle.requiresSummary, requiresTableHeader);
Content table = getTable(text, tableSummary, HtmlStyle.requiresSummary,
requiresTableHeader);
Content tbody = new HtmlTree(HtmlTag.TBODY);
addModulesList(requires, tbody);
table.addContent(tbody);
@ -519,9 +525,10 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
if (display(indirectModules)) {
String amrText = configuration.getText("doclet.Indirect_Requires_Summary");
String amrTableSummary = configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Indirect_Requires_Summary"),
amrText,
configuration.getText("doclet.modules"));
Content amrTable = getTableHeader(amrText, amrTableSummary, HtmlStyle.requiresSummary, requiresTableHeader);
Content amrTable = getTable(amrText, amrTableSummary, HtmlStyle.requiresSummary,
requiresTableHeader);
Content amrTbody = new HtmlTree(HtmlTag.TBODY);
addModulesList(indirectModules, amrTbody);
amrTable.addContent(amrTbody);
@ -556,6 +563,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
}
}
@Override
public void addPackagesSummary(Content summaryContentTree) {
if (display(exportedPackages) || display(openedPackages) || display(concealedPackages)
|| display(indirectPackages) || display(indirectOpenPackages)) {
@ -569,14 +577,16 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
if (display(exportedPackages) || display(openedPackages) || display(concealedPackages)) {
addPackageSummary(tableSummary, li);
}
TableHeader indirectPackagesHeader =
new TableHeader(contents.fromLabel, contents.packagesLabel);
if (display(indirectPackages)) {
String aepText = configuration.getText("doclet.Indirect_Exports_Summary");
String aepTableSummary = configuration.getText("doclet.Indirect_Packages_Table_Summary",
configuration.getText("doclet.Indirect_Exports_Summary"),
aepText,
configuration.getText("doclet.modules"),
configuration.getText("doclet.packages"));
Content aepTable = getTableHeader(aepText, aepTableSummary, HtmlStyle.packagesSummary,
indirectPackagesTableHeader);
Content aepTable = getTable(aepText, aepTableSummary, HtmlStyle.packagesSummary,
indirectPackagesHeader);
Content aepTbody = new HtmlTree(HtmlTag.TBODY);
addIndirectPackages(aepTbody, indirectPackages);
aepTable.addContent(aepTbody);
@ -585,11 +595,11 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
if (display(indirectOpenPackages)) {
String aopText = configuration.getText("doclet.Indirect_Opens_Summary");
String aopTableSummary = configuration.getText("doclet.Indirect_Packages_Table_Summary",
configuration.getText("doclet.Indirect_Opens_Summary"),
aopText,
configuration.getText("doclet.modules"),
configuration.getText("doclet.packages"));
Content aopTable = getTableHeader(aopText, aopTableSummary, HtmlStyle.packagesSummary,
indirectPackagesTableHeader);
Content aopTable = getTable(aopText, aopTableSummary, HtmlStyle.packagesSummary,
indirectPackagesHeader);
Content aopTbody = new HtmlTree(HtmlTag.TBODY);
addIndirectPackages(aopTbody, indirectOpenPackages);
aopTable.addContent(aopTbody);
@ -616,7 +626,10 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
ModulePackageTypes type = modulePackageTypes.iterator().next();
caption = getTableCaption(configuration.getContent(type.tableTabs().resourceKey()));
}
Content table = getTableHeader(caption, tableSummary, HtmlStyle.packagesSummary, exportedPackagesTableHeader);
TableHeader header = (configuration.docEnv.getModuleMode() == ModuleMode.ALL)
? new TableHeader(contents.packageLabel, contents.moduleLabel, contents.descriptionLabel)
: new TableHeader(contents.packageLabel, contents.descriptionLabel);
Content table = getTable(caption, tableSummary, HtmlStyle.packagesSummary, header);
table.addContent(tbody);
li.addContent(table);
}
@ -698,20 +711,20 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
HtmlTree tdModules = new HtmlTree(HtmlTag.TD);
tdModules.addStyle(HtmlStyle.colSecond);
tdModules.addContent(configuration.getText("doclet.None"));
HtmlTree tdSummary = new HtmlTree(HtmlTag.TD);
tdSummary.addStyle(HtmlStyle.colLast);
HtmlTree tdSummary = new HtmlTree(HtmlTag.TD);
tdSummary.addStyle(HtmlStyle.colLast);
addSummaryComment(pkg, tdSummary);
HtmlTree tr = HtmlTree.TR(thPackage);
HtmlTree tr = HtmlTree.TR(thPackage);
tr.addContent(tdModules);
tr.addContent(tdSummary);
tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor);
tr.addContent(tdSummary);
tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor);
int pkgType = ModulePackageTypes.CONCEALED.tableTabs().value();
packageTypesOr = packageTypesOr | pkgType;
String tableId = "i" + counter;
counter++;
typeMap.put(tableId, pkgType);
tr.addAttr(HtmlAttr.ID, tableId);
tbody.addContent(tr);
tbody.addContent(tr);
altColor = !altColor;
}
}
@ -793,6 +806,7 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
/**
* {@inheritDoc}
*/
@Override
public void addServicesSummary(Content summaryContentTree) {
boolean haveUses = displayServices(uses, usesTrees);
@ -803,14 +817,14 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
li.addStyle(HtmlStyle.blockList);
addSummaryHeader(HtmlConstants.START_OF_SERVICES_SUMMARY, SectionName.SERVICES,
contents.navServices, li);
String text;
String tableSummary;
TableHeader usesProvidesTableHeader =
new TableHeader(contents.typeLabel, contents.descriptionLabel);
if (haveProvides) {
text = configuration.getText("doclet.Provides_Summary");
tableSummary = configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Provides_Summary"),
configuration.getText("doclet.types"));
Content table = getTableHeader(text, tableSummary, HtmlStyle.providesSummary, providesTableHeader);
String label = resources.getText("doclet.Provides_Summary");
String tableSummary = resources.getText("doclet.Member_Table_Summary",
label, resources.getText("doclet.types"));
Content table = getTable(label, tableSummary, HtmlStyle.providesSummary,
usesProvidesTableHeader);
Content tbody = new HtmlTree(HtmlTag.TBODY);
addProvidesList(tbody);
if (!tbody.isEmpty()) {
@ -819,11 +833,11 @@ public class ModuleWriterImpl extends HtmlDocletWriter implements ModuleSummaryW
}
}
if (haveUses){
text = configuration.getText("doclet.Uses_Summary");
tableSummary = configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Uses_Summary"),
configuration.getText("doclet.types"));
Content table = getTableHeader(text, tableSummary, HtmlStyle.usesSummary, usesTableHeader);
String label = resources.getText("doclet.Uses_Summary");
String tableSummary = resources.getText("doclet.Member_Table_Summary",
label, resources.getText("doclet.types"));
Content table = getTable(label, tableSummary, HtmlStyle.usesSummary,
usesProvidesTableHeader);
Content tbody = new HtmlTree(HtmlTag.TBODY);
addUsesList(tbody);
if (!tbody.isEmpty()) {

View File

@ -25,12 +25,10 @@
package jdk.javadoc.internal.doclets.formats.html;
import java.util.Arrays;
import java.util.List;
import javax.lang.model.element.Element;
import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.TableHeader;
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.HtmlTree;
@ -77,6 +75,7 @@ public class NestedClassWriterImpl extends AbstractMemberWriter
/**
* {@inheritDoc}
*/
@Override
public void addMemberTree(Content memberSummaryTree, Content memberTree) {
writer.addMemberTree(memberSummaryTree, memberTree);
}
@ -113,14 +112,14 @@ public class NestedClassWriterImpl extends AbstractMemberWriter
* {@inheritDoc}
*/
@Override
public List<String> getSummaryTableHeader(Element member) {
public TableHeader getSummaryTableHeader(Element member) {
if (utils.isInterface(member)) {
return Arrays.asList(writer.getModifierTypeHeader(),
resources.getText("doclet.Interface"), resources.getText("doclet.Description"));
return new TableHeader(contents.modifierAndTypeLabel, contents.interfaceLabel,
contents.descriptionLabel);
} else {
return Arrays.asList(writer.getModifierTypeHeader(),
resources.getText("doclet.Class"), resources.getText("doclet.Description"));
return new TableHeader(contents.modifierAndTypeLabel, contents.classLabel,
contents.descriptionLabel);
}
}

View File

@ -128,7 +128,7 @@ public class PackageIndexWriter extends AbstractPackageIndexWriter {
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(HtmlStyle.overviewSummary, getTableCaption(new RawHtml(text)))
: HtmlTree.TABLE(HtmlStyle.overviewSummary, tableSummary, getTableCaption(new RawHtml(text)));
table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
table.addContent(getPackageTableHeader().toContent());
Content tbody = new HtmlTree(HtmlTag.TBODY);
addPackagesList(packages, tbody);
table.addContent(tbody);

View File

@ -58,11 +58,15 @@ public class PackageUseWriter extends SubWriterHolderWriter {
final PackageElement packageElement;
final SortedMap<String, Set<TypeElement>> usingPackageToUsedClasses = new TreeMap<>();
protected HtmlTree mainTree = HtmlTree.MAIN();
final String packageUseTableSummary;
/**
* Constructor.
*
* @param filename the file to be generated.
* @param configuration the configuration
* @param mapper a mapper to provide details of where elements are used
* @param filename the file to be generated
* @param pkgElement the package element to be documented
*/
public PackageUseWriter(HtmlConfiguration configuration,
ClassUseMapper mapper, DocPath filename,
@ -89,6 +93,9 @@ public class PackageUseWriter extends SubWriterHolderWriter {
}
}
}
packageUseTableSummary = resources.getText("doclet.Use_Table_Summary",
resources.getText("doclet.packages"));
}
/**
@ -163,8 +170,8 @@ public class PackageUseWriter extends SubWriterHolderWriter {
getPackageLink(packageElement, utils.getPackageName(packageElement))));
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(HtmlStyle.useSummary, caption)
: HtmlTree.TABLE(HtmlStyle.useSummary, useTableSummary, caption);
table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
: HtmlTree.TABLE(HtmlStyle.useSummary, packageUseTableSummary, caption);
table.addContent(getPackageTableHeader().toContent());
Content tbody = new HtmlTree(HtmlTag.TBODY);
boolean altColor = true;
for (String pkgname: usingPackageToUsedClasses.keySet()) {
@ -186,8 +193,8 @@ public class PackageUseWriter extends SubWriterHolderWriter {
* @param contentTree the content tree to which the class list will be added
*/
protected void addClassList(Content contentTree) {
List<String> classTableHeader = Arrays.asList(
resources.getText("doclet.Class"), resources.getText("doclet.Description"));
TableHeader classTableHeader = new TableHeader(
contents.classLabel, contents.descriptionLabel);
for (String packageName : usingPackageToUsedClasses.keySet()) {
PackageElement usingPackage = utils.elementUtils.getPackageElement(packageName);
HtmlTree li = new HtmlTree(HtmlTag.LI);
@ -204,7 +211,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(HtmlStyle.useSummary, caption)
: HtmlTree.TABLE(HtmlStyle.useSummary, tableSummary, caption);
table.addContent(getSummaryTableHeader(classTableHeader, "col"));
table.addContent(classTableHeader.toContent());
Content tbody = new HtmlTree(HtmlTag.TBODY);
boolean altColor = true;
for (TypeElement te : usingPackageToUsedClasses.get(packageName)) {

View File

@ -198,14 +198,97 @@ public class PackageWriterImpl extends HtmlDocletWriter
* {@inheritDoc}
*/
@Override
public void addInterfaceSummary(SortedSet<TypeElement> interfaces, Content summaryContentTree) {
String label = resources.getText("doclet.Interface_Summary");
String tableSummary = resources.getText("doclet.Member_Table_Summary",
resources.getText("doclet.Interface_Summary"),
resources.getText("doclet.interfaces"));
TableHeader tableHeader= new TableHeader(contents.interfaceLabel, contents.descriptionLabel);
addClassesSummary(interfaces, label, tableSummary, tableHeader, summaryContentTree);
}
/**
* {@inheritDoc}
*/
@Override
public void addClassSummary(SortedSet<TypeElement> classes, Content summaryContentTree) {
String label = resources.getText("doclet.Class_Summary");
String tableSummary = resources.getText("doclet.Member_Table_Summary",
resources.getText("doclet.Class_Summary"),
resources.getText("doclet.classes"));
TableHeader tableHeader= new TableHeader(contents.classLabel, contents.descriptionLabel);
addClassesSummary(classes, label, tableSummary, tableHeader, summaryContentTree);
}
/**
* {@inheritDoc}
*/
@Override
public void addEnumSummary(SortedSet<TypeElement> enums, Content summaryContentTree) {
String label = resources.getText("doclet.Enum_Summary");
String tableSummary = resources.getText("doclet.Member_Table_Summary",
resources.getText("doclet.Enum_Summary"),
resources.getText("doclet.enums"));
TableHeader tableHeader= new TableHeader(contents.enum_, contents.descriptionLabel);
addClassesSummary(enums, label, tableSummary, tableHeader, summaryContentTree);
}
/**
* {@inheritDoc}
*/
@Override
public void addExceptionSummary(SortedSet<TypeElement> exceptions, Content summaryContentTree) {
String label = resources.getText("doclet.Exception_Summary");
String tableSummary = resources.getText("doclet.Member_Table_Summary",
resources.getText("doclet.Exception_Summary"),
resources.getText("doclet.exceptions"));
TableHeader tableHeader= new TableHeader(contents.exception, contents.descriptionLabel);
addClassesSummary(exceptions, label, tableSummary, tableHeader, summaryContentTree);
}
/**
* {@inheritDoc}
*/
@Override
public void addErrorSummary(SortedSet<TypeElement> errors, Content summaryContentTree) {
String label = resources.getText("doclet.Error_Summary");
String tableSummary = resources.getText("doclet.Member_Table_Summary",
resources.getText("doclet.Error_Summary"),
resources.getText("doclet.errors"));
TableHeader tableHeader= new TableHeader(contents.error, contents.descriptionLabel);
addClassesSummary(errors, label, tableSummary, tableHeader, summaryContentTree);
}
/**
* {@inheritDoc}
*/
@Override
public void addAnnotationTypeSummary(SortedSet<TypeElement> annoTypes, Content summaryContentTree) {
String label = resources.getText("doclet.Annotation_Types_Summary");
String tableSummary = resources.getText("doclet.Member_Table_Summary",
resources.getText("doclet.Annotation_Types_Summary"),
resources.getText("doclet.annotationtypes"));
TableHeader tableHeader= new TableHeader(contents.annotationType, contents.descriptionLabel);
addClassesSummary(annoTypes, label, tableSummary, tableHeader, summaryContentTree);
}
/**
* {@inheritDoc}
*/
public void addClassesSummary(SortedSet<TypeElement> classes, String label,
String tableSummary, List<String> tableHeader, Content summaryContentTree) {
String tableSummary, TableHeader tableHeader, Content summaryContentTree) {
if(!classes.isEmpty()) {
Content caption = getTableCaption(new RawHtml(label));
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(HtmlStyle.typeSummary, caption)
: HtmlTree.TABLE(HtmlStyle.typeSummary, tableSummary, caption);
table.addContent(getSummaryTableHeader(tableHeader, "col"));
table.addContent(tableHeader.toContent());
Content tbody = new HtmlTree(HtmlTag.TBODY);
boolean altColor = false;
for (TypeElement klass : classes) {

View File

@ -25,13 +25,12 @@
package jdk.javadoc.internal.doclets.formats.html;
import java.util.Arrays;
import java.util.List;
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.TableHeader;
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;
@ -66,8 +65,7 @@ public class PropertyWriterImpl extends AbstractMemberWriter
* {@inheritDoc}
*/
@Override
public Content getMemberSummaryHeader(TypeElement typeElement,
Content memberSummaryTree) {
public Content getMemberSummaryHeader(TypeElement typeElement, Content memberSummaryTree) {
memberSummaryTree.addContent(HtmlConstants.START_OF_PROPERTY_SUMMARY);
Content memberTree = writer.getMemberTreeHeader();
writer.addSummaryHeader(this, typeElement, memberTree);
@ -82,6 +80,7 @@ public class PropertyWriterImpl extends AbstractMemberWriter
/**
* {@inheritDoc}
*/
@Override
public void addMemberTree(Content memberSummaryTree, Content memberTree) {
writer.addMemberTree(memberSummaryTree, memberTree);
}
@ -237,10 +236,9 @@ public class PropertyWriterImpl extends AbstractMemberWriter
* {@inheritDoc}
*/
@Override
public List<String> getSummaryTableHeader(Element member) {
List<String> header = Arrays.asList(resources.getText("doclet.Type"),
resources.getText("doclet.Property"), resources.getText("doclet.Description"));
return header;
public TableHeader getSummaryTableHeader(Element member) {
return new TableHeader(contents.typeLabel, contents.propertyLabel,
contents.descriptionLabel);
}
/**

View File

@ -25,7 +25,6 @@
package jdk.javadoc.internal.doclets.formats.html;
import java.io.*;
import java.util.*;
import javax.lang.model.element.Element;
@ -105,7 +104,7 @@ public abstract class SubWriterHolderWriter extends HtmlDocletWriter {
Content table = (configuration.isOutputHtml5())
? HtmlTree.TABLE(HtmlStyle.memberSummary, caption)
: HtmlTree.TABLE(HtmlStyle.memberSummary, mw.getTableSummary(), caption);
table.addContent(getSummaryTableHeader(mw.getSummaryTableHeader(typeElement), "col"));
table.addContent(mw.getSummaryTableHeader(typeElement).toContent());
for (Content tableContent : tableContents) {
table.addContent(tableContent);
}
@ -356,6 +355,7 @@ public abstract class SubWriterHolderWriter extends HtmlDocletWriter {
*
* @param style the style class to be added to the content tree
* @param contentTree the tree used to generate the complete member tree
* @return the member tree
*/
public Content getMemberTree(HtmlStyle style, Content contentTree) {
Content div = HtmlTree.DIV(style, getMemberTree(contentTree));

View File

@ -0,0 +1,112 @@
/*
* Copyright (c) 2017, 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.formats.html;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
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;
/**
* A row header for an HTML table.
*
* The header contains a list of {@code <th>} cells, providing the column headers.
* The attribute {@code scope="col"} is automatically added to each header cell.
* In addition, a series of style class names can be specified, to be applied one per cell.
*
*/
public class TableHeader {
/**
* The content to be put in each of the {@code <th>} cells in the header row.
*/
private final List<Content> cellContents;
/**
* The style class names for each of the {@code <th>} cells in the header row.
* If not set, default style names will be used.
*/
private List<HtmlStyle> styles;
/**
* Creates a header row, with localized content for each cell.
* Resources keys will be converted to content using {@link Contents#getContent(String)}.
* @param contents a factory to get the content for each header cell.
* @param colHeaderKeys the resource keys for the content in each cell.
*/
TableHeader(Contents contents, String... colHeaderKeys) {
this.cellContents = Arrays.stream(colHeaderKeys)
.map((key) -> contents.getContent(key))
.collect(Collectors.toList());
}
/**
* Creates a header row, with specified content for each cell.
* @param headerCellContents a content object for each header cell
*/
TableHeader(Content... headerCellContents) {
this.cellContents = Arrays.asList(headerCellContents);
}
/**
* Set the style class names for each header cell.
* The number of names must match the number of cells given to the constructor.
* @param styles the style class names
* @return this object
*/
TableHeader styles(HtmlStyle... styles) {
if (styles.length != cellContents.size()) {
throw new IllegalStateException();
}
this.styles = Arrays.asList(styles);
return this;
}
/**
* Converts this header to a {@link Content} object, for use in an {@link HtmlTree}.
* @returns a Content object
*/
Content toContent() {
String scope = "col";
Content tr = new HtmlTree(HtmlTag.TR);
int i = 0;
for (Content cellContent : cellContents) {
HtmlStyle style = (styles != null) ? styles.get(i)
: (i == 0) ? HtmlStyle.colFirst
: (i == (cellContents.size() - 1)) ? HtmlStyle.colLast
: (i == 1) ? HtmlStyle.colSecond : null;
Content cell = (style == null) ? HtmlTree.TH(scope, cellContent)
: HtmlTree.TH(style, scope, cellContent);
tr.addContent(cell);
i++;
}
return tr;
}
}

View File

@ -33,7 +33,6 @@ import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration;
import jdk.javadoc.internal.doclets.formats.html.SectionName;
import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.Messages;
import jdk.javadoc.internal.doclets.toolkit.util.DocFile;
@ -78,14 +77,6 @@ public abstract class HtmlDocWriter extends HtmlWriter {
DocFile.createFileForOutput(configuration, filename).getPath());
}
/**
* Accessor for configuration.
* @return the configuration for this doclet
*/
public BaseConfiguration configuration() {
return configuration;
}
public Content getHyperLink(DocPath link, String label) {
return getHyperLink(link, new StringContent(label), false, "", "", "");
}

View File

@ -28,8 +28,7 @@ package jdk.javadoc.internal.doclets.formats.html.markup;
import java.io.*;
import java.util.*;
import jdk.javadoc.doclet.DocletEnvironment.ModuleMode;
import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration;
import jdk.javadoc.internal.doclets.formats.html.HtmlConfiguration;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.Resources;
import jdk.javadoc.internal.doclets.toolkit.util.DocFile;
@ -55,59 +54,14 @@ import jdk.javadoc.internal.doclets.toolkit.util.TableTabTypes;
public class HtmlWriter {
/**
* The window title of this file
* The window title of this file.
*/
protected String winTitle;
/**
* The configuration
* The configuration.
*/
protected BaseConfiguration configuration;
/**
* Header for table displaying modules and description.
*/
protected final List<String> moduleTableHeader;
/**
* Header for tables displaying packages and description.
*/
protected final List<String> packageTableHeader;
/**
* Header for tables displaying modules and description.
*/
protected final List<String> requiresTableHeader;
/**
* Header for tables displaying packages and description.
*/
protected final List<String> exportedPackagesTableHeader;
/**
* Header for tables displaying modules and exported packages.
*/
protected final List<String> indirectPackagesTableHeader;
/**
* Header for tables displaying types and description.
*/
protected final List<String> usesTableHeader;
/**
* Header for tables displaying types and description.
*/
protected final List<String> providesTableHeader;
/**
* Summary for use tables displaying class and package use.
*/
protected final String useTableSummary;
/**
* Column header for class docs displaying Modifier and Type header.
*/
protected final String modifierTypeHeader;
protected HtmlConfiguration configuration;
private final DocFile docFile;
@ -117,47 +71,18 @@ public class HtmlWriter {
/**
* Constructor.
*
* @param path The directory path to be created for this file
* or null if none to be created.
* @param configuration the configuration
* @param path the directory path to be created for this file,
* or null if none to be created
*/
public HtmlWriter(BaseConfiguration configuration, DocPath path) {
docFile = DocFile.createFileForOutput(configuration, path);
public HtmlWriter(HtmlConfiguration configuration, DocPath path) {
this.configuration = configuration;
docFile = DocFile.createFileForOutput(configuration, path);
// The following should be converted to shared Content objects
// and moved to Contents, but that will require additional
// changes at the use sites.
Resources resources = configuration.getResources();
moduleTableHeader = Arrays.asList(
resources.getText("doclet.Module"),
resources.getText("doclet.Description"));
packageTableHeader = new ArrayList<>();
packageTableHeader.add(resources.getText("doclet.Package"));
packageTableHeader.add(resources.getText("doclet.Description"));
requiresTableHeader = new ArrayList<>();
requiresTableHeader.add(resources.getText("doclet.Modifier"));
requiresTableHeader.add(resources.getText("doclet.Module"));
requiresTableHeader.add(resources.getText("doclet.Description"));
exportedPackagesTableHeader = new ArrayList<>();
exportedPackagesTableHeader.add(resources.getText("doclet.Package"));
if (configuration.docEnv.getModuleMode() == ModuleMode.ALL) {
exportedPackagesTableHeader.add(resources.getText("doclet.Module"));
}
exportedPackagesTableHeader.add(resources.getText("doclet.Description"));
indirectPackagesTableHeader = new ArrayList<>();
indirectPackagesTableHeader.add(resources.getText("doclet.From"));
indirectPackagesTableHeader.add(resources.getText("doclet.Packages"));
usesTableHeader = new ArrayList<>();
usesTableHeader.add(resources.getText("doclet.Type"));
usesTableHeader.add(resources.getText("doclet.Description"));
providesTableHeader = new ArrayList<>();
providesTableHeader.add(resources.getText("doclet.Type"));
providesTableHeader.add(resources.getText("doclet.Description"));
useTableSummary = resources.getText("doclet.Use_Table_Summary",
resources.getText("doclet.packages"));
modifierTypeHeader = resources.getText("doclet.0_and_1",
resources.getText("doclet.Modifier"),
resources.getText("doclet.Type"));
}
public void write(Content c) throws DocFileIOException {
@ -392,11 +317,4 @@ public class HtmlWriter {
HtmlTree title = HtmlTree.TITLE(new StringContent(winTitle));
return title;
}
/*
* Returns a header for Modifier and Type column of a table.
*/
public String getModifierTypeHeader() {
return modifierTypeHeader;
}
}

View File

@ -564,7 +564,7 @@ public abstract class BaseConfiguration {
new Option(resources, "-linkoffline", 2) {
@Override
public boolean process(String opt, List<String> args) {
linkOfflineList.add(new Pair<String, String>(args.get(0), args.get(1)));
linkOfflineList.add(new Pair<>(args.get(0), args.get(1)));
return true;
}
},

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2003, 2017, 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
@ -25,7 +25,6 @@
package jdk.javadoc.internal.doclets.toolkit;
import java.util.List;
import java.util.SortedSet;
import javax.lang.model.element.TypeElement;
@ -69,16 +68,58 @@ public interface PackageSummaryWriter {
public abstract Content getSummaryHeader();
/**
* Adds the table of classes to the documentation tree.
* Adds the table of interfaces to the documentation tree.
*
* @param classes the array of classes to document.
* @param label the label for this table.
* @param tableSummary the summary string for the table
* @param tableHeader array of table headers
* @param interfaces the interfaces to document.
* @param summaryContentTree the content tree to which the summaries will be added
*/
public abstract void addClassesSummary(SortedSet<TypeElement> classes, String label,
String tableSummary, List<String> tableHeader, Content summaryContentTree);
public abstract void addInterfaceSummary(SortedSet<TypeElement> interfaces,
Content summaryContentTree);
/**
* Adds the table of classes to the documentation tree.
*
* @param classes the classes to document.
* @param summaryContentTree the content tree to which the summaries will be added
*/
public abstract void addClassSummary(SortedSet<TypeElement> classes,
Content summaryContentTree);
/**
* Adds the table of enums to the documentation tree.
*
* @param enums the enums to document.
* @param summaryContentTree the content tree to which the summaries will be added
*/
public abstract void addEnumSummary(SortedSet<TypeElement> enums,
Content summaryContentTree);
/**
* Adds the table of exceptions to the documentation tree.
*
* @param exceptions the exceptions to document.
* @param summaryContentTree the content tree to which the summaries will be added
*/
public abstract void addExceptionSummary(SortedSet<TypeElement> exceptions,
Content summaryContentTree);
/**
* Adds the table of errors to the documentation tree.
*
* @param errors the errors to document.
* @param summaryContentTree the content tree to which the summaries will be added
*/
public abstract void addErrorSummary(SortedSet<TypeElement> errors,
Content summaryContentTree);
/**
* Adds the table of annotation types to the documentation tree.
*
* @param annoTypes the annotation types to document.
* @param summaryContentTree the content tree to which the summaries will be added
*/
public abstract void addAnnotationTypeSummary(SortedSet<TypeElement> annoTypes,
Content summaryContentTree);
/**
* Adds the package description from the "packages.html" file to the documentation

View File

@ -25,8 +25,6 @@
package jdk.javadoc.internal.doclets.toolkit.builders;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
@ -171,21 +169,12 @@ public class PackageSummaryBuilder extends AbstractBuilder {
* will be added
*/
protected void buildInterfaceSummary(Content summaryContentTree) {
String interfaceTableSummary =
configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Interface_Summary"),
configuration.getText("doclet.interfaces"));
List<String> interfaceTableHeader = Arrays.asList(configuration.getText("doclet.Interface"),
configuration.getText("doclet.Description"));
SortedSet<TypeElement> ilist = utils.isSpecified(packageElement)
? utils.getTypeElementsAsSortedSet(utils.getInterfaces(packageElement))
: configuration.typeElementCatalog.interfaces(packageElement);
SortedSet<TypeElement> interfaces = utils.filterOutPrivateClasses(ilist, configuration.javafx);
if (!interfaces.isEmpty()) {
packageWriter.addClassesSummary(interfaces,
configuration.getText("doclet.Interface_Summary"),
interfaceTableSummary, interfaceTableHeader, summaryContentTree);
packageWriter.addInterfaceSummary(interfaces, summaryContentTree);
}
}
@ -196,20 +185,12 @@ public class PackageSummaryBuilder extends AbstractBuilder {
* be added
*/
protected void buildClassSummary(Content summaryContentTree) {
String classTableSummary =
configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Class_Summary"),
configuration.getText("doclet.classes"));
List<String> classTableHeader = Arrays.asList(configuration.getText("doclet.Class"),
configuration.getText("doclet.Description"));
SortedSet<TypeElement> clist = utils.isSpecified(packageElement)
? utils.getTypeElementsAsSortedSet(utils.getOrdinaryClasses(packageElement))
: configuration.typeElementCatalog.ordinaryClasses(packageElement);
SortedSet<TypeElement> classes = utils.filterOutPrivateClasses(clist, configuration.javafx);
if (!classes.isEmpty()) {
packageWriter.addClassesSummary(classes,
configuration.getText("doclet.Class_Summary"),
classTableSummary, classTableHeader, summaryContentTree);
packageWriter.addClassSummary(classes, summaryContentTree);
}
}
@ -220,20 +201,12 @@ public class PackageSummaryBuilder extends AbstractBuilder {
* be added
*/
protected void buildEnumSummary(Content summaryContentTree) {
String enumTableSummary =
configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Enum_Summary"),
configuration.getText("doclet.enums"));
List<String> enumTableHeader = Arrays.asList(configuration.getText("doclet.Enum"),
configuration.getText("doclet.Description"));
SortedSet<TypeElement> elist = utils.isSpecified(packageElement)
? utils.getTypeElementsAsSortedSet(utils.getEnums(packageElement))
: configuration.typeElementCatalog.enums(packageElement);
SortedSet<TypeElement> enums = utils.filterOutPrivateClasses(elist, configuration.javafx);
if (!enums.isEmpty()) {
packageWriter.addClassesSummary(enums,
configuration.getText("doclet.Enum_Summary"),
enumTableSummary, enumTableHeader, summaryContentTree);
packageWriter.addEnumSummary(enums, summaryContentTree);
}
}
@ -244,12 +217,6 @@ public class PackageSummaryBuilder extends AbstractBuilder {
* be added
*/
protected void buildExceptionSummary(Content summaryContentTree) {
String exceptionTableSummary =
configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Exception_Summary"),
configuration.getText("doclet.exceptions"));
List<String> exceptionTableHeader = Arrays.asList(configuration.getText("doclet.Exception"),
configuration.getText("doclet.Description"));
Set<TypeElement> iexceptions =
utils.isSpecified(packageElement)
? utils.getTypeElementsAsSortedSet(utils.getExceptions(packageElement))
@ -257,9 +224,7 @@ public class PackageSummaryBuilder extends AbstractBuilder {
SortedSet<TypeElement> exceptions = utils.filterOutPrivateClasses(iexceptions,
configuration.javafx);
if (!exceptions.isEmpty()) {
packageWriter.addClassesSummary(exceptions,
configuration.getText("doclet.Exception_Summary"),
exceptionTableSummary, exceptionTableHeader, summaryContentTree);
packageWriter.addExceptionSummary(exceptions, summaryContentTree);
}
}
@ -270,21 +235,13 @@ public class PackageSummaryBuilder extends AbstractBuilder {
* be added
*/
protected void buildErrorSummary(Content summaryContentTree) {
String errorTableSummary =
configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Error_Summary"),
configuration.getText("doclet.errors"));
List<String> errorTableHeader = Arrays.asList(configuration.getText("doclet.Error"),
configuration.getText("doclet.Description"));
Set<TypeElement> ierrors =
utils.isSpecified(packageElement)
? utils.getTypeElementsAsSortedSet(utils.getErrors(packageElement))
: configuration.typeElementCatalog.errors(packageElement);
SortedSet<TypeElement> errors = utils.filterOutPrivateClasses(ierrors, configuration.javafx);
if (!errors.isEmpty()) {
packageWriter.addClassesSummary(errors,
configuration.getText("doclet.Error_Summary"),
errorTableSummary, errorTableHeader, summaryContentTree);
packageWriter.addErrorSummary(errors, summaryContentTree);
}
}
@ -295,13 +252,6 @@ public class PackageSummaryBuilder extends AbstractBuilder {
* summary will be added
*/
protected void buildAnnotationTypeSummary(Content summaryContentTree) {
String annotationtypeTableSummary =
configuration.getText("doclet.Member_Table_Summary",
configuration.getText("doclet.Annotation_Types_Summary"),
configuration.getText("doclet.annotationtypes"));
List<String> annotationtypeTableHeader = Arrays.asList(
configuration.getText("doclet.AnnotationType"),
configuration.getText("doclet.Description"));
SortedSet<TypeElement> iannotationTypes =
utils.isSpecified(packageElement)
? utils.getTypeElementsAsSortedSet(utils.getAnnotationTypes(packageElement))
@ -309,10 +259,7 @@ public class PackageSummaryBuilder extends AbstractBuilder {
SortedSet<TypeElement> annotationTypes = utils.filterOutPrivateClasses(iannotationTypes,
configuration.javafx);
if (!annotationTypes.isEmpty()) {
packageWriter.addClassesSummary(annotationTypes,
configuration.getText("doclet.Annotation_Types_Summary"),
annotationtypeTableSummary, annotationtypeTableHeader,
summaryContentTree);
packageWriter.addAnnotationTypeSummary(annotationTypes, summaryContentTree);
}
}

View File

@ -207,6 +207,7 @@ doclet.subclasses=subclasses
doclet.subinterfaces=subinterfaces
doclet.Modifier=Modifier
doclet.Type=Type
doclet.Modifier_and_Type=Modifier and Type
doclet.Implementation=Implementation(s):
doclet.Types=Types
doclet.Members=Members
@ -224,7 +225,6 @@ doclet.Class=Class
doclet.Description=Description
doclet.ConstantField=Constant Field
doclet.Value=Value
doclet.0_and_1={0} and {1}
#Documentation for Enums
doclet.enum_values_doc.fullbody=\