summaryrefslogtreecommitdiff
path: root/java/openjdk6/files/icedtea/openjdk/6851834-restructure.patch
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2013-10-09 20:36:06 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2013-10-09 20:36:06 +0000
commitf78b1b9ba06ffbbdecee2801917443f79011f134 (patch)
treefc3ef7699ec2d5dff96245bc6d90117d597fb678 /java/openjdk6/files/icedtea/openjdk/6851834-restructure.patch
parentBump PORTREVISION after plist change (diff)
Update to Build b28.
Diffstat (limited to 'java/openjdk6/files/icedtea/openjdk/6851834-restructure.patch')
-rw-r--r--java/openjdk6/files/icedtea/openjdk/6851834-restructure.patch26853
1 files changed, 0 insertions, 26853 deletions
diff --git a/java/openjdk6/files/icedtea/openjdk/6851834-restructure.patch b/java/openjdk6/files/icedtea/openjdk/6851834-restructure.patch
deleted file mode 100644
index 66011ee8189e..000000000000
--- a/java/openjdk6/files/icedtea/openjdk/6851834-restructure.patch
+++ /dev/null
@@ -1,26853 +0,0 @@
-# HG changeset patch
-# User andrew
-# Date 1371730814 18000
-# Node ID 5761891cfee48bc9382dd68e5e1bf164cff9bfbf
-# Parent 741c190d6989de395cb95895dc0320415af6b131
-# PLEASE SEE the other 6851834 patch which handles renames more generally
-6851834: Javadoc doclet needs a structured approach to generate the output HTML.
-Reviewed-by: jjg
-
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java
-@@ -26,12 +26,16 @@
- package com.sun.tools.doclets.formats.html;
-
- import com.sun.javadoc.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-
- /**
- * Print method and constructor info.
- *
- * @author Robert Field
- * @author Atul M Dambalkar
-+ * @author Bhavesh Patel (Modified)
- */
- public abstract class AbstractExecutableMemberWriter extends AbstractMemberWriter {
-
-@@ -45,82 +49,111 @@
- }
-
- /**
-- * Write the type parameters for the executable member.
-+ * Add the type parameters for the executable member.
- *
- * @param member the member to write type parameters for.
-+ * @param htmltree the content tree to which the parameters will be added.
- * @return the display length required to write this information.
- */
-- protected int writeTypeParameters(ExecutableMemberDoc member) {
-+ protected int addTypeParameters(ExecutableMemberDoc member, Content htmltree) {
- LinkInfoImpl linkInfo = new LinkInfoImpl(
- LinkInfoImpl.CONTEXT_MEMBER_TYPE_PARAMS, member, false);
- String typeParameters = writer.getTypeParameterLinks(linkInfo);
- if (linkInfo.displayLength > 0) {
-- writer.print(typeParameters + " ");
-+ Content linkContent = new RawHtml(typeParameters);
-+ htmltree.addContent(linkContent);
-+ htmltree.addContent(writer.getSpace());
- writer.displayLength += linkInfo.displayLength + 1;
- }
- return linkInfo.displayLength;
- }
-
-- protected void writeSignature(ExecutableMemberDoc member) {
-- writer.displayLength = 0;
-- writer.pre();
-- writer.writeAnnotationInfo(member);
-- printModifiers(member);
-- writeTypeParameters(member);
-- if (configuration().linksource &&
-- member.position().line() != classdoc.position().line()) {
-- writer.printSrcLink(member, member.name());
-- } else {
-- strong(member.name());
-- }
-- writeParameters(member);
-- writeExceptions(member);
-- writer.preEnd();
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected Content getDeprecatedLink(ProgramElementDoc member) {
-+ ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
-+ return writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER, (MemberDoc) emd,
-+ emd.qualifiedName() + emd.flatSignature());
- }
-
-- protected void writeDeprecatedLink(ProgramElementDoc member) {
-+ /**
-+ * Add the summary link for the member.
-+ *
-+ * @param context the id of the context where the link will be printed
-+ * @param classDoc the classDoc that we should link to
-+ * @param member the member being linked to
-+ * @param tdSummary the content tree to which the link will be added
-+ */
-+ protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
-+ Content tdSummary) {
- ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
-- writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, (MemberDoc) emd,
-- emd.qualifiedName() + emd.flatSignature(), false);
-+ String name = emd.name();
-+ Content strong = HtmlTree.STRONG(new RawHtml(
-+ writer.getDocLink(context, cd, (MemberDoc) emd,
-+ name, false)));
-+ Content code = HtmlTree.CODE(strong);
-+ writer.displayLength = name.length();
-+ addParameters(emd, false, code);
-+ tdSummary.addContent(code);
- }
-
-- protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
-- ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
-- String name = emd.name();
-- writer.strong();
-- writer.printDocLink(context, cd, (MemberDoc) emd,
-- name, false);
-- writer.strongEnd();
-- writer.displayLength = name.length();
-- writeParameters(emd, false);
-+ /**
-+ * Add the inherited summary link for the member.
-+ *
-+ * @param classDoc the classDoc that we should link to
-+ * @param member the member being linked to
-+ * @param linksTree the content tree to which the link will be added
-+ */
-+ protected void addInheritedSummaryLink(ClassDoc cd,
-+ ProgramElementDoc member, Content linksTree) {
-+ linksTree.addContent(new RawHtml(
-+ writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc) member,
-+ member.name(), false)));
- }
-
-- protected void writeInheritedSummaryLink(ClassDoc cd,
-- ProgramElementDoc member) {
-- writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc) member,
-- member.name(), false);
-- }
--
-- protected void writeParam(ExecutableMemberDoc member, Parameter param,
-- boolean isVarArg) {
-+ /**
-+ * Add the parameter for the executable member.
-+ *
-+ * @param member the member to write parameter for.
-+ * @param param the parameter that needs to be written.
-+ * @param isVarArg true if this is a link to var arg.
-+ * @param tree the content tree to which the parameter information will be added.
-+ */
-+ protected void addParam(ExecutableMemberDoc member, Parameter param,
-+ boolean isVarArg, Content tree) {
- if (param.type() != null) {
-- writer.printLink(new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_EXECUTABLE_MEMBER_PARAM, param.type(),
-- isVarArg));
-+ Content link = new RawHtml(writer.getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_EXECUTABLE_MEMBER_PARAM, param.type(),
-+ isVarArg)));
-+ tree.addContent(link);
- }
- if(param.name().length() > 0) {
-- writer.space();
-- writer.print(param.name());
-+ tree.addContent(writer.getSpace());
-+ tree.addContent(param.name());
- }
- }
-
-- protected void writeParameters(ExecutableMemberDoc member) {
-- writeParameters(member, true);
-+ /**
-+ * Add all the parameters for the executable member.
-+ *
-+ * @param member the member to write parameters for.
-+ * @param tree the content tree to which the parameters information will be added.
-+ */
-+ protected void addParameters(ExecutableMemberDoc member, Content htmltree) {
-+ addParameters(member, true, htmltree);
- }
-
-- protected void writeParameters(ExecutableMemberDoc member,
-- boolean includeAnnotations) {
-- print('(');
-+ /**
-+ * Add all the parameters for the executable member.
-+ *
-+ * @param member the member to write parameters for.
-+ * @param includeAnnotations true if annotation information needs to be added.
-+ * @param tree the content tree to which the parameters information will be added.
-+ */
-+ protected void addParameters(ExecutableMemberDoc member,
-+ boolean includeAnnotations, Content htmltree) {
-+ htmltree.addContent("(");
- Parameter[] params = member.parameters();
- String indent = makeSpace(writer.displayLength);
- if (configuration().linksource) {
-@@ -132,58 +165,70 @@
- Parameter param = params[paramstart];
- if (!param.name().startsWith("this$")) {
- if (includeAnnotations) {
-- boolean foundAnnotations =
-- writer.writeAnnotationInfo(indent.length(), member, param);
-- if (foundAnnotations) {
-- writer.println();
-- writer.print(indent);
-+ boolean foundAnnotations =
-+ writer.addAnnotationInfo(indent.length(),
-+ member, param, htmltree);
-+ if (foundAnnotations) {
-+ htmltree.addContent(DocletConstants.NL);
-+ htmltree.addContent(indent);
- }
- }
-- writeParam(member, param,
-- (paramstart == params.length - 1) && member.isVarArgs());
-+ addParam(member, param,
-+ (paramstart == params.length - 1) && member.isVarArgs(), htmltree);
- break;
- }
- }
-
- for (int i = paramstart + 1; i < params.length; i++) {
-- writer.print(',');
-- writer.println();
-- writer.print(indent);
-+ htmltree.addContent(",");
-+ htmltree.addContent(DocletConstants.NL);
-+ htmltree.addContent(indent);
- if (includeAnnotations) {
- boolean foundAnnotations =
-- writer.writeAnnotationInfo(indent.length(), member, params[i]);
-+ writer.addAnnotationInfo(indent.length(), member, params[i],
-+ htmltree);
- if (foundAnnotations) {
-- writer.println();
-- writer.print(indent);
-+ htmltree.addContent(DocletConstants.NL);
-+ htmltree.addContent(indent);
- }
- }
-- writeParam(member, params[i], (i == params.length - 1) && member.isVarArgs());
-+ addParam(member, params[i], (i == params.length - 1) && member.isVarArgs(),
-+ htmltree);
- }
-- writer.print(')');
-+ htmltree.addContent(")");
- }
-
-- protected void writeExceptions(ExecutableMemberDoc member) {
-+ /**
-+ * Add exceptions for the executable member.
-+ *
-+ * @param member the member to write exceptions for.
-+ * @param htmltree the content tree to which the exceptions information will be added.
-+ */
-+ protected void addExceptions(ExecutableMemberDoc member, Content htmltree) {
- Type[] exceptions = member.thrownExceptionTypes();
- if(exceptions.length > 0) {
- LinkInfoImpl memberTypeParam = new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_MEMBER, member, false);
-+ LinkInfoImpl.CONTEXT_MEMBER, member, false);
- int retlen = getReturnTypeLength(member);
- writer.getTypeParameterLinks(memberTypeParam);
- retlen += memberTypeParam.displayLength == 0 ?
- 0 : memberTypeParam.displayLength + 1;
- String indent = makeSpace(modifierString(member).length() +
-- member.name().length() + retlen - 4);
-- writer.println();
-- writer.print(indent);
-- writer.print("throws ");
-+ member.name().length() + retlen - 4);
-+ htmltree.addContent(DocletConstants.NL);
-+ htmltree.addContent(indent);
-+ htmltree.addContent("throws ");
- indent += " ";
-- writer.printLink(new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_MEMBER, exceptions[0]));
-+ Content link = new RawHtml(writer.getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_MEMBER, exceptions[0])));
-+ htmltree.addContent(link);
- for(int i = 1; i < exceptions.length; i++) {
-- writer.println(",");
-- writer.print(indent);
-- writer.printLink(new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_MEMBER, exceptions[i]));
-+ htmltree.addContent(",");
-+ htmltree.addContent(DocletConstants.NL);
-+ htmltree.addContent(indent);
-+ Content exceptionLink = new RawHtml(writer.getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_MEMBER, exceptions[i])));
-+ htmltree.addContent(exceptionLink);
- }
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/AbstractIndexWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/AbstractIndexWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractIndexWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractIndexWriter.java
-@@ -30,6 +30,8 @@
-
- import com.sun.javadoc.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-
- /**
- * Generate Index for all the Member Names with Indexing in
-@@ -39,6 +41,7 @@
- *
- * @see IndexBuilder
- * @author Atul M Dambalkar
-+ * @author Bhavesh Patel (Modified)
- */
- public class AbstractIndexWriter extends HtmlDocletWriter {
-
-@@ -78,175 +81,187 @@
- }
-
- /**
-- * Print the text "Index" in strong format in the navigation bar.
-+ * Get the index label for navigation bar.
-+ *
-+ * @return a content tree for the tree label
- */
-- protected void navLinkIndex() {
-- navCellRevStart();
-- fontStyle("NavBarFont1Rev");
-- strongText("doclet.Index");
-- fontEnd();
-- navCellEnd();
-+ protected Content getNavLinkIndex() {
-+ Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, indexLabel);
-+ return li;
- }
-
- /**
-- * Generate the member information for the unicode character along with the
-+ * Add the member information for the unicode character along with the
- * list of the members.
- *
-- * @param unicode Unicode for which member list information to be generated.
-- * @param memberlist List of members for the unicode character.
-+ * @param unicode Unicode for which member list information to be generated
-+ * @param memberlist List of members for the unicode character
-+ * @param contentTree the content tree to which the information will be added
- */
-- protected void generateContents(Character unicode, List memberlist) {
-- anchor("_" + unicode + "_");
-- h2();
-- strong(unicode.toString());
-- h2End();
-+ protected void addContents(Character unicode, List<? extends Doc> memberlist,
-+ Content contentTree) {
-+ contentTree.addContent(getMarkerAnchor("_" + unicode + "_"));
-+ Content headContent = new StringContent(unicode.toString());
-+ Content heading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, false,
-+ HtmlStyle.title, headContent);
-+ contentTree.addContent(heading);
- int memberListSize = memberlist.size();
- // Display the list only if there are elements to be displayed.
- if (memberListSize > 0) {
-- dl();
-+ Content dl = new HtmlTree(HtmlTag.DL);
- for (int i = 0; i < memberListSize; i++) {
- Doc element = memberlist.get(i);
- if (element instanceof MemberDoc) {
-- printDescription((MemberDoc)element);
-+ addDescription((MemberDoc)element, dl);
- } else if (element instanceof ClassDoc) {
-- printDescription((ClassDoc)element);
-+ addDescription((ClassDoc)element, dl);
- } else if (element instanceof PackageDoc) {
-- printDescription((PackageDoc)element);
-+ addDescription((PackageDoc)element, dl);
- }
- }
-- dlEnd();
-+ contentTree.addContent(dl);
- }
-- hr();
-- }
--
--
-- /**
-- * Print one line summary comment for the package.
-- *
-- * @param pkg PackageDoc passed.
-- */
-- protected void printDescription(PackageDoc pkg) {
-- dt();
-- printPackageLink(pkg, Util.getPackageName(pkg), true);
-- print(" - ");
-- print(configuration.getText("doclet.package") + " " + pkg.name());
-- dtEnd();
-- dd();
-- printSummaryComment(pkg);
-- ddEnd();
- }
-
- /**
-- * Print one line summary comment for the class.
-+ * Add one line summary comment for the package.
- *
-- * @param cd ClassDoc passed.
-+ * @param pkg the package to be documented
-+ * @param dlTree the content tree to which the description will be added
- */
-- protected void printDescription(ClassDoc cd) {
-- dt();
-- printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_INDEX, cd, true));
-- print(" - ");
-- printClassInfo(cd);
-- dtEnd();
-- dd();
-- printComment(cd);
-- ddEnd();
-+ protected void addDescription(PackageDoc pkg, Content dlTree) {
-+ Content link = getPackageLink(pkg, new StringContent(Util.getPackageName(pkg)));
-+ Content dt = HtmlTree.DT(link);
-+ dt.addContent(" - ");
-+ dt.addContent(getResource("doclet.package"));
-+ dt.addContent(" " + pkg.name());
-+ dlTree.addContent(dt);
-+ Content dd = new HtmlTree(HtmlTag.DD);
-+ addSummaryComment(pkg, dd);
-+ dlTree.addContent(dd);
- }
-
- /**
-- * Print the classkind(class, interface, exception, error of the class
-+ * Add one line summary comment for the class.
-+ *
-+ * @param cd the class being documented
-+ * @param dlTree the content tree to which the description will be added
-+ */
-+ protected void addDescription(ClassDoc cd, Content dlTree) {
-+ Content link = new RawHtml(
-+ getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_INDEX, cd, true)));
-+ Content dt = HtmlTree.DT(link);
-+ dt.addContent(" - ");
-+ addClassInfo(cd, dt);
-+ dlTree.addContent(dt);
-+ Content dd = new HtmlTree(HtmlTag.DD);
-+ addComment(cd, dd);
-+ dlTree.addContent(dd);
-+ }
-+
-+ /**
-+ * Add the classkind(class, interface, exception, error of the class
- * passed.
- *
-- * @param cd ClassDoc.
-+ * @param cd the class being documented
-+ * @param contentTree the content tree to which the class info will be added
- */
-- protected void printClassInfo(ClassDoc cd) {
-- print(configuration.getText("doclet.in",
-- Util.getTypeName(configuration, cd, false),
-- getPackageLink(cd.containingPackage(),
-+ protected void addClassInfo(ClassDoc cd, Content contentTree) {
-+ contentTree.addContent(getResource("doclet.in",
-+ Util.getTypeName(configuration, cd, false),
-+ getPackageLinkString(cd.containingPackage(),
- Util.getPackageName(cd.containingPackage()), false)));
- }
-
--
- /**
-- * Generate Description for Class, Field, Method or Constructor.
-- * for Java.* Packages Class Members.
-+ * Add description for Class, Field, Method or Constructor.
- *
-- * @param member MemberDoc for the member of the Class Kind.
-- * @see com.sun.javadoc.MemberDoc
-+ * @param member MemberDoc for the member of the Class Kind
-+ * @param dlTree the content tree to which the description will be added
- */
-- protected void printDescription(MemberDoc member) {
-+ protected void addDescription(MemberDoc member, Content dlTree) {
- String name = (member instanceof ExecutableMemberDoc)?
- member.name() + ((ExecutableMemberDoc)member).flatSignature() :
- member.name();
- if (name.indexOf("<") != -1 || name.indexOf(">") != -1) {
- name = Util.escapeHtmlChars(name);
- }
-- ClassDoc containing = member.containingClass();
-- dt();
-- printDocLink(LinkInfoImpl.CONTEXT_INDEX, member, name, true);
-- println(" - ");
-- printMemberDesc(member);
-- println();
-- dtEnd();
-- dd();
-- printComment(member);
-- ddEnd();
-- println();
-+ Content span = HtmlTree.SPAN(HtmlStyle.strong,
-+ getDocLink(LinkInfoImpl.CONTEXT_INDEX, member, name));
-+ Content dt = HtmlTree.DT(span);
-+ dt.addContent(" - ");
-+ addMemberDesc(member, dt);
-+ dlTree.addContent(dt);
-+ Content dd = new HtmlTree(HtmlTag.DD);
-+ addComment(member, dd);
-+ dlTree.addContent(dd);
- }
-
--
- /**
-- * Print comment for each element in the index. If the element is deprecated
-+ * Add comment for each element in the index. If the element is deprecated
- * and it has a @deprecated tag, use that comment. Else if the containing
- * class for this element is deprecated, then add the word "Deprecated." at
- * the start and then print the normal comment.
- *
-- * @param element Index element.
-+ * @param element Index element
-+ * @param contentTree the content tree to which the comment will be added
- */
-- protected void printComment(ProgramElementDoc element) {
-+ protected void addComment(ProgramElementDoc element, Content contentTree) {
- Tag[] tags;
-+ Content span = HtmlTree.SPAN(HtmlStyle.strong, deprecatedPhrase);
-+ HtmlTree div = new HtmlTree(HtmlTag.DIV);
-+ div.addStyle(HtmlStyle.block);
- if (Util.isDeprecated(element)) {
-- strongText("doclet.Deprecated"); space();
-+ div.addContent(span);
- if ((tags = element.tags("deprecated")).length > 0)
-- printInlineDeprecatedComment(element, tags[0]);
-+ addInlineDeprecatedComment(element, tags[0], div);
-+ contentTree.addContent(div);
- } else {
- ClassDoc cont = element.containingClass();
- while (cont != null) {
- if (Util.isDeprecated(cont)) {
-- strongText("doclet.Deprecated"); space();
-+ div.addContent(span);
-+ contentTree.addContent(div);
- break;
- }
- cont = cont.containingClass();
- }
-- printSummaryComment(element);
-+ addSummaryComment(element, contentTree);
- }
- }
-
- /**
-- * Print description about the Static Varible/Method/Constructor for a
-+ * Add description about the Static Varible/Method/Constructor for a
- * member.
- *
-- * @param member MemberDoc for the member within the Class Kind.
-- * @see com.sun.javadoc.MemberDoc
-+ * @param member MemberDoc for the member within the Class Kind
-+ * @param contentTree the content tree to which the member description will be added
- */
-- protected void printMemberDesc(MemberDoc member) {
-+ protected void addMemberDesc(MemberDoc member, Content contentTree) {
- ClassDoc containing = member.containingClass();
-- String classdesc = Util.getTypeName(configuration, containing, true) + " " +
-- getPreQualifiedClassLink(LinkInfoImpl.CONTEXT_INDEX, containing,
-- false);
-+ String classdesc = Util.getTypeName(
-+ configuration, containing, true) + " ";
- if (member.isField()) {
- if (member.isStatic()) {
-- printText("doclet.Static_variable_in", classdesc);
-+ contentTree.addContent(
-+ getResource("doclet.Static_variable_in", classdesc));
- } else {
-- printText("doclet.Variable_in", classdesc);
-+ contentTree.addContent(
-+ getResource("doclet.Variable_in", classdesc));
- }
- } else if (member.isConstructor()) {
-- printText("doclet.Constructor_for", classdesc);
-+ contentTree.addContent(
-+ getResource("doclet.Constructor_for", classdesc));
- } else if (member.isMethod()) {
- if (member.isStatic()) {
-- printText("doclet.Static_method_in", classdesc);
-+ contentTree.addContent(
-+ getResource("doclet.Static_method_in", classdesc));
- } else {
-- printText("doclet.Method_in", classdesc);
-+ contentTree.addContent(
-+ getResource("doclet.Method_in", classdesc));
- }
- }
-+ addPreQualifiedClassLink(LinkInfoImpl.CONTEXT_INDEX, containing,
-+ false, contentTree);
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/AbstractMemberWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/AbstractMemberWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractMemberWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractMemberWriter.java
-@@ -25,10 +25,11 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.util.*;
- import java.lang.reflect.Modifier;
--import java.util.*;
--
- import com.sun.javadoc.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.taglets.*;
-
-@@ -60,36 +61,125 @@
-
- /*** abstracts ***/
-
-- public abstract void printSummaryLabel();
-+ /**
-+ * Add the summary label for the member.
-+ *
-+ * @param memberTree the content tree to which the label will be added
-+ */
-+ public abstract void addSummaryLabel(Content memberTree);
-
-- public abstract void printTableSummary();
-+ /**
-+ * Get the summary for the member summary table.
-+ *
-+ * @return a string for the table summary
-+ */
-+ public abstract String getTableSummary();
-
-- public abstract void printSummaryTableHeader(ProgramElementDoc member);
-+ /**
-+ * Get the caption for the member summary table.
-+ *
-+ * @return a string for the table caption
-+ */
-+ public abstract String getCaption();
-
-- public abstract void printInheritedSummaryLabel(ClassDoc cd);
-+ /**
-+ * Get the summary table header for the member.
-+ *
-+ * @param member the member to be documented
-+ * @return the summary table header
-+ */
-+ public abstract String[] getSummaryTableHeader(ProgramElementDoc member);
-
-- public abstract void printSummaryAnchor(ClassDoc cd);
-+ /**
-+ * Add inherited summary lable for the member.
-+ *
-+ * @param cd the class doc to which to link to
-+ * @param inheritedTree the content tree to which the inherited summary label will be added
-+ */
-+ public abstract void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree);
-
-- public abstract void printInheritedSummaryAnchor(ClassDoc cd);
-+ /**
-+ * Add the anchor for the summary section of the member.
-+ *
-+ * @param cd the class doc to be documented
-+ * @param memberTree the content tree to which the summary anchor will be added
-+ */
-+ public abstract void addSummaryAnchor(ClassDoc cd, Content memberTree);
-
-- protected abstract void printSummaryType(ProgramElementDoc member);
-+ /**
-+ * Add the anchor for the inherited summary section of the member.
-+ *
-+ * @param cd the class doc to be documented
-+ * @param inheritedTree the content tree to which the inherited summary anchor will be added
-+ */
-+ public abstract void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree);
-
-- protected void writeSummaryLink(ClassDoc cd, ProgramElementDoc member) {
-- writeSummaryLink(LinkInfoImpl.CONTEXT_MEMBER, cd, member);
-+ /**
-+ * Add the summary type for the member.
-+ *
-+ * @param member the member to be documented
-+ * @param tdSummaryType the content tree to which the type will be added
-+ */
-+ protected abstract void addSummaryType(ProgramElementDoc member,
-+ Content tdSummaryType);
-+
-+ /**
-+ * Add the summary link for the member.
-+ *
-+ * @param cd the class doc to be documented
-+ * @param member the member to be documented
-+ * @param tdSummary the content tree to which the link will be added
-+ */
-+ protected void addSummaryLink(ClassDoc cd, ProgramElementDoc member,
-+ Content tdSummary) {
-+ addSummaryLink(LinkInfoImpl.CONTEXT_MEMBER, cd, member, tdSummary);
- }
-
-- protected abstract void writeSummaryLink(int context,
-- ClassDoc cd,
-- ProgramElementDoc member);
-+ /**
-+ * Add the summary link for the member.
-+ *
-+ * @param context the id of the context where the link will be printed
-+ * @param cd the class doc to be documented
-+ * @param member the member to be documented
-+ * @param tdSummary the content tree to which the summary link will be added
-+ */
-+ protected abstract void addSummaryLink(int context,
-+ ClassDoc cd, ProgramElementDoc member, Content tdSummary);
-
-- protected abstract void writeInheritedSummaryLink(ClassDoc cd,
-- ProgramElementDoc member);
-+ /**
-+ * Add the inherited summary link for the member.
-+ *
-+ * @param cd the class doc to be documented
-+ * @param member the member to be documented
-+ * @param linksTree the content tree to which the inherited summary link will be added
-+ */
-+ protected abstract void addInheritedSummaryLink(ClassDoc cd,
-+ ProgramElementDoc member, Content linksTree);
-
-- protected abstract void writeDeprecatedLink(ProgramElementDoc member);
-+ /**
-+ * Get the deprecated link.
-+ *
-+ * @param member the member being linked to
-+ * @return a content tree representing the link
-+ */
-+ protected abstract Content getDeprecatedLink(ProgramElementDoc member);
-
-- protected abstract void printNavSummaryLink(ClassDoc cd, boolean link);
-+ /**
-+ * Get the navigation summary link.
-+ *
-+ * @param cd the class doc to be documented
-+ * @param link true if its a link else the label to be printed
-+ * @return a content tree for the navigation summary link.
-+ */
-+ protected abstract Content getNavSummaryLink(ClassDoc cd, boolean link);
-
-- protected abstract void printNavDetailLink(boolean link);
-+ /**
-+ * Add the navigation detail link.
-+ *
-+ * @param link true if its a link else the label to be printed
-+ * @param liNav the content tree to which the navigation detail link will be added
-+ */
-+ protected abstract void addNavDetailLink(boolean link, Content liNav);
-
- /*** ***/
-
-@@ -109,6 +199,17 @@
- }
-
- /**
-+ * Add the member name to the content tree and modifies the display length.
-+ *
-+ * @param name the member name to be added to the content tree.
-+ * @param htmltree the content tree to which the name will be added.
-+ */
-+ protected void addName(String name, Content htmltree) {
-+ htmltree.addContent(name);
-+ writer.displayLength += name.length();
-+ }
-+
-+ /**
- * Return a string describing the access modifier flags.
- * Don't include native or synchronized.
- *
-@@ -131,18 +232,24 @@
- return type;
- }
-
-- protected void printModifiers(MemberDoc member) {
-+ /**
-+ * Add the modifier for the member.
-+ *
-+ * @param member the member for which teh modifier will be added.
-+ * @param htmltree the content tree to which the modifier information will be added.
-+ */
-+ protected void addModifiers(MemberDoc member, Content htmltree) {
- String mod = modifierString(member);
- // According to JLS, we should not be showing public modifier for
- // interface methods.
- if ((member.isField() || member.isMethod()) &&
- writer instanceof ClassWriterImpl &&
-- ((ClassWriterImpl) writer).getClassDoc().isInterface()) {
-+ ((ClassWriterImpl) writer).getClassDoc().isInterface()) {
- mod = Util.replaceText(mod, "public", "").trim();
- }
- if(mod.length() > 0) {
-- print(mod);
-- print(' ');
-+ htmltree.addContent(mod);
-+ htmltree.addContent(writer.getSpace());
- }
- }
-
-@@ -158,66 +265,43 @@
- }
-
- /**
-- * Print 'static' if static and type link.
-+ * Add the modifier and type for the member in the member summary.
-+ *
-+ * @param member the member to add the type for
-+ * @param type the type to add
-+ * @param tdSummaryType the content tree to which the modified and type will be added
- */
-- protected void printStaticAndType(boolean isStatic, Type type) {
-- writer.printTypeSummaryHeader();
-- if (isStatic) {
-- print("static");
-- }
-- writer.space();
-- if (type != null) {
-- writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-- type));
-- }
-- writer.printTypeSummaryFooter();
-- }
--
-- /**
-- * Print the modifier and type for the member in the member summary.
-- *
-- * @param member the member to print the type for.
-- * @param type the type to print.
-- */
-- protected void printModifierAndType(ProgramElementDoc member, Type type) {
-- writer.printTypeSummaryHeader();
-- printModifier(member);
-+ protected void addModifierAndType(ProgramElementDoc member, Type type,
-+ Content tdSummaryType) {
-+ HtmlTree code = new HtmlTree(HtmlTag.CODE);
-+ addModifier(member, code);
- if (type == null) {
-- writer.space();
- if (member.isClass()) {
-- print("class");
-+ code.addContent("class");
- } else {
-- print("interface");
-+ code.addContent("interface");
- }
-+ code.addContent(writer.getSpace());
- } else {
- if (member instanceof ExecutableMemberDoc &&
- ((ExecutableMemberDoc) member).typeParameters().length > 0) {
- //Code to avoid ugly wrapping in member summary table.
-- writer.table(0,0,0);
-- writer.trAlignVAlign("right", "");
-- writer.tdNowrap();
-- writer.font("-1");
-- writer.code();
-- int displayLength = ((AbstractExecutableMemberWriter) this).
-- writeTypeParameters((ExecutableMemberDoc) member);
-+ int displayLength = ((AbstractExecutableMemberWriter) this).addTypeParameters(
-+ (ExecutableMemberDoc) member, code);
- if (displayLength > 10) {
-- writer.br();
-+ code.addContent(new HtmlTree(HtmlTag.BR));
- }
-- writer.printLink(new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_SUMMARY_RETURN_TYPE, type));
-- writer.codeEnd();
-- writer.fontEnd();
-- writer.tdEnd();
-- writer.trEnd();
-- writer.tableEnd();
-+ code.addContent(new RawHtml(
-+ writer.getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_SUMMARY_RETURN_TYPE, type))));
- } else {
-- writer.space();
-- writer.printLink(new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_SUMMARY_RETURN_TYPE, type));
-+ code.addContent(new RawHtml(
-+ writer.getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_SUMMARY_RETURN_TYPE, type))));
- }
-
- }
-- writer.printTypeSummaryFooter();
-+ tdSummaryType.addContent(code);
- }
-
- private void printModifier(ProgramElementDoc member) {
-@@ -238,25 +322,53 @@
- }
-
- /**
-- * Print the deprecated output for the given member.
-+ * Add the modifier for the member.
-+ *
-+ * @param member the member to add the type for
-+ * @param code the content tree to which the modified will be added
-+ */
-+ private void addModifier(ProgramElementDoc member, Content code) {
-+ if (member.isProtected()) {
-+ code.addContent("protected ");
-+ } else if (member.isPrivate()) {
-+ code.addContent("private ");
-+ } else if (!member.isPublic()) { // Package private
-+ code.addContent(configuration().getText("doclet.Package_private"));
-+ code.addContent(" ");
-+ }
-+ if (member.isMethod() && ((MethodDoc)member).isAbstract()) {
-+ code.addContent("abstract ");
-+ }
-+ if (member.isStatic()) {
-+ code.addContent("static ");
-+ }
-+ }
-+
-+ /**
-+ * Add the deprecated information for the given member.
- *
- * @param member the member being documented.
-+ * @param contentTree the content tree to which the deprecated information will be added.
- */
-- protected void printDeprecated(ProgramElementDoc member) {
-+ protected void addDeprecatedInfo(ProgramElementDoc member, Content contentTree) {
- String output = (new DeprecatedTaglet()).getTagletOutput(member,
- writer.getTagletWriterInstance(false)).toString().trim();
- if (!output.isEmpty()) {
-- writer.printMemberDetailsListStartTag();
-- writer.print(output);
-+ Content deprecatedContent = new RawHtml(output);
-+ Content div = HtmlTree.DIV(HtmlStyle.block, deprecatedContent);
-+ contentTree.addContent(div);
- }
- }
-
-- protected void printComment(ProgramElementDoc member) {
-+ /**
-+ * Add the comment for the given member.
-+ *
-+ * @param member the member being documented.
-+ * @param contentTree the content tree to which the comment will be added.
-+ */
-+ protected void addComment(ProgramElementDoc member, Content htmltree) {
- if (member.inlineTags().length > 0) {
-- writer.printMemberDetailsListStartTag();
-- writer.dd();
-- writer.printInlineComment(member);
-- writer.ddEnd();
-+ writer.addInlineComment(member, htmltree);
- }
- }
-
-@@ -264,67 +376,19 @@
- return member.name();
- }
-
-- protected void printHead(MemberDoc member) {
-- writer.h3();
-- writer.print(member.name());
-- writer.h3End();
-- }
--
-- protected void printFullComment(ProgramElementDoc member) {
-- if(configuration().nocomment){
-- return;
-- }
-- writer.dl();
-- print(((TagletOutputImpl)
-- (new DeprecatedTaglet()).getTagletOutput(member,
-- writer.getTagletWriterInstance(false))).toString());
-- printCommentAndTags(member);
-- writer.dlEnd();
-- }
--
-- protected void printCommentAndTags(ProgramElementDoc member) {
-- printComment(member);
-- writer.printTags(member);
-+ /**
-+ * Get the header for the section.
-+ *
-+ * @param member the member being documented.
-+ * @return a header content for the section.
-+ */
-+ protected Content getHead(MemberDoc member) {
-+ Content memberContent = new RawHtml(member.name());
-+ Content heading = HtmlTree.HEADING(HtmlConstants.MEMBER_HEADING, memberContent);
-+ return heading;
- }
-
- /**
-- * Write the member footer.
-- */
-- protected void printMemberFooter() {
-- writer.printMemberDetailsListEndTag();
-- assert !writer.getMemberDetailsListPrinted();
-- }
--
-- /**
-- * Forward to containing writer
-- */
-- public void printSummaryHeader(ClassDoc cd) {
-- printedSummaryHeader = true;
-- writer.printSummaryHeader(this, cd);
-- }
--
-- /**
-- * Forward to containing writer
-- */
-- public void printInheritedSummaryHeader(ClassDoc cd) {
-- writer.printInheritedSummaryHeader(this, cd);
-- }
--
-- /**
-- * Forward to containing writer
-- */
-- public void printInheritedSummaryFooter(ClassDoc cd) {
-- writer.printInheritedSummaryFooter(this, cd);
-- }
--
-- /**
-- * Forward to containing writer
-- */
-- public void printSummaryFooter(ClassDoc cd) {
-- writer.printSummaryFooter(this, cd);
-- }
--
-- /**
- * Return true if the given <code>ProgramElement</code> is inherited
- * by the class that is being documented.
- *
-@@ -340,102 +404,134 @@
- return true;
- }
-
--
- /**
-- * Generate the code for listing the deprecated APIs. Create the table
-- * format for listing the API. Call methods from the sub-class to complete
-- * the generation.
-+ * Add deprecated information to the documentation tree
-+ *
-+ * @param deprmembers list of deprecated members
-+ * @param headingKey the caption for the deprecated members table
-+ * @param tableSummary the summary for the deprecated members table
-+ * @param tableHeader table headers for the deprecated members table
-+ * @param contentTree the content tree to which the deprecated members table will be added
- */
-- protected void printDeprecatedAPI(List<Doc> deprmembers, String headingKey, String tableSummary, String[] tableHeader) {
-+ protected void addDeprecatedAPI(List<Doc> deprmembers, String headingKey,
-+ String tableSummary, String[] tableHeader, Content contentTree) {
- if (deprmembers.size() > 0) {
-- writer.tableIndexSummary(tableSummary);
-- writer.tableCaptionStart();
-- writer.printText(headingKey);
-- writer.tableCaptionEnd();
-- writer.summaryTableHeader(tableHeader, "col");
-+ Content table = HtmlTree.TABLE(0, 3, 0, tableSummary,
-+ writer.getTableCaption(configuration().getText(headingKey)));
-+ table.addContent(writer.getSummaryTableHeader(tableHeader, "col"));
-+ Content tbody = new HtmlTree(HtmlTag.TBODY);
- for (int i = 0; i < deprmembers.size(); i++) {
- ProgramElementDoc member =(ProgramElementDoc)deprmembers.get(i);
-- writer.trBgcolorStyle("white", "TableRowColor");
-- writer.summaryRow(0);
-- writeDeprecatedLink(member);
-- writer.br();
-- writer.printNbsps();
-+ HtmlTree td = HtmlTree.TD(HtmlStyle.colOne, getDeprecatedLink(member));
- if (member.tags("deprecated").length > 0)
-- writer.printInlineDeprecatedComment(member, member.tags("deprecated")[0]);
-- writer.space();
-- writer.summaryRowEnd();
-- writer.trEnd();
-+ writer.addInlineDeprecatedComment(member,
-+ member.tags("deprecated")[0], td);
-+ HtmlTree tr = HtmlTree.TR(td);
-+ if (i%2 == 0)
-+ tr.addStyle(HtmlStyle.altColor);
-+ else
-+ tr.addStyle(HtmlStyle.rowColor);
-+ tbody.addContent(tr);
- }
-- writer.tableEnd();
-- writer.space();
-- writer.p();
-+ table.addContent(tbody);
-+ Content li = HtmlTree.LI(HtmlStyle.blockList, table);
-+ Content ul = HtmlTree.UL(HtmlStyle.blockList, li);
-+ contentTree.addContent(ul);
- }
- }
-
- /**
-- * Print use info.
-+ * Add use information to the documentation tree.
-+ *
-+ * @param mems list of program elements for which the use information will be added
-+ * @param heading the section heading
-+ * @param tableSummary the summary for the use table
-+ * @param contentTree the content tree to which the use information will be added
- */
-- protected void printUseInfo(List<? extends ProgramElementDoc> mems, String heading, String tableSummary) {
-+ protected void addUseInfo(List<? extends ProgramElementDoc> mems,
-+ String heading, String tableSummary, Content contentTree) {
- if (mems == null) {
- return;
- }
- List members = (List)mems;
- boolean printedUseTableHeader = false;
- if (members.size() > 0) {
-- writer.tableIndexSummary(tableSummary);
-- writer.tableSubCaptionStart();
-- writer.print(heading);
-- writer.tableCaptionEnd();
-- for (Iterator it = members.iterator(); it.hasNext(); ) {
-+ Content table = HtmlTree.TABLE(0, 3, 0, tableSummary,
-+ writer.getTableCaption(heading));
-+ Content tbody = new HtmlTree(HtmlTag.TBODY);
-+ Iterator<? extends ProgramElementDoc> it = members.iterator();
-+ for (int i = 0; it.hasNext(); i++) {
- ProgramElementDoc pgmdoc = (ProgramElementDoc)it.next();
- ClassDoc cd = pgmdoc.containingClass();
- if (!printedUseTableHeader) {
-- // Passing ProgramElementDoc helps decides printing
-- // interface or class header in case of nested classes.
-- this.printSummaryTableHeader(pgmdoc);
-+ table.addContent(writer.getSummaryTableHeader(
-+ this.getSummaryTableHeader(pgmdoc), "col"));
- printedUseTableHeader = true;
- }
--
-- writer.printSummaryLinkType(this, pgmdoc);
-+ HtmlTree tr = new HtmlTree(HtmlTag.TR);
-+ if (i % 2 == 0) {
-+ tr.addStyle(HtmlStyle.altColor);
-+ } else {
-+ tr.addStyle(HtmlStyle.rowColor);
-+ }
-+ HtmlTree tdFirst = new HtmlTree(HtmlTag.TD);
-+ tdFirst.addStyle(HtmlStyle.colFirst);
-+ writer.addSummaryType(this, pgmdoc, tdFirst);
-+ tr.addContent(tdFirst);
-+ HtmlTree tdLast = new HtmlTree(HtmlTag.TD);
-+ tdLast.addStyle(HtmlStyle.colLast);
- if (cd != null && !(pgmdoc instanceof ConstructorDoc)
-- && !(pgmdoc instanceof ClassDoc)) {
-- // Add class context
-- writer.strong(cd.name() + ".");
-+ && !(pgmdoc instanceof ClassDoc)) {
-+ HtmlTree name = new HtmlTree(HtmlTag.SPAN);
-+ name.addStyle(HtmlStyle.strong);
-+ name.addContent(cd.name() + ".");
-+ tdLast.addContent(name);
- }
-- writeSummaryLink(
-- pgmdoc instanceof ClassDoc ?
-- LinkInfoImpl.CONTEXT_CLASS_USE : LinkInfoImpl.CONTEXT_MEMBER,
-- cd, pgmdoc);
-- writer.printSummaryLinkComment(this, pgmdoc);
-+ addSummaryLink(pgmdoc instanceof ClassDoc ?
-+ LinkInfoImpl.CONTEXT_CLASS_USE : LinkInfoImpl.CONTEXT_MEMBER,
-+ cd, pgmdoc, tdLast);
-+ writer.addSummaryLinkComment(this, pgmdoc, tdLast);
-+ tr.addContent(tdLast);
-+ tbody.addContent(tr);
- }
-- writer.tableEnd();
-- writer.space();
-- writer.p();
-+ table.addContent(tbody);
-+ contentTree.addContent(table);
- }
- }
-
-- protected void navDetailLink(List members) {
-- printNavDetailLink(members.size() > 0? true: false);
-+ /**
-+ * Add the navigation detail link.
-+ *
-+ * @param members the members to be linked
-+ * @param liNav the content tree to which the navigation detail link will be added
-+ */
-+ protected void addNavDetailLink(List<?> members, Content liNav) {
-+ addNavDetailLink(members.size() > 0 ? true : false, liNav);
- }
-
--
-- protected void navSummaryLink(List members,
-- VisibleMemberMap visibleMemberMap) {
-+ /**
-+ * Add the navigation summary link.
-+ *
-+ * @param members members to be linked
-+ * @param visibleMemberMap the visible inherited members map
-+ * @param liNav the content tree to which the navigation summary link will be added
-+ */
-+ protected void addNavSummaryLink(List<?> members,
-+ VisibleMemberMap visibleMemberMap, Content liNav) {
- if (members.size() > 0) {
-- printNavSummaryLink(null, true);
-+ liNav.addContent(getNavSummaryLink(null, true));
- return;
-- } else {
-- ClassDoc icd = classdoc.superclass();
-- while (icd != null) {
-- List inhmembers = visibleMemberMap.getMembersFor(icd);
-- if (inhmembers.size() > 0) {
-- printNavSummaryLink(icd, true);
-- return;
-- }
-- icd = icd.superclass();
-+ }
-+ ClassDoc icd = classdoc.superclass();
-+ while (icd != null) {
-+ List<?> inhmembers = visibleMemberMap.getMembersFor(icd);
-+ if (inhmembers.size() > 0) {
-+ liNav.addContent(getNavSummaryLink(icd, true));
-+ return;
- }
-+ icd = icd.superclass();
- }
-- printNavSummaryLink(null, false);
-+ liNav.addContent(getNavSummaryLink(null, false));
- }
-
- protected void serialWarning(SourcePosition pos, String key, String a1, String a2) {
-@@ -453,12 +549,109 @@
- }
-
- /**
-- * {@inheritDoc}
-+ * Add the member summary for the given class.
-+ *
-+ * @param classDoc the class that is being documented
-+ * @param member the member being documented
-+ * @param firstSentenceTags the first sentence tags to be added to the summary
-+ * @param tableTree the content tree to which the documentation will be added
-+ * @param counter the counter for determing style for the table row
- */
-- public void writeMemberSummary(ClassDoc classDoc, ProgramElementDoc member,
-- Tag[] firstSentenceTags, boolean isFirst, boolean isLast) {
-- writer.printSummaryLinkType(this, member);
-- writeSummaryLink(classDoc, member);
-- writer.printSummaryLinkComment(this, member, firstSentenceTags);
-+ public void addMemberSummary(ClassDoc classDoc, ProgramElementDoc member,
-+ Tag[] firstSentenceTags, Content tableTree, int counter) {
-+ HtmlTree tdSummaryType = new HtmlTree(HtmlTag.TD);
-+ tdSummaryType.addStyle(HtmlStyle.colFirst);
-+ writer.addSummaryType(this, member, tdSummaryType);
-+ HtmlTree tdSummary = new HtmlTree(HtmlTag.TD);
-+ setSummaryColumnStyle(tdSummary);
-+ addSummaryLink(classDoc, member, tdSummary);
-+ writer.addSummaryLinkComment(this, member, firstSentenceTags, tdSummary);
-+ HtmlTree tr = HtmlTree.TR(tdSummaryType);
-+ tr.addContent(tdSummary);
-+ if (counter%2 == 0)
-+ tr.addStyle(HtmlStyle.altColor);
-+ else
-+ tr.addStyle(HtmlStyle.rowColor);
-+ tableTree.addContent(tr);
-+ }
-+
-+ /**
-+ * Set the style for the summary column.
-+ *
-+ * @param tdTree the column for which the style will be set
-+ */
-+ public void setSummaryColumnStyle(HtmlTree tdTree) {
-+ tdTree.addStyle(HtmlStyle.colLast);
-+ }
-+
-+ /**
-+ * Add inherited member summary for the given class and member.
-+ *
-+ * @param classDoc the class the inherited member belongs to
-+ * @param nestedClass the inherited member that is summarized
-+ * @param isFirst true if this is the first member in the list
-+ * @param isLast true if this is the last member in the list
-+ * @param linksTree the content tree to which the summary will be added
-+ */
-+ public void addInheritedMemberSummary(ClassDoc classDoc,
-+ ProgramElementDoc nestedClass, boolean isFirst, boolean isLast,
-+ Content linksTree) {
-+ writer.addInheritedMemberSummary(this, classDoc, nestedClass, isFirst,
-+ linksTree);
-+ }
-+
-+ /**
-+ * Get the inherited summary header for the given class.
-+ *
-+ * @param classDoc the class the inherited member belongs to
-+ * @return a content tree for the inherited summary header
-+ */
-+ public Content getInheritedSummaryHeader(ClassDoc classDoc) {
-+ Content inheritedTree = writer.getMemberTreeHeader();
-+ writer.addInheritedSummaryHeader(this, classDoc, inheritedTree);
-+ return inheritedTree;
-+ }
-+
-+ /**
-+ * Get the inherited summary links tree.
-+ *
-+ * @return a content tree for the inherited summary links
-+ */
-+ public Content getInheritedSummaryLinksTree() {
-+ return new HtmlTree(HtmlTag.CODE);
-+ }
-+
-+ /**
-+ * Get the summary table tree for the given class.
-+ *
-+ * @param classDoc the class for which the summary table is generated
-+ * @return a content tree for the summary table
-+ */
-+ public Content getSummaryTableTree(ClassDoc classDoc) {
-+ return writer.getSummaryTableTree(this, classDoc);
-+ }
-+
-+ /**
-+ * Get the member tree to be documented.
-+ *
-+ * @param memberTree the content tree of member to be documented
-+ * @return a content tree that will be added to the class documentation
-+ */
-+ public Content getMemberTree(Content memberTree) {
-+ return writer.getMemberTree(memberTree);
-+ }
-+
-+ /**
-+ * Get the member tree to be documented.
-+ *
-+ * @param memberTree the content tree of member to be documented
-+ * @param isLastContent true if the content to be added is the last content
-+ * @return a content tree that will be added to the class documentation
-+ */
-+ public Content getMemberTree(Content memberTree, boolean isLastContent) {
-+ if (isLastContent)
-+ return HtmlTree.UL(HtmlStyle.blockListLast, memberTree);
-+ else
-+ return HtmlTree.UL(HtmlStyle.blockList, memberTree);
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/AbstractPackageIndexWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/AbstractPackageIndexWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractPackageIndexWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractPackageIndexWriter.java
-@@ -25,9 +25,11 @@
-
- package com.sun.tools.doclets.formats.html;
-
--import com.sun.javadoc.*;
- import java.io.*;
- import java.util.*;
-+import com.sun.javadoc.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-
- /**
- * Abstract class to generate the overview files in
-@@ -56,105 +58,127 @@
- packages = configuration.packages;
- }
-
-- protected abstract void printNavigationBarHeader();
--
-- protected abstract void printNavigationBarFooter();
--
-- protected abstract void printOverviewHeader();
--
-- protected abstract void printIndexHeader(String text, String tableSummary);
--
-- protected abstract void printIndexRow(PackageDoc pkg);
--
-- protected abstract void printIndexFooter();
-+ /**
-+ * Adds the navigation bar header to the documentation tree.
-+ *
-+ * @param body the document tree to which the navigation bar header will be added
-+ */
-+ protected abstract void addNavigationBarHeader(Content body);
-
- /**
-- * Generate the contants in the package index file. Call appropriate
-+ * Adds the navigation bar footer to the documentation tree.
-+ *
-+ * @param body the document tree to which the navigation bar footer will be added
-+ */
-+ protected abstract void addNavigationBarFooter(Content body);
-+
-+ /**
-+ * Adds the overview header to the documentation tree.
-+ *
-+ * @param body the document tree to which the overview header will be added
-+ */
-+ protected abstract void addOverviewHeader(Content body);
-+
-+ /**
-+ * Adds the packages list to the documentation tree.
-+ *
-+ * @param packages an array of packagedoc objects
-+ * @param text caption for the table
-+ * @param tableSummary summary for the table
-+ * @param body the document tree to which the packages list will be added
-+ */
-+ protected abstract void addPackagesList(PackageDoc[] packages, String text,
-+ String tableSummary, Content body);
-+
-+ /**
-+ * Generate and prints the contents in the package index file. Call appropriate
- * methods from the sub-class in order to generate Frame or Non
- * Frame format.
-+ *
- * @param title the title of the window.
- * @param includeScript boolean set true if windowtitle script is to be included
- */
-- protected void generatePackageIndexFile(String title, boolean includeScript) throws IOException {
-+ protected void buildPackageIndexFile(String title, boolean includeScript) throws IOException {
- String windowOverview = configuration.getText(title);
-- printHtmlHeader(windowOverview,
-- configuration.metakeywords.getOverviewMetaKeywords(title,
-- configuration.doctitle),
-- includeScript);
-- printNavigationBarHeader();
-- printOverviewHeader();
--
-- generateIndex();
--
-- printOverview();
--
-- printNavigationBarFooter();
-- printBodyHtmlEnd();
-+ Content body = getBody(includeScript, getWindowTitle(windowOverview));
-+ addNavigationBarHeader(body);
-+ addOverviewHeader(body);
-+ addIndex(body);
-+ addOverview(body);
-+ addNavigationBarFooter(body);
-+ printHtmlDocument(configuration.metakeywords.getOverviewMetaKeywords(title,
-+ configuration.doctitle), includeScript, body);
- }
-
- /**
-- * Default to no overview, overwrite to add overview.
-+ * Default to no overview, override to add overview.
-+ *
-+ * @param body the document tree to which the overview will be added
- */
-- protected void printOverview() throws IOException {
-+ protected void addOverview(Content body) throws IOException {
- }
-
- /**
-- * Generate the frame or non-frame package index.
-+ * Adds the frame or non-frame package index to the documentation tree.
-+ *
-+ * @param body the document tree to which the index will be added
- */
-- protected void generateIndex() {
-- printIndexContents(packages, "doclet.Package_Summary",
-+ protected void addIndex(Content body) {
-+ addIndexContents(packages, "doclet.Package_Summary",
- configuration.getText("doclet.Member_Table_Summary",
- configuration.getText("doclet.Package_Summary"),
-- configuration.getText("doclet.packages")));
-+ configuration.getText("doclet.packages")), body);
- }
-
- /**
-- * Generate code for package index contents. Call appropriate methods from
-- * the sub-classes.
-+ * Adds package index contents. Call appropriate methods from
-+ * the sub-classes. Adds it to the body HtmlTree
- *
-- * @param packages Array of packages to be documented.
-- * @param text String which will be used as the heading.
-+ * @param packages array of packages to be documented
-+ * @param text string which will be used as the heading
-+ * @param tableSummary summary for the table
-+ * @param body the document tree to which the index contents will be added
- */
-- protected void printIndexContents(PackageDoc[] packages, String text, String tableSummary) {
-+ protected void addIndexContents(PackageDoc[] packages, String text,
-+ String tableSummary, Content body) {
- if (packages.length > 0) {
- Arrays.sort(packages);
-- printIndexHeader(text, tableSummary);
-- printAllClassesPackagesLink();
-- for(int i = 0; i < packages.length; i++) {
-- if (packages[i] != null) {
-- printIndexRow(packages[i]);
-- }
-- }
-- printIndexFooter();
-+ addAllClassesLink(body);
-+ addPackagesList(packages, text, tableSummary, body);
- }
- }
-
- /**
-- * Print the doctitle, if it is specified on the command line.
-+ * Adds the doctitle to the documentation tree, if it is specified on the command line.
-+ *
-+ * @param body the document tree to which the title will be added
- */
-- protected void printConfigurationTitle() {
-+ protected void addConfigurationTitle(Content body) {
- if (configuration.doctitle.length() > 0) {
-- center();
-- h1(configuration.doctitle);
-- centerEnd();
-+ Content title = new RawHtml(configuration.doctitle);
-+ Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING,
-+ HtmlStyle.title, title);
-+ Content div = HtmlTree.DIV(HtmlStyle.header, heading);
-+ body.addContent(div);
- }
- }
-
- /**
-- * Highlight "Overview" in the strong format, in the navigation bar as this
-- * is the overview page.
-+ * Returns highlighted "Overview", in the navigation bar as this is the
-+ * overview page.
-+ *
-+ * @return a Content object to be added to the documentation tree
- */
-- protected void navLinkContents() {
-- navCellRevStart();
-- fontStyle("NavBarFont1Rev");
-- strongText("doclet.Overview");
-- fontEnd();
-- navCellEnd();
-+ protected Content getNavLinkContents() {
-+ Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, overviewLabel);
-+ return li;
- }
-
- /**
- * Do nothing. This will be overridden in PackageIndexFrameWriter.
-+ *
-+ * @param body the document tree to which the all classes link will be added
- */
-- protected void printAllClassesPackagesLink() {
-+ protected void addAllClassesLink(Content body) {
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/AbstractTreeWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/AbstractTreeWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractTreeWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/AbstractTreeWriter.java
-@@ -25,11 +25,12 @@
-
- package com.sun.tools.doclets.formats.html;
-
--import com.sun.tools.doclets.internal.toolkit.util.*;
--
--import com.sun.javadoc.*;
- import java.io.*;
- import java.util.*;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.javadoc.*;
-
- /**
- * Abstract class to print the class hierarchy page for all the Classes. This
-@@ -46,6 +47,8 @@
- */
- protected final ClassTree classtree;
-
-+ private static final String LI_CIRCLE = "circle";
-+
- /**
- * Constructor initilises classtree variable. This constructor will be used
- * while generating global tree file "overview-tree.html".
-@@ -87,55 +90,64 @@
- }
-
- /**
-- * Generate each level of the class tree. For each sub-class or
-+ * Add each level of the class tree. For each sub-class or
- * sub-interface indents the next level information.
-- * Recurses itself to generate subclasses info.
-- * To iterate is human, to recurse is divine - L. Peter Deutsch.
-+ * Recurses itself to add subclasses info.
- *
-- * @param parent the superclass or superinterface of the list.
-- * @param list list of the sub-classes at this level.
-- * @param isEnum true if we are generating a tree for enums.
-+ * @param parent the superclass or superinterface of the list
-+ * @param list list of the sub-classes at this level
-+ * @param isEnum true if we are generating a tree for enums
-+ * @param contentTree the content tree to which the level information will be added
- */
-- protected void generateLevelInfo(ClassDoc parent, List list,
-- boolean isEnum) {
-- if (list.size() > 0) {
-- ul();
-- for (int i = 0; i < list.size(); i++) {
-+ protected void addLevelInfo(ClassDoc parent, List<ClassDoc> list,
-+ boolean isEnum, Content contentTree) {
-+ int size = list.size();
-+ if (size > 0) {
-+ Content ul = new HtmlTree(HtmlTag.UL);
-+ for (int i = 0; i < size; i++) {
- ClassDoc local = (ClassDoc)list.get(i);
-- printPartialInfo(local);
-- printExtendsImplements(parent, local);
-- generateLevelInfo(local, classtree.subs(local, isEnum),
-- isEnum); // Recurse
-+ HtmlTree li = new HtmlTree(HtmlTag.LI);
-+ li.addAttr(HtmlAttr.TYPE, LI_CIRCLE);
-+ addPartialInfo(local, li);
-+ addExtendsImplements(parent, local, li);
-+ addLevelInfo(local, classtree.subs(local, isEnum),
-+ isEnum, li); // Recurse
-+ ul.addContent(li);
- }
-- ulEnd();
-+ contentTree.addContent(ul);
- }
- }
-
- /**
-- * Generate the heading for the tree depending upon tree type if it's a
-- * Class Tree or Interface tree and also print the tree.
-+ * Add the heading for the tree depending upon tree type if it's a
-+ * Class Tree or Interface tree.
- *
- * @param list List of classes which are at the most base level, all the
-- * other classes in this run will derive from these classes.
-- * @param heading Heading for the tree.
-+ * other classes in this run will derive from these classes
-+ * @param heading heading for the tree
-+ * @param div the content tree to which the tree will be added
- */
-- protected void generateTree(List list, String heading) {
-+ protected void addTree(List<ClassDoc> list, String heading, Content div) {
- if (list.size() > 0) {
- ClassDoc firstClassDoc = (ClassDoc)list.get(0);
-- printTreeHeading(heading);
-- generateLevelInfo(!firstClassDoc.isInterface()? firstClassDoc : null,
-- list,
-- list == classtree.baseEnums());
-+ Content headingContent = getResource(heading);
-+ div.addContent(HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, true,
-+ headingContent));
-+ addLevelInfo(!firstClassDoc.isInterface()? firstClassDoc : null,
-+ list, list == classtree.baseEnums(), div);
- }
- }
-
- /**
-- * Print the information regarding the classes which this class extends or
-+ * Add information regarding the classes which this class extends or
- * implements.
- *
-- * @param cd The classdoc under consideration.
-+ * @param parent the parent class of the class being documented
-+ * @param cd the classdoc under consideration
-+ * @param contentTree the content tree to which the information will be added
- */
-- protected void printExtendsImplements(ClassDoc parent, ClassDoc cd) {
-+ protected void addExtendsImplements(ClassDoc parent, ClassDoc cd,
-+ Content contentTree) {
- ClassDoc[] interfaces = cd.interfaces();
- if (interfaces.length > (cd.isInterface()? 1 : 0)) {
- Arrays.sort(interfaces);
-@@ -148,53 +160,43 @@
- }
- if (counter == 0) {
- if (cd.isInterface()) {
-- print(" (" + configuration.getText("doclet.also") + " extends ");
-+ contentTree.addContent(" (");
-+ contentTree.addContent(getResource("doclet.also"));
-+ contentTree.addContent(" extends ");
- } else {
-- print(" (implements ");
-+ contentTree.addContent(" (implements ");
- }
- } else {
-- print(", ");
-+ contentTree.addContent(", ");
- }
-- printPreQualifiedClassLink(LinkInfoImpl.CONTEXT_TREE,
-- interfaces[i]);
-+ addPreQualifiedClassLink(LinkInfoImpl.CONTEXT_TREE,
-+ interfaces[i], contentTree);
- counter++;
- }
- }
- if (counter > 0) {
-- println(")");
-+ contentTree.addContent(")");
- }
- }
- }
-
- /**
-- * Print information about the class kind, if it's a "class" or "interface".
-+ * Add information about the class kind, if it's a "class" or "interface".
- *
-- * @param cd classdoc.
-+ * @param cd the class being documented
-+ * @param contentTree the content tree to which the information will be added
- */
-- protected void printPartialInfo(ClassDoc cd) {
-- li("circle");
-- printPreQualifiedStrongClassLink(LinkInfoImpl.CONTEXT_TREE, cd);
-+ protected void addPartialInfo(ClassDoc cd, Content contentTree) {
-+ addPreQualifiedStrongClassLink(LinkInfoImpl.CONTEXT_TREE, cd, contentTree);
- }
-
- /**
-- * Print the heading for the tree.
-+ * Get the tree label for the navigation bar.
- *
-- * @param heading Heading for the tree.
-+ * @return a content tree for the tree label
- */
-- protected void printTreeHeading(String heading) {
-- h2();
-- println(configuration.getText(heading));
-- h2End();
-- }
--
-- /**
-- * Highlight "Tree" word in the navigation bar, since this is the tree page.
-- */
-- protected void navLinkTree() {
-- navCellRevStart();
-- fontStyle("NavBarFont1Rev");
-- strongText("doclet.Tree");
-- fontEnd();
-- navCellEnd();
-+ protected Content getNavLinkTree() {
-+ Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, treeLabel);
-+ return li;
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/AllClassesFrameWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/AllClassesFrameWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/AllClassesFrameWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/AllClassesFrameWriter.java
-@@ -25,11 +25,14 @@
-
- package com.sun.tools.doclets.formats.html;
-
--import com.sun.tools.doclets.internal.toolkit.util.*;
--import com.sun.javadoc.*;
- import java.io.*;
- import java.util.*;
-
-+import com.sun.javadoc.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+
- /**
- * Generate the file with list of all the classes in this run. This page will be
- * used in the left-hand bottom frame, when "All Classes" link is clicked in
-@@ -38,6 +41,7 @@
- *
- * @author Atul M Dambalkar
- * @author Doug Kramer
-+ * @author Bhavesh Patel (Modified)
- */
- public class AllClassesFrameWriter extends HtmlDocletWriter {
-
-@@ -57,6 +61,11 @@
- protected IndexBuilder indexbuilder;
-
- /**
-+ * BR tag to be used within a document tree.
-+ */
-+ final HtmlTree BR = new HtmlTree(HtmlTag.BR);
-+
-+ /**
- * Construct AllClassesFrameWriter object. Also initilises the indexbuilder
- * variable in this class.
- * @throws IOException
-@@ -84,12 +93,12 @@
- try {
- allclassgen = new AllClassesFrameWriter(configuration,
- filename, indexbuilder);
-- allclassgen.generateAllClassesFile(true);
-+ allclassgen.buildAllClassesFile(true);
- allclassgen.close();
- filename = OUTPUT_FILE_NAME_NOFRAMES;
- allclassgen = new AllClassesFrameWriter(configuration,
- filename, indexbuilder);
-- allclassgen.generateAllClassesFile(false);
-+ allclassgen.buildAllClassesFile(false);
- allclassgen.close();
- } catch (IOException exc) {
- configuration.standardmessage.
-@@ -100,30 +109,34 @@
- }
-
- /**
-- * Print all the classes in table format in the file.
-+ * Print all the classes in the file.
- * @param wantFrames True if we want frames.
- */
-- protected void generateAllClassesFile(boolean wantFrames) throws IOException {
-+ protected void buildAllClassesFile(boolean wantFrames) throws IOException {
- String label = configuration.getText("doclet.All_Classes");
--
-- printHtmlHeader(label, null, false);
--
-- printAllClassesTableHeader();
-- printAllClasses(wantFrames);
-- printAllClassesTableFooter();
--
-- printBodyHtmlEnd();
-+ Content body = getBody(false, getWindowTitle(label));
-+ Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING,
-+ HtmlStyle.bar, allclassesLabel);
-+ body.addContent(heading);
-+ Content ul = new HtmlTree(HtmlTag.UL);
-+ // Generate the class links and add it to the tdFont tree.
-+ addAllClasses(ul, wantFrames);
-+ Content div = HtmlTree.DIV(HtmlStyle.indexContainer, ul);
-+ body.addContent(div);
-+ printHtmlDocument(null, false, body);
- }
-
- /**
-- * Use the sorted index of all the classes and print all the classes.
-+ * Use the sorted index of all the classes and add all the classes to the
-+ * content list.
- *
-+ * @param content HtmlTree content to which all classes information will be added
- * @param wantFrames True if we want frames.
- */
-- protected void printAllClasses(boolean wantFrames) {
-+ protected void addAllClasses(Content content, boolean wantFrames) {
- for (int i = 0; i < indexbuilder.elements().length; i++) {
- Character unicode = (Character)((indexbuilder.elements())[i]);
-- generateContents(indexbuilder.getMemberList(unicode), wantFrames);
-+ addContents(indexbuilder.getMemberList(unicode), wantFrames, content);
- }
- }
-
-@@ -136,46 +149,25 @@
- *
- * @param classlist Sorted list of classes.
- * @param wantFrames True if we want frames.
-+ * @param content HtmlTree content to which the links will be added
- */
-- protected void generateContents(List classlist, boolean wantFrames) {
-+ protected void addContents(List<Doc> classlist, boolean wantFrames,
-+ Content content) {
- for (int i = 0; i < classlist.size(); i++) {
- ClassDoc cd = (ClassDoc)(classlist.get(i));
- if (!Util.isCoreClass(cd)) {
- continue;
- }
- String label = italicsClassName(cd, false);
-+ Content linkContent;
- if(wantFrames){
-- printLink(new LinkInfoImpl(LinkInfoImpl.ALL_CLASSES_FRAME, cd,
-- label, "classFrame")
-- );
-+ linkContent = new RawHtml(getLink(new LinkInfoImpl(
-+ LinkInfoImpl.ALL_CLASSES_FRAME, cd, label, "classFrame")));
- } else {
-- printLink(new LinkInfoImpl(cd, label));
-+ linkContent = new RawHtml(getLink(new LinkInfoImpl(cd, label)));
- }
-- br();
-+ Content li = HtmlTree.LI(linkContent);
-+ content.addContent(li);
- }
- }
--
-- /**
-- * Print the heading "All Classes" and also print Html table tag.
-- */
-- protected void printAllClassesTableHeader() {
-- fontSizeStyle("+1", "FrameHeadingFont");
-- strongText("doclet.All_Classes");
-- fontEnd();
-- br();
-- table();
-- tr();
-- tdNowrap();
-- fontStyle("FrameItemFont");
-- }
--
-- /**
-- * Print Html closing table tag.
-- */
-- protected void printAllClassesTableFooter() {
-- fontEnd();
-- tdEnd();
-- trEnd();
-- tableEnd();
-- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java
-@@ -28,6 +28,7 @@
- import java.io.*;
-
- import com.sun.javadoc.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
- import com.sun.tools.doclets.internal.toolkit.*;
-
- /**
-@@ -54,29 +55,26 @@
- /**
- * {@inheritDoc}
- */
-- public void writeMemberSummaryHeader(ClassDoc classDoc) {
-- writer.println("<!-- =========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY =========== -->");
-- writer.println();
-- writer.printSummaryHeader(this, classDoc);
-+ public Content getMemberSummaryHeader(ClassDoc classDoc,
-+ Content memberSummaryTree) {
-+ memberSummaryTree.addContent(
-+ HtmlConstants.START_OF_ANNOTATION_TYPE_OPTIONAL_MEMBER_SUMMARY);
-+ Content memberTree = writer.getMemberTreeHeader();
-+ writer.addSummaryHeader(this, classDoc, memberTree);
-+ return memberTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeDefaultValueInfo(MemberDoc member) {
-+ public void addDefaultValueInfo(MemberDoc member, Content annotationDocTree) {
- if (((AnnotationTypeElementDoc) member).defaultValue() != null) {
-- writer.printMemberDetailsListStartTag();
-- writer.dd();
-- writer.dl();
-- writer.dt();
-- writer.strong(ConfigurationImpl.getInstance().
-- getText("doclet.Default"));
-- writer.dtEnd();
-- writer.dd();
-- writer.print(((AnnotationTypeElementDoc) member).defaultValue());
-- writer.ddEnd();
-- writer.dlEnd();
-- writer.ddEnd();
-+ Content dt = HtmlTree.DT(writer.getResource("doclet.Default"));
-+ Content dl = HtmlTree.DL(dt);
-+ Content dd = HtmlTree.DD(new StringContent(
-+ ((AnnotationTypeElementDoc) member).defaultValue().toString()));
-+ dl.addContent(dd);
-+ annotationDocTree.addContent(dl);
- }
- }
-
-@@ -90,45 +88,58 @@
- /**
- * {@inheritDoc}
- */
-- public void printSummaryLabel() {
-- writer.printText("doclet.Annotation_Type_Optional_Member_Summary");
-+ public void addSummaryLabel(Content memberTree) {
-+ Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
-+ writer.getResource("doclet.Annotation_Type_Optional_Member_Summary"));
-+ memberTree.addContent(label);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void printTableSummary() {
-- writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
-+ public String getTableSummary() {
-+ return configuration().getText("doclet.Member_Table_Summary",
- configuration().getText("doclet.Annotation_Type_Optional_Member_Summary"),
-- configuration().getText("doclet.annotation_type_optional_members")));
-+ configuration().getText("doclet.annotation_type_optional_members"));
- }
-
-- public void printSummaryTableHeader(ProgramElementDoc member) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getCaption() {
-+ return configuration().getText("doclet.Annotation_Type_Optional_Members");
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String[] getSummaryTableHeader(ProgramElementDoc member) {
- String[] header = new String[] {
- writer.getModifierTypeHeader(),
- configuration().getText("doclet.0_and_1",
- configuration().getText("doclet.Annotation_Type_Optional_Member"),
- configuration().getText("doclet.Description"))
- };
-- writer.summaryTableHeader(header, "col");
-+ return header;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void printSummaryAnchor(ClassDoc cd) {
-- writer.anchor("annotation_type_optional_element_summary");
-+ public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
-+ memberTree.addContent(writer.getMarkerAnchor(
-+ "annotation_type_optional_element_summary"));
- }
-
- /**
- * {@inheritDoc}
- */
-- protected void printNavSummaryLink(ClassDoc cd, boolean link) {
-+ protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
- if (link) {
-- writer.printHyperLink("", "annotation_type_optional_element_summary",
-- configuration().getText("doclet.navAnnotationTypeOptionalMember"));
-+ return writer.getHyperLink("", "annotation_type_optional_element_summary",
-+ writer.getResource("doclet.navAnnotationTypeOptionalMember"));
- } else {
-- writer.printText("doclet.navAnnotationTypeOptionalMember");
-+ return writer.getResource("doclet.navAnnotationTypeOptionalMember");
- }
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java
-@@ -28,6 +28,7 @@
- import java.io.*;
-
- import com.sun.javadoc.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
- import com.sun.tools.doclets.internal.toolkit.*;
-
- /**
-@@ -51,122 +52,102 @@
- }
-
- /**
-- * Write the annotation type member summary header for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-+ * {@inheritDoc}
- */
-- public void writeMemberSummaryHeader(ClassDoc classDoc) {
-- writer.println("<!-- =========== ANNOTATION TYPE REQUIRED MEMBER SUMMARY =========== -->");
-- writer.println();
-- writer.printSummaryHeader(this, classDoc);
-- }
--
-- /**
-- * Write the annotation type member summary footer for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeMemberSummaryFooter(ClassDoc classDoc) {
-- writer.printSummaryFooter(this, classDoc);
-+ public Content getMemberSummaryHeader(ClassDoc classDoc,
-+ Content memberSummaryTree) {
-+ memberSummaryTree.addContent(
-+ HtmlConstants.START_OF_ANNOTATION_TYPE_REQUIRED_MEMBER_SUMMARY);
-+ Content memberTree = writer.getMemberTreeHeader();
-+ writer.addSummaryHeader(this, classDoc, memberTree);
-+ return memberTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-- //Not appliable.
-+ public void addAnnotationDetailsTreeHeader(ClassDoc classDoc,
-+ Content memberDetailsTree) {
-+ if (!writer.printedAnnotationHeading) {
-+ memberDetailsTree.addContent(writer.getMarkerAnchor(
-+ "annotation_type_element_detail"));
-+ Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
-+ writer.annotationTypeDetailsLabel);
-+ memberDetailsTree.addContent(heading);
-+ writer.printedAnnotationHeading = true;
-+ }
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeInheritedMemberSummary(ClassDoc classDoc,
-- ProgramElementDoc member, boolean isFirst, boolean isLast) {
-- //Not appliable.
-+ public Content getAnnotationDocTreeHeader(MemberDoc member,
-+ Content annotationDetailsTree) {
-+ annotationDetailsTree.addContent(
-+ writer.getMarkerAnchor(member.name() +
-+ ((ExecutableMemberDoc) member).signature()));
-+ Content annotationDocTree = writer.getMemberTreeHeader();
-+ Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
-+ heading.addContent(member.name());
-+ annotationDocTree.addContent(heading);
-+ return annotationDocTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {
-- //Not appliable.
-+ public Content getSignature(MemberDoc member) {
-+ Content pre = new HtmlTree(HtmlTag.PRE);
-+ writer.addAnnotationInfo(member, pre);
-+ addModifiers(member, pre);
-+ Content link = new RawHtml(
-+ writer.getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-+ getType(member))));
-+ pre.addContent(link);
-+ pre.addContent(writer.getSpace());
-+ if (configuration().linksource) {
-+ Content memberName = new StringContent(member.name());
-+ writer.addSrcLink(member, memberName, pre);
-+ } else {
-+ addName(member.name(), pre);
-+ }
-+ return pre;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeHeader(ClassDoc classDoc, String header) {
-- writer.println();
-- writer.println("<!-- ============ ANNOTATION TYPE MEMBER DETAIL =========== -->");
-- writer.println();
-- writer.anchor("annotation_type_element_detail");
-- writer.printTableHeadingBackground(header);
-- writer.println();
-+ public void addDeprecated(MemberDoc member, Content annotationDocTree) {
-+ addDeprecatedInfo(member, annotationDocTree);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeMemberHeader(MemberDoc member, boolean isFirst) {
-- if (! isFirst) {
-- writer.printMemberHeader();
-- writer.println("");
-- }
-- writer.anchor(member.name() + ((ExecutableMemberDoc) member).signature());
-- writer.h3();
-- writer.print(member.name());
-- writer.h3End();
-+ public void addComments(MemberDoc member, Content annotationDocTree) {
-+ addComment(member, annotationDocTree);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeSignature(MemberDoc member) {
-- writer.pre();
-- writer.writeAnnotationInfo(member);
-- printModifiers(member);
-- writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-- getType(member)));
-- print(' ');
-- if (configuration().linksource) {
-- writer.printSrcLink(member, member.name());
-- } else {
-- strong(member.name());
-- }
-- writer.preEnd();
-- assert !writer.getMemberDetailsListPrinted();
-+ public void addTags(MemberDoc member, Content annotationDocTree) {
-+ writer.addTagsInfo(member, annotationDocTree);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeComments(MemberDoc member) {
-- printComment(member);
-+ public Content getAnnotationDetails(Content annotationDetailsTree) {
-+ return getMemberTree(annotationDetailsTree);
- }
-
- /**
-- * Write the tag output for the given member.
-- *
-- * @param member the member being documented.
-+ * {@inheritDoc}
- */
-- public void writeTags(MemberDoc member) {
-- writer.printTags(member);
-- }
--
-- /**
-- * Write the annotation type member footer.
-- */
-- public void writeMemberFooter() {
-- printMemberFooter();
-- }
--
-- /**
-- * Write the footer for the annotation type member documentation.
-- *
-- * @param classDoc the class that the annotation type member belong to.
-- */
-- public void writeFooter(ClassDoc classDoc) {
-- //No footer to write for annotation type member documentation
-+ public Content getAnnotationDoc(Content annotationDocTree,
-+ boolean isLastContent) {
-+ return getMemberTree(annotationDocTree, isLastContent);
- }
-
- /**
-@@ -179,113 +160,120 @@
- /**
- * {@inheritDoc}
- */
-- public void printSummaryLabel() {
-- writer.printText("doclet.Annotation_Type_Required_Member_Summary");
-+ public void addSummaryLabel(Content memberTree) {
-+ Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
-+ writer.getResource("doclet.Annotation_Type_Required_Member_Summary"));
-+ memberTree.addContent(label);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void printTableSummary() {
-- writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
-+ public String getTableSummary() {
-+ return configuration().getText("doclet.Member_Table_Summary",
- configuration().getText("doclet.Annotation_Type_Required_Member_Summary"),
-- configuration().getText("doclet.annotation_type_required_members")));
-+ configuration().getText("doclet.annotation_type_required_members"));
- }
-
-- public void printSummaryTableHeader(ProgramElementDoc member) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getCaption() {
-+ return configuration().getText("doclet.Annotation_Type_Required_Members");
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String[] getSummaryTableHeader(ProgramElementDoc member) {
- String[] header = new String[] {
- writer.getModifierTypeHeader(),
- configuration().getText("doclet.0_and_1",
- configuration().getText("doclet.Annotation_Type_Required_Member"),
- configuration().getText("doclet.Description"))
- };
-- writer.summaryTableHeader(header, "col");
-+ return header;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void printSummaryAnchor(ClassDoc cd) {
-- writer.anchor("annotation_type_required_element_summary");
-+ public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
-+ memberTree.addContent(writer.getMarkerAnchor(
-+ "annotation_type_required_element_summary"));
- }
-
- /**
- * {@inheritDoc}
- */
-- public void printInheritedSummaryAnchor(ClassDoc cd) {
-- } // no such
--
-- /**
-- * {@inheritDoc}
-- */
-- public void printInheritedSummaryLabel(ClassDoc cd) {
-- // no such
-+ public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
- }
-
- /**
- * {@inheritDoc}
- */
-- protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
-- writer.strong();
-- writer.printDocLink(context, (MemberDoc) member, member.name(), false);
-- writer.strongEnd();
-+ public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
- }
-
- /**
- * {@inheritDoc}
- */
-- protected void writeInheritedSummaryLink(ClassDoc cd,
-- ProgramElementDoc member) {
-+ protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
-+ Content tdSummary) {
-+ Content strong = HtmlTree.STRONG(new RawHtml(
-+ writer.getDocLink(context, (MemberDoc) member, member.name(), false)));
-+ Content code = HtmlTree.CODE(strong);
-+ tdSummary.addContent(code);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addInheritedSummaryLink(ClassDoc cd,
-+ ProgramElementDoc member, Content linksTree) {
- //Not applicable.
- }
-
- /**
- * {@inheritDoc}
- */
-- protected void printSummaryType(ProgramElementDoc member) {
-+ protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
- MemberDoc m = (MemberDoc)member;
-- printModifierAndType(m, getType(m));
-+ addModifierAndType(m, getType(m), tdSummaryType);
- }
-
- /**
- * {@inheritDoc}
- */
-- protected void writeDeprecatedLink(ProgramElementDoc member) {
-- writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER,
-- (MemberDoc) member, ((MemberDoc)member).qualifiedName(), false);
-+ protected Content getDeprecatedLink(ProgramElementDoc member) {
-+ return writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER,
-+ (MemberDoc) member, ((MemberDoc)member).qualifiedName());
- }
-
- /**
- * {@inheritDoc}
- */
-- protected void printNavSummaryLink(ClassDoc cd, boolean link) {
-+ protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
- if (link) {
-- writer.printHyperLink("", "annotation_type_required_element_summary",
-- configuration().getText("doclet.navAnnotationTypeRequiredMember"));
-+ return writer.getHyperLink("", "annotation_type_required_element_summary",
-+ writer.getResource("doclet.navAnnotationTypeRequiredMember"));
- } else {
-- writer.printText("doclet.navAnnotationTypeRequiredMember");
-+ return writer.getResource("doclet.navAnnotationTypeRequiredMember");
- }
- }
-
- /**
- * {@inheritDoc}
- */
-- protected void printNavDetailLink(boolean link) {
-+ protected void addNavDetailLink(boolean link, Content liNav) {
- if (link) {
-- writer.printHyperLink("", "annotation_type_element_detail",
-- configuration().getText("doclet.navAnnotationTypeMember"));
-+ liNav.addContent(writer.getHyperLink("", "annotation_type_element_detail",
-+ writer.getResource("doclet.navAnnotationTypeMember")));
- } else {
-- writer.printText("doclet.navAnnotationTypeMember");
-+ liNav.addContent(writer.getResource("doclet.navAnnotationTypeMember"));
- }
- }
-
-- /**
-- * {@inheritDoc}
-- */
-- public void writeDeprecated(MemberDoc member) {
-- printDeprecated(member);
-- }
--
- private Type getType(MemberDoc member) {
- if (member instanceof FieldDoc) {
- return ((FieldDoc) member).type();
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/AnnotationTypeWriterImpl.java
-@@ -29,6 +29,7 @@
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.builders.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Generate the Class Information Page.
-@@ -40,6 +41,7 @@
- *
- * @author Atul M Dambalkar
- * @author Robert Field
-+ * @author Bhavesh Patel (Modified)
- */
- public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
- implements AnnotationTypeWriter {
-@@ -69,126 +71,168 @@
- }
-
- /**
-- * Print this package link
-+ * Get this package link.
-+ *
-+ * @return a content tree for the package link
- */
-- protected void navLinkPackage() {
-- navCellStart();
-- printHyperLink("package-summary.html", "",
-- configuration.getText("doclet.Package"), true, "NavBarFont1");
-- navCellEnd();
-+ protected Content getNavLinkPackage() {
-+ Content linkContent = getHyperLink("package-summary.html", "",
-+ packageLabel);
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
- }
-
- /**
-- * Print class page indicator
-+ * Get the class link.
-+ *
-+ * @return a content tree for the class link
- */
-- protected void navLinkClass() {
-- navCellRevStart();
-- fontStyle("NavBarFont1Rev");
-- strongText("doclet.Class");
-- fontEnd();
-- navCellEnd();
-+ protected Content getNavLinkClass() {
-+ Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, classLabel);
-+ return li;
- }
-
- /**
-- * Print class use link
-+ * Get the class use link.
-+ *
-+ * @return a content tree for the class use link
- */
-- protected void navLinkClassUse() {
-- navCellStart();
-- printHyperLink("class-use/" + filename, "",
-- configuration.getText("doclet.navClassUse"), true, "NavBarFont1");
-- navCellEnd();
-+ protected Content getNavLinkClassUse() {
-+ Content linkContent = getHyperLink("class-use/" + filename, "", useLabel);
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
- }
-
- /**
-- * Print previous package link
-+ * Get link to previous class.
-+ *
-+ * @return a content tree for the previous class link
- */
-- protected void navLinkPrevious() {
-- if (prev == null) {
-- printText("doclet.Prev_Class");
-- } else {
-- printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS,
-- prev.asClassDoc(), "",
-- configuration.getText("doclet.Prev_Class"), true));
-+ public Content getNavLinkPrevious() {
-+ Content li;
-+ if (prev != null) {
-+ Content prevLink = new RawHtml(getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CLASS, prev.asClassDoc(), "",
-+ configuration.getText("doclet.Prev_Class"), true)));
-+ li = HtmlTree.LI(prevLink);
- }
-+ else
-+ li = HtmlTree.LI(prevclassLabel);
-+ return li;
- }
-
- /**
-- * Print next package link
-+ * Get link to next class.
-+ *
-+ * @return a content tree for the next class link
- */
-- protected void navLinkNext() {
-- if (next == null) {
-- printText("doclet.Next_Class");
-- } else {
-- printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS,
-- next.asClassDoc(), "",
-- configuration.getText("doclet.Next_Class"), true));
-+ public Content getNavLinkNext() {
-+ Content li;
-+ if (next != null) {
-+ Content nextLink = new RawHtml(getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CLASS, next.asClassDoc(), "",
-+ configuration.getText("doclet.Next_Class"), true)));
-+ li = HtmlTree.LI(nextLink);
- }
-+ else
-+ li = HtmlTree.LI(nextclassLabel);
-+ return li;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeHeader(String header) {
--
-+ public Content getHeader(String header) {
- String pkgname = (annotationType.containingPackage() != null)?
- annotationType.containingPackage().name(): "";
- String clname = annotationType.name();
--
-- printHtmlHeader(clname,
-- configuration.metakeywords.getMetaKeywords(annotationType), true);
-- printTop();
-- navLinks(true);
-- hr();
-- println("<!-- ======== START OF CLASS DATA ======== -->");
-- h2();
-+ Content bodyTree = getBody(true, getWindowTitle(clname));
-+ addTop(bodyTree);
-+ addNavLinks(true, bodyTree);
-+ bodyTree.addContent(HtmlConstants.START_OF_CLASS_DATA);
-+ HtmlTree div = new HtmlTree(HtmlTag.DIV);
-+ div.addStyle(HtmlStyle.header);
- if (pkgname.length() > 0) {
-- font("-1"); print(pkgname); fontEnd(); br();
-+ Content pkgNameContent = new StringContent(pkgname);
-+ Content pkgNamePara = HtmlTree.P(HtmlStyle.subTitle, pkgNameContent);
-+ div.addContent(pkgNamePara);
- }
-- print(header + getTypeParameterLinks(new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_CLASS_HEADER,
-- annotationType, false)));
-- h2End();
-+ LinkInfoImpl linkInfo = new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CLASS_HEADER, annotationType, false);
-+ Content headerContent = new StringContent(header);
-+ Content heading = HtmlTree.HEADING(HtmlConstants.CLASS_PAGE_HEADING, true,
-+ HtmlStyle.title, headerContent);
-+ heading.addContent(new RawHtml(getTypeParameterLinks(linkInfo)));
-+ div.addContent(heading);
-+ bodyTree.addContent(div);
-+ return bodyTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeFooter() {
-- println("<!-- ========= END OF CLASS DATA ========= -->");
-- hr();
-- navLinks(false);
-- printBottom();
-- printBodyHtmlEnd();
-+ public Content getAnnotationContentHeader() {
-+ return getContentHeader();
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeAnnotationTypeSignature(String modifiers) {
-- preNoNewLine();
-- writeAnnotationInfo(annotationType);
-- print(modifiers);
-- String name = annotationType.name() +
-- getTypeParameterLinks(new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_CLASS_SIGNATURE, annotationType, false));
-- if (configuration().linksource) {
-- printSrcLink(annotationType, name);
-- } else {
-- strong(name);
-- }
-- preEnd();
-- p();
-+ public void addFooter(Content contentTree) {
-+ contentTree.addContent(HtmlConstants.END_OF_CLASS_DATA);
-+ addNavLinks(false, contentTree);
-+ addBottom(contentTree);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeAnnotationTypeDescription() {
-+ public void printDocument(Content contentTree) {
-+ printHtmlDocument(configuration.metakeywords.getMetaKeywords(annotationType),
-+ true, contentTree);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public Content getAnnotationInfoTreeHeader() {
-+ return getMemberTreeHeader();
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public Content getAnnotationInfo(Content annotationInfoTree) {
-+ return getMemberTree(HtmlStyle.description, annotationInfoTree);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addAnnotationTypeSignature(String modifiers, Content annotationInfoTree) {
-+ annotationInfoTree.addContent(new HtmlTree(HtmlTag.BR));
-+ Content pre = new HtmlTree(HtmlTag.PRE);
-+ addAnnotationInfo(annotationType, pre);
-+ pre.addContent(modifiers);
-+ LinkInfoImpl linkInfo = new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CLASS_SIGNATURE, annotationType, false);
-+ Content name = new RawHtml (annotationType.name() +
-+ getTypeParameterLinks(linkInfo));
-+ if (configuration().linksource) {
-+ addSrcLink(annotationType, name, pre);
-+ } else {
-+ pre.addContent(HtmlTree.STRONG(name));
-+ }
-+ annotationInfoTree.addContent(pre);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addAnnotationTypeDescription(Content annotationInfoTree) {
- if(!configuration.nocomment) {
-- // generate documentation for the class.
- if (annotationType.inlineTags().length > 0) {
-- printInlineComment(annotationType);
-- p();
-+ addInlineComment(annotationType, annotationInfoTree);
- }
- }
- }
-@@ -196,148 +240,152 @@
- /**
- * {@inheritDoc}
- */
-- public void writeAnnotationTypeTagInfo() {
-- boolean needHr = annotationType.elements().length > 0;
-+ public void addAnnotationTypeTagInfo(Content annotationInfoTree) {
- if(!configuration.nocomment) {
-- // Print Information about all the tags here
-- printTags(annotationType);
-- if (needHr) {
-- hr();
-- }
-- p();
-- } else if (needHr) {
-- hr();
-+ addTagsInfo(annotationType, annotationInfoTree);
- }
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeAnnotationTypeDeprecationInfo() {
-- hr();
-+ public void addAnnotationTypeDeprecationInfo(Content annotationInfoTree) {
-+ Content hr = new HtmlTree(HtmlTag.HR);
-+ annotationInfoTree.addContent(hr);
- Tag[] deprs = annotationType.tags("deprecated");
- if (Util.isDeprecated(annotationType)) {
-- strongText("doclet.Deprecated");
-+ Content strong = HtmlTree.STRONG(deprecatedPhrase);
-+ Content div = HtmlTree.DIV(HtmlStyle.block, strong);
- if (deprs.length > 0) {
- Tag[] commentTags = deprs[0].inlineTags();
- if (commentTags.length > 0) {
--
-- space();
-- printInlineDeprecatedComment(annotationType, deprs[0]);
-+ div.addContent(getSpace());
-+ addInlineDeprecatedComment(annotationType, deprs[0], div);
- }
- }
-- p();
-+ annotationInfoTree.addContent(div);
- }
- }
-
-- protected void navLinkTree() {
-- navCellStart();
-- printHyperLink("package-tree.html", "",
-- configuration.getText("doclet.Tree"), true, "NavBarFont1");
-- navCellEnd();
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addAnnotationDetailsMarker(Content memberDetails) {
-+ memberDetails.addContent(HtmlConstants.START_OF_ANNOTATION_TYPE_DETAILS);
- }
-
-- protected void printSummaryDetailLinks() {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected Content getNavLinkTree() {
-+ Content treeLinkContent = getHyperLink("package-tree.html",
-+ "", treeLabel, "", "");
-+ Content li = HtmlTree.LI(treeLinkContent);
-+ return li;
-+ }
-+
-+ /**
-+ * Add summary details to the navigation bar.
-+ *
-+ * @param subDiv the content tree to which the summary detail links will be added
-+ */
-+ protected void addSummaryDetailLinks(Content subDiv) {
- try {
-- tr();
-- tdVAlignClass("top", "NavBarCell3");
-- font("-2");
-- print(" ");
-- navSummaryLinks();
-- fontEnd();
-- tdEnd();
--
-- tdVAlignClass("top", "NavBarCell3");
-- font("-2");
-- navDetailLinks();
-- fontEnd();
-- tdEnd();
-- trEnd();
-+ Content div = HtmlTree.DIV(getNavSummaryLinks());
-+ div.addContent(getNavDetailLinks());
-+ subDiv.addContent(div);
- } catch (Exception e) {
- e.printStackTrace();
- throw new DocletAbortException();
- }
- }
-
-- protected void navSummaryLinks() throws Exception {
-- printText("doclet.Summary");
-- space();
-+ /**
-+ * Get summary links for navigation bar.
-+ *
-+ * @return the content tree for the navigation summary links
-+ */
-+ protected Content getNavSummaryLinks() throws Exception {
-+ Content li = HtmlTree.LI(summaryLabel);
-+ li.addContent(getSpace());
-+ Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li);
- MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder)
-- configuration.getBuilderFactory().getMemberSummaryBuilder(this);
-- writeNavSummaryLink(memberSummaryBuilder,
-- "doclet.navAnnotationTypeRequiredMember",
-- VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED);
-- navGap();
-- writeNavSummaryLink(memberSummaryBuilder,
-- "doclet.navAnnotationTypeOptionalMember",
-- VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL);
-+ configuration.getBuilderFactory().getMemberSummaryBuilder(this);
-+ Content liNavReq = new HtmlTree(HtmlTag.LI);
-+ addNavSummaryLink(memberSummaryBuilder,
-+ "doclet.navAnnotationTypeRequiredMember",
-+ VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED, liNavReq);
-+ addNavGap(liNavReq);
-+ ulNav.addContent(liNavReq);
-+ Content liNavOpt = new HtmlTree(HtmlTag.LI);
-+ addNavSummaryLink(memberSummaryBuilder,
-+ "doclet.navAnnotationTypeOptionalMember",
-+ VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL, liNavOpt);
-+ ulNav.addContent(liNavOpt);
-+ return ulNav;
- }
-
-- private void writeNavSummaryLink(MemberSummaryBuilder builder,
-- String label, int type) {
-+ /**
-+ * Add the navigation summary link.
-+ *
-+ * @param builder builder for the member to be documented
-+ * @param label the label for the navigation
-+ * @param type type to be documented
-+ * @param liNav the content tree to which the navigation summary link will be added
-+ */
-+ protected void addNavSummaryLink(MemberSummaryBuilder builder,
-+ String label, int type, Content liNav) {
- AbstractMemberWriter writer = ((AbstractMemberWriter) builder.
-- getMemberSummaryWriter(type));
-+ getMemberSummaryWriter(type));
- if (writer == null) {
-- printText(label);
-+ liNav.addContent(getResource(label));
- } else {
-- writer.printNavSummaryLink(null,
-- ! builder.getVisibleMemberMap(type).noVisibleMembers());
-+ liNav.addContent(writer.getNavSummaryLink(null,
-+ ! builder.getVisibleMemberMap(type).noVisibleMembers()));
- }
- }
-
- /**
-- * Method navDetailLinks
-+ * Get detail links for the navigation bar.
- *
-- * @throws Exception
-- *
-+ * @return the content tree for the detail links
- */
-- protected void navDetailLinks() throws Exception {
-- printText("doclet.Detail");
-- space();
-+ protected Content getNavDetailLinks() throws Exception {
-+ Content li = HtmlTree.LI(detailLabel);
-+ li.addContent(getSpace());
-+ Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li);
- MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder)
-- configuration.getBuilderFactory().getMemberSummaryBuilder(this);
-+ configuration.getBuilderFactory().getMemberSummaryBuilder(this);
- AbstractMemberWriter writerOptional =
-- ((AbstractMemberWriter) memberSummaryBuilder.
-+ ((AbstractMemberWriter) memberSummaryBuilder.
- getMemberSummaryWriter(VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL));
- AbstractMemberWriter writerRequired =
-- ((AbstractMemberWriter) memberSummaryBuilder.
-+ ((AbstractMemberWriter) memberSummaryBuilder.
- getMemberSummaryWriter(VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED));
- if (writerOptional != null){
-- writerOptional.printNavDetailLink(annotationType.elements().length > 0);
-+ Content liNavOpt = new HtmlTree(HtmlTag.LI);
-+ writerOptional.addNavDetailLink(annotationType.elements().length > 0, liNavOpt);
-+ ulNav.addContent(liNavOpt);
- } else if (writerRequired != null){
-- writerRequired.printNavDetailLink(annotationType.elements().length > 0);
-+ Content liNavReq = new HtmlTree(HtmlTag.LI);
-+ writerRequired.addNavDetailLink(annotationType.elements().length > 0, liNavReq);
-+ ulNav.addContent(liNavReq);
- } else {
-- printText("doclet.navAnnotationTypeMember");
-+ Content liNav = HtmlTree.LI(getResource("doclet.navAnnotationTypeMember"));
-+ ulNav.addContent(liNav);
- }
-- }
--
-- protected void navGap() {
-- space();
-- print('|');
-- space();
-+ return ulNav;
- }
-
- /**
-- * If this is an inner class or interface, write the enclosing class or
-- * interface.
-+ * Add gap between navigation bar elements.
-+ *
-+ * @param liNav the content tree to which the gap will be added
- */
-- public void writeNestedClassInfo() {
-- ClassDoc outerClass = annotationType.containingClass();
-- if (outerClass != null) {
-- dl();
-- dt();
-- if (annotationType.isInterface()) {
-- strongText("doclet.Enclosing_Interface");
-- } else {
-- strongText("doclet.Enclosing_Class");
-- }
-- dtEnd();
-- dd();
-- printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, outerClass,
-- false));
-- ddEnd();
-- dlEnd();
-- }
-+ protected void addNavGap(Content liNav) {
-+ liNav.addContent(getSpace());
-+ liNav.addContent("|");
-+ liNav.addContent(getSpace());
- }
-
- /**
-@@ -346,11 +394,4 @@
- public AnnotationTypeDoc getAnnotationTypeDoc() {
- return annotationType;
- }
--
-- /**
-- * {@inheritDoc}
-- */
-- public void completeMemberSummaryBuild() {
-- p();
-- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/ClassUseWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/ClassUseWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassUseWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassUseWriter.java
-@@ -25,10 +25,12 @@
-
- package com.sun.tools.doclets.formats.html;
-
--import com.sun.tools.doclets.internal.toolkit.util.*;
--import com.sun.javadoc.*;
- import java.io.*;
- import java.util.*;
-+import com.sun.javadoc.*;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-
- /**
- * Generate class usage information.
-@@ -207,257 +209,301 @@
- }
-
- /**
-- * Print the class use list.
-+ * Generate the class use list.
- */
- protected void generateClassUseFile() throws IOException {
--
-- printClassUseHeader();
--
-+ Content body = getClassUseHeader();
-+ HtmlTree div = new HtmlTree(HtmlTag.DIV);
-+ div.addStyle(HtmlStyle.classUseContainer);
- if (pkgSet.size() > 0) {
-- generateClassUse();
-+ addClassUse(div);
- } else {
-- printText("doclet.ClassUse_No.usage.of.0",
-- classdoc.qualifiedName());
-- p();
-+ div.addContent(getResource("doclet.ClassUse_No.usage.of.0",
-+ classdoc.qualifiedName()));
- }
--
-- printClassUseFooter();
-- }
--
-- protected void generateClassUse() throws IOException {
-- if (configuration.packages.length > 1) {
-- generatePackageList();
-- generatePackageAnnotationList();
-- }
-- generateClassList();
-- }
--
-- protected void generatePackageList() throws IOException {
-- tableIndexSummary(useTableSummary);
-- tableCaptionStart();
-- printText("doclet.ClassUse_Packages.that.use.0",
-- getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc,
-- false)));
-- tableCaptionEnd();
-- summaryTableHeader(packageTableHeader, "col");
--
-- for (Iterator it = pkgSet.iterator(); it.hasNext();) {
-- PackageDoc pkg = (PackageDoc)it.next();
-- generatePackageUse(pkg);
-- }
-- tableEnd();
-- space();
-- p();
-- }
--
-- protected void generatePackageAnnotationList() throws IOException {
-- if ((! classdoc.isAnnotationType()) ||
-- pkgToPackageAnnotations == null ||
-- pkgToPackageAnnotations.size() == 0)
-- return;
-- tableIndexSummary(useTableSummary);
-- tableCaptionStart();
-- printText("doclet.ClassUse_PackageAnnotation",
-- getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc,
-- false)));
-- tableCaptionEnd();
-- summaryTableHeader(packageTableHeader, "col");
-- for (Iterator it = pkgToPackageAnnotations.iterator(); it.hasNext();) {
-- PackageDoc pkg = (PackageDoc)it.next();
-- trBgcolorStyle("white", "TableRowColor");
-- summaryRow(0);
-- //Just want an anchor here.
-- printPackageLink(pkg, pkg.name(), true);
-- summaryRowEnd();
-- summaryRow(0);
-- printSummaryComment(pkg);
-- space();
-- summaryRowEnd();
-- trEnd();
-- }
-- tableEnd();
-- space();
-- p();
-- }
--
-- protected void generateClassList() throws IOException {
-- for (Iterator it = pkgSet.iterator(); it.hasNext();) {
-- PackageDoc pkg = (PackageDoc)it.next();
-- anchor(pkg.name());
-- tableIndexSummary();
-- tableHeaderStart("#CCCCFF");
-- printText("doclet.ClassUse_Uses.of.0.in.1",
-- getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER,
-- classdoc, false)),
-- getPackageLink(pkg, Util.getPackageName(pkg), false));
-- tableHeaderEnd();
-- tableEnd();
-- space();
-- p();
-- generateClassUse(pkg);
-- }
-+ body.addContent(div);
-+ addNavLinks(false, body);
-+ addBottom(body);
-+ printHtmlDocument(null, true, body);
- }
-
- /**
-- * Print the package use list.
-+ * Add the class use documentation.
-+ *
-+ * @param contentTree the content tree to which the class use information will be added
- */
-- protected void generatePackageUse(PackageDoc pkg) throws IOException {
-- trBgcolorStyle("white", "TableRowColor");
-- summaryRow(0);
-- //Just want an anchor here.
-- printHyperLink("", pkg.name(), Util.getPackageName(pkg), true);
-- summaryRowEnd();
-- summaryRow(0);
-- printSummaryComment(pkg);
-- space();
-- summaryRowEnd();
-- trEnd();
-+ protected void addClassUse(Content contentTree) throws IOException {
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.blockList);
-+ if (configuration.packages.length > 1) {
-+ addPackageList(ul);
-+ addPackageAnnotationList(ul);
-+ }
-+ addClassList(ul);
-+ contentTree.addContent(ul);
- }
-
- /**
-- * Print the class use list.
-+ * Add the packages list that use the given class.
-+ *
-+ * @param contentTree the content tree to which the packages list will be added
- */
-- protected void generateClassUse(PackageDoc pkg) throws IOException {
-- String classLink = getLink(new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc, false));
-- String pkgLink = getPackageLink(pkg, Util.getPackageName(pkg), false);
-- classSubWriter.printUseInfo(pkgToClassAnnotations.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_Annotation", classLink,
-- pkgLink), classUseTableSummary);
-- classSubWriter.printUseInfo(pkgToClassTypeParameter.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_TypeParameter", classLink,
-- pkgLink), classUseTableSummary);
-- classSubWriter.printUseInfo(pkgToSubclass.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_Subclass", classLink,
-- pkgLink), subclassUseTableSummary);
-- classSubWriter.printUseInfo(pkgToSubinterface.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_Subinterface", classLink,
-- pkgLink), subinterfaceUseTableSummary);
-- classSubWriter.printUseInfo(pkgToImplementingClass.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_ImplementingClass", classLink,
-- pkgLink), classUseTableSummary);
-- fieldSubWriter.printUseInfo(pkgToField.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_Field", classLink,
-- pkgLink), fieldUseTableSummary);
-- fieldSubWriter.printUseInfo(pkgToFieldAnnotations.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_FieldAnnotations", classLink,
-- pkgLink), fieldUseTableSummary);
-- fieldSubWriter.printUseInfo(pkgToFieldTypeParameter.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_FieldTypeParameter", classLink,
-- pkgLink), fieldUseTableSummary);
-- methodSubWriter.printUseInfo(pkgToMethodAnnotations.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_MethodAnnotations", classLink,
-- pkgLink), methodUseTableSummary);
-- methodSubWriter.printUseInfo(pkgToMethodParameterAnnotations.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_MethodParameterAnnotations", classLink,
-- pkgLink), methodUseTableSummary);
-- methodSubWriter.printUseInfo(pkgToMethodTypeParameter.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_MethodTypeParameter", classLink,
-- pkgLink), methodUseTableSummary);
-- methodSubWriter.printUseInfo(pkgToMethodReturn.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_MethodReturn", classLink,
-- pkgLink), methodUseTableSummary);
-- methodSubWriter.printUseInfo(pkgToMethodReturnTypeParameter.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_MethodReturnTypeParameter", classLink,
-- pkgLink), methodUseTableSummary);
-- methodSubWriter.printUseInfo(pkgToMethodArgs.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_MethodArgs", classLink,
-- pkgLink), methodUseTableSummary);
-- methodSubWriter.printUseInfo(pkgToMethodArgTypeParameter.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_MethodArgsTypeParameters", classLink,
-- pkgLink), methodUseTableSummary);
-- methodSubWriter.printUseInfo(pkgToMethodThrows.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_MethodThrows", classLink,
-- pkgLink), methodUseTableSummary);
-- constrSubWriter.printUseInfo(pkgToConstructorAnnotations.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_ConstructorAnnotations", classLink,
-- pkgLink), constructorUseTableSummary);
-- constrSubWriter.printUseInfo(pkgToConstructorParameterAnnotations.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_ConstructorParameterAnnotations", classLink,
-- pkgLink), constructorUseTableSummary);
-- constrSubWriter.printUseInfo(pkgToConstructorArgs.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_ConstructorArgs", classLink,
-- pkgLink), constructorUseTableSummary);
-- constrSubWriter.printUseInfo(pkgToConstructorArgTypeParameter.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_ConstructorArgsTypeParameters", classLink,
-- pkgLink), constructorUseTableSummary);
-- constrSubWriter.printUseInfo(pkgToConstructorThrows.get(pkg.name()),
-- configuration.getText("doclet.ClassUse_ConstructorThrows", classLink,
-- pkgLink), constructorUseTableSummary);
-+ protected void addPackageList(Content contentTree) throws IOException {
-+ Content table = HtmlTree.TABLE(0, 3, 0, useTableSummary,
-+ getTableCaption(configuration().getText(
-+ "doclet.ClassUse_Packages.that.use.0",
-+ getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc,
-+ false)))));
-+ table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
-+ Content tbody = new HtmlTree(HtmlTag.TBODY);
-+ Iterator<PackageDoc> it = pkgSet.iterator();
-+ for (int i = 0; it.hasNext(); i++) {
-+ PackageDoc pkg = it.next();
-+ HtmlTree tr = new HtmlTree(HtmlTag.TR);
-+ if (i % 2 == 0) {
-+ tr.addStyle(HtmlStyle.altColor);
-+ } else {
-+ tr.addStyle(HtmlStyle.rowColor);
-+ }
-+ addPackageUse(pkg, tr);
-+ tbody.addContent(tr);
-+ }
-+ table.addContent(tbody);
-+ Content li = HtmlTree.LI(HtmlStyle.blockList, table);
-+ contentTree.addContent(li);
- }
-
- /**
-- * Print the header for the class use Listing.
-+ * Add the package annotation list.
-+ *
-+ * @param contentTree the content tree to which the package annotation list will be added
- */
-- protected void printClassUseHeader() {
-- String cltype = configuration.getText(classdoc.isInterface()?
-- "doclet.Interface":
-- "doclet.Class");
-- String clname = classdoc.qualifiedName();
-- printHtmlHeader(configuration.getText("doclet.Window_ClassUse_Header",
-- cltype, clname), null, true);
-- printTop();
-- navLinks(true);
-- hr();
-- center();
-- h2();
-- strongText("doclet.ClassUse_Title", cltype, clname);
-- h2End();
-- centerEnd();
-+ protected void addPackageAnnotationList(Content contentTree) throws IOException {
-+ if ((!classdoc.isAnnotationType()) ||
-+ pkgToPackageAnnotations == null ||
-+ pkgToPackageAnnotations.size() == 0) {
-+ return;
-+ }
-+ Content table = HtmlTree.TABLE(0, 3, 0, useTableSummary,
-+ getTableCaption(configuration().getText(
-+ "doclet.ClassUse_PackageAnnotation",
-+ getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc,
-+ false)))));
-+ table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
-+ Content tbody = new HtmlTree(HtmlTag.TBODY);
-+ Iterator<PackageDoc> it = pkgToPackageAnnotations.iterator();
-+ for (int i = 0; it.hasNext(); i++) {
-+ PackageDoc pkg = it.next();
-+ HtmlTree tr = new HtmlTree(HtmlTag.TR);
-+ if (i % 2 == 0) {
-+ tr.addStyle(HtmlStyle.altColor);
-+ } else {
-+ tr.addStyle(HtmlStyle.rowColor);
-+ }
-+ Content tdFirst = HtmlTree.TD(HtmlStyle.colFirst,
-+ getPackageLink(pkg, new StringContent(pkg.name())));
-+ tr.addContent(tdFirst);
-+ HtmlTree tdLast = new HtmlTree(HtmlTag.TD);
-+ tdLast.addStyle(HtmlStyle.colLast);
-+ if (pkg != null) {
-+ addSummaryComment(pkg, tdLast);
-+ } else {
-+ tdLast.addContent(getSpace());
-+ }
-+ tr.addContent(tdLast);
-+ tbody.addContent(tr);
-+ }
-+ table.addContent(tbody);
-+ Content li = HtmlTree.LI(HtmlStyle.blockList, table);
-+ contentTree.addContent(li);
- }
-
- /**
-- * Print the footer for the class use Listing.
-+ * Add the class list that use the given class.
-+ *
-+ * @param contentTree the content tree to which the class list will be added
- */
-- protected void printClassUseFooter() {
-- hr();
-- navLinks(false);
-- printBottom();
-- printBodyHtmlEnd();
-- }
--
--
-- /**
-- * Print this package link
-- */
-- protected void navLinkPackage() {
-- navCellStart();
-- printHyperLink("../package-summary.html", "",
-- configuration.getText("doclet.Package"), true, "NavBarFont1");
-- navCellEnd();
-+ protected void addClassList(Content contentTree) throws IOException {
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.blockList);
-+ for (Iterator<PackageDoc> it = pkgSet.iterator(); it.hasNext();) {
-+ PackageDoc pkg = it.next();
-+ Content li = HtmlTree.LI(HtmlStyle.blockList, getMarkerAnchor(pkg.name()));
-+ Content link = new RawHtml(
-+ configuration.getText("doclet.ClassUse_Uses.of.0.in.1",
-+ getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER,
-+ classdoc, false)),
-+ getPackageLinkString(pkg, Util.getPackageName(pkg), false)));
-+ Content heading = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING, link);
-+ li.addContent(heading);
-+ addClassUse(pkg, li);
-+ ul.addContent(li);
-+ }
-+ Content li = HtmlTree.LI(HtmlStyle.blockList, ul);
-+ contentTree.addContent(li);
- }
-
- /**
-- * Print class page indicator
-+ * Add the package use information.
-+ *
-+ * @param pkg the package that uses the given class
-+ * @param contentTree the content tree to which the package use information will be added
- */
-- protected void navLinkClass() {
-- navCellStart();
-- printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc, "",
-- configuration.getText("doclet.Class"), true, "NavBarFont1"));
-- navCellEnd();
-+ protected void addPackageUse(PackageDoc pkg, Content contentTree) throws IOException {
-+ Content tdFirst = HtmlTree.TD(HtmlStyle.colFirst,
-+ getHyperLink("", pkg.name(), new StringContent(Util.getPackageName(pkg))));
-+ contentTree.addContent(tdFirst);
-+ HtmlTree tdLast = new HtmlTree(HtmlTag.TD);
-+ tdLast.addStyle(HtmlStyle.colLast);
-+ if (pkg != null)
-+ addSummaryComment(pkg, tdLast);
-+ else
-+ tdLast.addContent(getSpace());
-+ contentTree.addContent(tdLast);
- }
-
- /**
-- * Print class use link
-+ * Add the class use information.
-+ *
-+ * @param pkg the package that uses the given class
-+ * @param contentTree the content tree to which the class use information will be added
- */
-- protected void navLinkClassUse() {
-- navCellRevStart();
-- fontStyle("NavBarFont1Rev");
-- strongText("doclet.navClassUse");
-- fontEnd();
-- navCellEnd();
-+ protected void addClassUse(PackageDoc pkg, Content contentTree) throws IOException {
-+ String classLink = getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc, false));
-+ String pkgLink = getPackageLinkString(pkg, Util.getPackageName(pkg), false);
-+ classSubWriter.addUseInfo(pkgToClassAnnotations.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_Annotation", classLink,
-+ pkgLink), classUseTableSummary, contentTree);
-+ classSubWriter.addUseInfo(pkgToClassTypeParameter.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_TypeParameter", classLink,
-+ pkgLink), classUseTableSummary, contentTree);
-+ classSubWriter.addUseInfo(pkgToSubclass.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_Subclass", classLink,
-+ pkgLink), subclassUseTableSummary, contentTree);
-+ classSubWriter.addUseInfo(pkgToSubinterface.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_Subinterface", classLink,
-+ pkgLink), subinterfaceUseTableSummary, contentTree);
-+ classSubWriter.addUseInfo(pkgToImplementingClass.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_ImplementingClass", classLink,
-+ pkgLink), classUseTableSummary, contentTree);
-+ fieldSubWriter.addUseInfo(pkgToField.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_Field", classLink,
-+ pkgLink), fieldUseTableSummary, contentTree);
-+ fieldSubWriter.addUseInfo(pkgToFieldAnnotations.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_FieldAnnotations", classLink,
-+ pkgLink), fieldUseTableSummary, contentTree);
-+ fieldSubWriter.addUseInfo(pkgToFieldTypeParameter.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_FieldTypeParameter", classLink,
-+ pkgLink), fieldUseTableSummary, contentTree);
-+ methodSubWriter.addUseInfo(pkgToMethodAnnotations.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_MethodAnnotations", classLink,
-+ pkgLink), methodUseTableSummary, contentTree);
-+ methodSubWriter.addUseInfo(pkgToMethodParameterAnnotations.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_MethodParameterAnnotations", classLink,
-+ pkgLink), methodUseTableSummary, contentTree);
-+ methodSubWriter.addUseInfo(pkgToMethodTypeParameter.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_MethodTypeParameter", classLink,
-+ pkgLink), methodUseTableSummary, contentTree);
-+ methodSubWriter.addUseInfo(pkgToMethodReturn.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_MethodReturn", classLink,
-+ pkgLink), methodUseTableSummary, contentTree);
-+ methodSubWriter.addUseInfo(pkgToMethodReturnTypeParameter.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_MethodReturnTypeParameter", classLink,
-+ pkgLink), methodUseTableSummary, contentTree);
-+ methodSubWriter.addUseInfo(pkgToMethodArgs.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_MethodArgs", classLink,
-+ pkgLink), methodUseTableSummary, contentTree);
-+ methodSubWriter.addUseInfo(pkgToMethodArgTypeParameter.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_MethodArgsTypeParameters", classLink,
-+ pkgLink), methodUseTableSummary, contentTree);
-+ methodSubWriter.addUseInfo(pkgToMethodThrows.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_MethodThrows", classLink,
-+ pkgLink), methodUseTableSummary, contentTree);
-+ constrSubWriter.addUseInfo(pkgToConstructorAnnotations.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_ConstructorAnnotations", classLink,
-+ pkgLink), constructorUseTableSummary, contentTree);
-+ constrSubWriter.addUseInfo(pkgToConstructorParameterAnnotations.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_ConstructorParameterAnnotations", classLink,
-+ pkgLink), constructorUseTableSummary, contentTree);
-+ constrSubWriter.addUseInfo(pkgToConstructorArgs.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_ConstructorArgs", classLink,
-+ pkgLink), constructorUseTableSummary, contentTree);
-+ constrSubWriter.addUseInfo(pkgToConstructorArgTypeParameter.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_ConstructorArgsTypeParameters", classLink,
-+ pkgLink), constructorUseTableSummary, contentTree);
-+ constrSubWriter.addUseInfo(pkgToConstructorThrows.get(pkg.name()),
-+ configuration.getText("doclet.ClassUse_ConstructorThrows", classLink,
-+ pkgLink), constructorUseTableSummary, contentTree);
- }
-
-- protected void navLinkTree() {
-- navCellStart();
-- if (classdoc.containingPackage().isIncluded()) {
-- printHyperLink("../package-tree.html", "",
-- configuration.getText("doclet.Tree"), true, "NavBarFont1");
-- } else {
-- printHyperLink(relativePath + "overview-tree.html", "",
-- configuration.getText("doclet.Tree"), true, "NavBarFont1");
-- }
-- navCellEnd();
-+ /**
-+ * Get the header for the class use Listing.
-+ *
-+ * @return a content tree representing the class use header
-+ */
-+ protected Content getClassUseHeader() {
-+ String cltype = configuration.getText(classdoc.isInterface()?
-+ "doclet.Interface":"doclet.Class");
-+ String clname = classdoc.qualifiedName();
-+ String title = configuration.getText("doclet.Window_ClassUse_Header",
-+ cltype, clname);
-+ Content bodyTree = getBody(true, getWindowTitle(title));
-+ addTop(bodyTree);
-+ addNavLinks(true, bodyTree);
-+ Content headContent = getResource("doclet.ClassUse_Title", cltype, clname);
-+ Content heading = HtmlTree.HEADING(HtmlConstants.CLASS_PAGE_HEADING,
-+ true, HtmlStyle.title, headContent);
-+ Content div = HtmlTree.DIV(HtmlStyle.header, heading);
-+ bodyTree.addContent(div);
-+ return bodyTree;
- }
-
-+ /**
-+ * Get this package link.
-+ *
-+ * @return a content tree for the package link
-+ */
-+ protected Content getNavLinkPackage() {
-+ Content linkContent = getHyperLink("../package-summary.html", "",
-+ packageLabel);
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
-+ }
-+
-+ /**
-+ * Get class page link.
-+ *
-+ * @return a content tree for the class page link
-+ */
-+ protected Content getNavLinkClass() {
-+ Content linkContent = new RawHtml(getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc, "",
-+ configuration.getText("doclet.Class"), false)));
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
-+ }
-+
-+ /**
-+ * Get the use link.
-+ *
-+ * @return a content tree for the use link
-+ */
-+ protected Content getNavLinkClassUse() {
-+ Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, useLabel);
-+ return li;
-+ }
-+
-+ /**
-+ * Get the tree link.
-+ *
-+ * @return a content tree for the tree link
-+ */
-+ protected Content getNavLinkTree() {
-+ Content linkContent = classdoc.containingPackage().isIncluded() ?
-+ getHyperLink("../package-tree.html", "", treeLabel) :
-+ getHyperLink(relativePath + "overview-tree.html", "", treeLabel);
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
-+ }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/ClassWriterImpl.java
-@@ -32,6 +32,7 @@
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.builders.*;
- import com.sun.tools.doclets.internal.toolkit.taglets.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Generate the Class Information Page.
-@@ -43,6 +44,7 @@
- *
- * @author Atul M Dambalkar
- * @author Robert Field
-+ * @author Bhavesh Patel (Modified)
- */
- public class ClassWriterImpl extends SubWriterHolderWriter
- implements ClassWriter {
-@@ -76,124 +78,173 @@
- }
-
- /**
-- * Print this package link
-+ * Get this package link.
-+ *
-+ * @return a content tree for the package link
- */
-- protected void navLinkPackage() {
-- navCellStart();
-- printHyperLink("package-summary.html", "",
-- configuration.getText("doclet.Package"), true, "NavBarFont1");
-- navCellEnd();
-+ protected Content getNavLinkPackage() {
-+ Content linkContent = getHyperLink("package-summary.html", "",
-+ packageLabel);
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
- }
-
- /**
-- * Print class page indicator
-+ * Get the class link.
-+ *
-+ * @return a content tree for the class link
- */
-- protected void navLinkClass() {
-- navCellRevStart();
-- fontStyle("NavBarFont1Rev");
-- strongText("doclet.Class");
-- fontEnd();
-- navCellEnd();
-+ protected Content getNavLinkClass() {
-+ Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, classLabel);
-+ return li;
- }
-
- /**
-- * Print class use link
-+ * Get the class use link.
-+ *
-+ * @return a content tree for the class use link
- */
-- protected void navLinkClassUse() {
-- navCellStart();
-- printHyperLink("class-use/" + filename, "",
-- configuration.getText("doclet.navClassUse"), true, "NavBarFont1");
-- navCellEnd();
-+ protected Content getNavLinkClassUse() {
-+ Content linkContent = getHyperLink("class-use/" + filename, "", useLabel);
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
- }
-
- /**
-- * Print previous package link
-+ * Get link to previous class.
-+ *
-+ * @return a content tree for the previous class link
- */
-- protected void navLinkPrevious() {
-- if (prev == null) {
-- printText("doclet.Prev_Class");
-- } else {
-- printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, prev, "",
-- configuration.getText("doclet.Prev_Class"), true));
-+ public Content getNavLinkPrevious() {
-+ Content li;
-+ if (prev != null) {
-+ Content prevLink = new RawHtml(getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CLASS, prev, "",
-+ configuration.getText("doclet.Prev_Class"), true)));
-+ li = HtmlTree.LI(prevLink);
- }
-+ else
-+ li = HtmlTree.LI(prevclassLabel);
-+ return li;
- }
-
- /**
-- * Print next package link
-+ * Get link to next class.
-+ *
-+ * @return a content tree for the next class link
- */
-- protected void navLinkNext() {
-- if (next == null) {
-- printText("doclet.Next_Class");
-- } else {
-- printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, next, "",
-- configuration.getText("doclet.Next_Class"), true));
-+ public Content getNavLinkNext() {
-+ Content li;
-+ if (next != null) {
-+ Content nextLink = new RawHtml(getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CLASS, next, "",
-+ configuration.getText("doclet.Next_Class"), true)));
-+ li = HtmlTree.LI(nextLink);
- }
-+ else
-+ li = HtmlTree.LI(nextclassLabel);
-+ return li;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeHeader(String header) {
-+ public Content getHeader(String header) {
- String pkgname = (classDoc.containingPackage() != null)?
- classDoc.containingPackage().name(): "";
- String clname = classDoc.name();
-- printHtmlHeader(clname,
-- configuration.metakeywords.getMetaKeywords(classDoc), true);
-- printTop();
-- navLinks(true);
-- hr();
-- println("<!-- ======== START OF CLASS DATA ======== -->");
-- h2();
-+ Content bodyTree = getBody(true, getWindowTitle(clname));
-+ addTop(bodyTree);
-+ addNavLinks(true, bodyTree);
-+ bodyTree.addContent(HtmlConstants.START_OF_CLASS_DATA);
-+ HtmlTree div = new HtmlTree(HtmlTag.DIV);
-+ div.addStyle(HtmlStyle.header);
- if (pkgname.length() > 0) {
-- font("-1"); print(pkgname); fontEnd(); br();
-+ Content pkgNameContent = new StringContent(pkgname);
-+ Content pkgNamePara = HtmlTree.P(HtmlStyle.subTitle, pkgNameContent);
-+ div.addContent(pkgNamePara);
- }
- LinkInfoImpl linkInfo = new LinkInfoImpl( LinkInfoImpl.CONTEXT_CLASS_HEADER,
-- classDoc, false);
-+ classDoc, false);
- //Let's not link to ourselves in the header.
- linkInfo.linkToSelf = false;
-- print(header + getTypeParameterLinks(linkInfo));
-- h2End();
-+ Content headerContent = new StringContent(header);
-+ Content heading = HtmlTree.HEADING(HtmlConstants.CLASS_PAGE_HEADING, true,
-+ HtmlStyle.title, headerContent);
-+ heading.addContent(new RawHtml(getTypeParameterLinks(linkInfo)));
-+ div.addContent(heading);
-+ bodyTree.addContent(div);
-+ return bodyTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeFooter() {
-- println("<!-- ========= END OF CLASS DATA ========= -->");
-- hr();
-- navLinks(false);
-- printBottom();
-- printBodyHtmlEnd();
-+ public Content getClassContentHeader() {
-+ return getContentHeader();
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeClassSignature(String modifiers) {
-+ public void addFooter(Content contentTree) {
-+ contentTree.addContent(HtmlConstants.END_OF_CLASS_DATA);
-+ addNavLinks(false, contentTree);
-+ addBottom(contentTree);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void printDocument(Content contentTree) {
-+ printHtmlDocument(configuration.metakeywords.getMetaKeywords(classDoc),
-+ true, contentTree);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public Content getClassInfoTreeHeader() {
-+ return getMemberTreeHeader();
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public Content getClassInfo(Content classInfoTree) {
-+ return getMemberTree(HtmlStyle.description, classInfoTree);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addClassSignature(String modifiers, Content classInfoTree) {
- boolean isInterface = classDoc.isInterface();
-- preNoNewLine();
-- writeAnnotationInfo(classDoc);
-- print(modifiers);
-+ classInfoTree.addContent(new HtmlTree(HtmlTag.BR));
-+ Content pre = new HtmlTree(HtmlTag.PRE);
-+ addAnnotationInfo(classDoc, pre);
-+ pre.addContent(modifiers);
- LinkInfoImpl linkInfo = new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_CLASS_SIGNATURE, classDoc, false);
-+ LinkInfoImpl.CONTEXT_CLASS_SIGNATURE, classDoc, false);
- //Let's not link to ourselves in the signature.
- linkInfo.linkToSelf = false;
-- String name = classDoc.name() +
-- getTypeParameterLinks(linkInfo);
-+ Content name = new RawHtml (classDoc.name() +
-+ getTypeParameterLinks(linkInfo));
- if (configuration().linksource) {
-- printSrcLink(classDoc, name);
-+ addSrcLink(classDoc, name, pre);
- } else {
-- strong(name);
-+ pre.addContent(HtmlTree.STRONG(name));
- }
- if (!isInterface) {
- Type superclass = Util.getFirstVisibleSuperClass(classDoc,
-- configuration());
-+ configuration());
- if (superclass != null) {
-- println();
-- print("extends ");
-- printLink(new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_CLASS_SIGNATURE_PARENT_NAME,
-- superclass));
-+ pre.addContent("\n");
-+ pre.addContent("extends ");
-+ Content link = new RawHtml(getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CLASS_SIGNATURE_PARENT_NAME,
-+ superclass)));
-+ pre.addContent(link);
- }
- }
- Type[] implIntfacs = classDoc.interfaceTypes();
-@@ -202,34 +253,33 @@
- for (int i = 0; i < implIntfacs.length; i++) {
- ClassDoc classDoc = implIntfacs[i].asClassDoc();
- if (! (classDoc.isPublic() ||
-- Util.isLinkable(classDoc, configuration()))) {
-+ Util.isLinkable(classDoc, configuration()))) {
- continue;
- }
- if (counter == 0) {
-- println();
-- print(isInterface? "extends " : "implements ");
-+ pre.addContent("\n");
-+ pre.addContent(isInterface? "extends " : "implements ");
- } else {
-- print(", ");
-+ pre.addContent(", ");
- }
-- printLink(new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_CLASS_SIGNATURE_PARENT_NAME,
-- implIntfacs[i]));
-+ Content link = new RawHtml(getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CLASS_SIGNATURE_PARENT_NAME,
-+ implIntfacs[i])));
-+ pre.addContent(link);
- counter++;
- }
- }
-- preEnd();
-- p();
-+ classInfoTree.addContent(pre);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeClassDescription() {
-+ public void addClassDescription(Content classInfoTree) {
- if(!configuration.nocomment) {
- // generate documentation for the class.
- if (classDoc.inlineTags().length > 0) {
-- printInlineComment(classDoc);
-- p();
-+ addInlineComment(classDoc, classInfoTree);
- }
- }
- }
-@@ -237,131 +287,118 @@
- /**
- * {@inheritDoc}
- */
-- public void writeClassTagInfo() {
-+ public void addClassTagInfo(Content classInfoTree) {
- if(!configuration.nocomment) {
- // Print Information about all the tags here
-- printTags(classDoc);
-- hr();
-- p();
-+ addTagsInfo(classDoc, classInfoTree);
-+ }
-+ }
-+
-+ /**
-+ * Get the class hierarchy tree for the given class.
-+ *
-+ * @param type the class to print the hierarchy for
-+ * @return a content tree for class inheritence
-+ */
-+ private Content getClassInheritenceTree(Type type) {
-+ Type sup;
-+ HtmlTree classTreeUl = new HtmlTree(HtmlTag.UL);
-+ classTreeUl.addStyle(HtmlStyle.inheritance);
-+ Content liTree = null;
-+ do {
-+ sup = Util.getFirstVisibleSuperClass(
-+ type instanceof ClassDoc ? (ClassDoc) type : type.asClassDoc(),
-+ configuration());
-+ if (sup != null) {
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.inheritance);
-+ ul.addContent(getTreeForClassHelper(type));
-+ if (liTree != null)
-+ ul.addContent(liTree);
-+ Content li = HtmlTree.LI(ul);
-+ liTree = li;
-+ type = sup;
-+ }
-+ else
-+ classTreeUl.addContent(getTreeForClassHelper(type));
-+ }
-+ while (sup != null);
-+ if (liTree != null)
-+ classTreeUl.addContent(liTree);
-+ return classTreeUl;
-+ }
-+
-+ /**
-+ * Get the class helper tree for the given class.
-+ *
-+ * @param type the class to print the helper for
-+ * @return a content tree for class helper
-+ */
-+ private Content getTreeForClassHelper(Type type) {
-+ Content li = new HtmlTree(HtmlTag.LI);
-+ if (type.equals(classDoc)) {
-+ String typeParameters = getTypeParameterLinks(
-+ new LinkInfoImpl(LinkInfoImpl.CONTEXT_TREE,
-+ classDoc, false));
-+ if (configuration.shouldExcludeQualifier(
-+ classDoc.containingPackage().name())) {
-+ li.addContent(type.asClassDoc().name());
-+ li.addContent(new RawHtml(typeParameters));
-+ } else {
-+ li.addContent(type.asClassDoc().qualifiedName());
-+ li.addContent(new RawHtml(typeParameters));
-+ }
- } else {
-- hr();
-+ Content link = new RawHtml(getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CLASS_TREE_PARENT,
-+ type instanceof ClassDoc ? (ClassDoc) type : type,
-+ configuration.getClassName(type.asClassDoc()), false)));
-+ li.addContent(link);
-+ }
-+ return li;
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addClassTree(Content classContentTree) {
-+ if (!classDoc.isClass()) {
-+ return;
-+ }
-+ classContentTree.addContent(getClassInheritenceTree(classDoc));
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addTypeParamInfo(Content classInfoTree) {
-+ if (classDoc.typeParamTags().length > 0) {
-+ TagletOutput output = (new ParamTaglet()).getTagletOutput(classDoc,
-+ getTagletWriterInstance(false));
-+ Content typeParam = new RawHtml(output.toString());
-+ Content dl = HtmlTree.DL(typeParam);
-+ classInfoTree.addContent(dl);
- }
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeClassDeprecationInfo() {
-- hr();
-- Tag[] deprs = classDoc.tags("deprecated");
-- if (Util.isDeprecated(classDoc)) {
-- strongText("doclet.Deprecated");
-- if (deprs.length > 0) {
-- Tag[] commentTags = deprs[0].inlineTags();
-- if (commentTags.length > 0) {
-- space();
-- printInlineDeprecatedComment(classDoc, deprs[0]);
-- }
-- }
-- p();
-- }
-- }
--
-- /**
-- * Generate the indent and get the line image for the class tree.
-- * For user accessibility, the image includes the alt attribute
-- * "extended by". (This method is not intended for a class
-- * implementing an interface, where "implemented by" would be required.)
-- *
-- * indent integer indicating the number of spaces to indent
-- */
-- private void writeStep(int indent) {
-- print(spaces(4 * indent - 2));
-- print("<IMG SRC=\"" + relativepathNoSlash + "/resources/inherit.gif\" " +
-- "ALT=\"" + configuration.getText("doclet.extended_by") + " \">");
-- }
--
-- /**
-- * Print the class hierarchy tree for the given class.
-- * @param type the class to print the hierarchy for.
-- * @return return the amount that should be indented in
-- * the next level of the tree.
-- */
-- private int writeTreeForClassHelper(Type type) {
-- Type sup = Util.getFirstVisibleSuperClass(
-- type instanceof ClassDoc ? (ClassDoc) type : type.asClassDoc(),
-- configuration());
-- int indent = 0;
-- if (sup != null) {
-- indent = writeTreeForClassHelper(sup);
-- writeStep(indent);
-- }
--
-- if (type.equals(classDoc)) {
-- String typeParameters = getTypeParameterLinks(
-- new LinkInfoImpl(
-- LinkInfoImpl.CONTEXT_TREE,
-- classDoc, false));
-- if (configuration.shouldExcludeQualifier(
-- classDoc.containingPackage().name())) {
-- strong(type.asClassDoc().name() + typeParameters);
-- } else {
-- strong(type.asClassDoc().qualifiedName() + typeParameters);
-- }
-- } else {
-- print(getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_TREE_PARENT,
-- type instanceof ClassDoc ? (ClassDoc) type : type,
-- configuration.getClassName(type.asClassDoc()), false)));
-- }
-- println();
-- return indent + 1;
-- }
--
-- /**
-- * Print the class hierarchy tree for this class only.
-- */
-- public void writeClassTree() {
-- if (! classDoc.isClass()) {
-- return;
-- }
-- pre();
-- writeTreeForClassHelper(classDoc);
-- preEnd();
-- }
--
-- /**
-- * Write the type parameter information.
-- */
-- public void writeTypeParamInfo() {
-- if (classDoc.typeParamTags().length > 0) {
-- dl();
-- dt();
-- TagletOutput output = (new ParamTaglet()).getTagletOutput(classDoc,
-- getTagletWriterInstance(false));
-- print(output.toString());
-- dtEnd();
-- dlEnd();
-- }
-- }
--
-- /**
-- * {@inheritDoc}
-- */
-- public void writeSubClassInfo() {
-+ public void addSubClassInfo(Content classInfoTree) {
- if (classDoc.isClass()) {
- if (classDoc.qualifiedName().equals("java.lang.Object") ||
-- classDoc.qualifiedName().equals("org.omg.CORBA.Object")) {
-+ classDoc.qualifiedName().equals("org.omg.CORBA.Object")) {
- return; // Don't generate the list, too huge
- }
- List subclasses = classtree.subs(classDoc, false);
- if (subclasses.size() > 0) {
-- dl();
-- dt();
-- strongText("doclet.Subclasses");
-- dtEnd();
-- writeClassLinks(LinkInfoImpl.CONTEXT_SUBCLASSES,
-- subclasses);
-- dlEnd();
-+ Content label = getResource(
-+ "doclet.Subclasses");
-+ Content dt = HtmlTree.DT(label);
-+ Content dl = HtmlTree.DL(dt);
-+ dl.addContent(getClassLinks(LinkInfoImpl.CONTEXT_SUBCLASSES,
-+ subclasses));
-+ classInfoTree.addContent(dl);
- }
- }
- }
-@@ -369,140 +406,196 @@
- /**
- * {@inheritDoc}
- */
-- public void writeSubInterfacesInfo() {
-+ public void addSubInterfacesInfo(Content classInfoTree) {
- if (classDoc.isInterface()) {
- List subInterfaces = classtree.allSubs(classDoc, false);
- if (subInterfaces.size() > 0) {
-- dl();
-- dt();
-- strongText("doclet.Subinterfaces");
-- dtEnd();
-- writeClassLinks(LinkInfoImpl.CONTEXT_SUBINTERFACES,
-- subInterfaces);
-- dlEnd();
-+ Content label = getResource(
-+ "doclet.Subinterfaces");
-+ Content dt = HtmlTree.DT(label);
-+ Content dl = HtmlTree.DL(dt);
-+ dl.addContent(getClassLinks(LinkInfoImpl.CONTEXT_SUBINTERFACES,
-+ subInterfaces));
-+ classInfoTree.addContent(dl);
- }
- }
- }
-
- /**
-- * If this is the interface which are the classes, that implement this?
-- */
-- public void writeInterfaceUsageInfo () {
-- if (! classDoc.isInterface()) {
-- return;
-- }
-- if (classDoc.qualifiedName().equals("java.lang.Cloneable") ||
-- classDoc.qualifiedName().equals("java.io.Serializable")) {
-- return; // Don't generate the list, too big
-- }
-- List implcl = classtree.implementingclasses(classDoc);
-- if (implcl.size() > 0) {
-- dl();
-- dt();
-- strongText("doclet.Implementing_Classes");
-- dtEnd();
-- writeClassLinks(LinkInfoImpl.CONTEXT_IMPLEMENTED_CLASSES,
-- implcl);
-- dlEnd();
-- }
-- }
--
-- /**
- * {@inheritDoc}
- */
-- public void writeImplementedInterfacesInfo() {
-- //NOTE: we really should be using ClassDoc.interfaceTypes() here, but
-- // it doesn't walk up the tree like we want it to.
-- List interfaceArray = Util.getAllInterfaces(classDoc, configuration);
-- if (classDoc.isClass() && interfaceArray.size() > 0) {
-- dl();
-- dt();
-- strongText("doclet.All_Implemented_Interfaces");
-- dtEnd();
-- writeClassLinks(LinkInfoImpl.CONTEXT_IMPLEMENTED_INTERFACES,
-- interfaceArray);
-- dlEnd();
-+ public void addInterfaceUsageInfo (Content classInfoTree) {
-+ if (! classDoc.isInterface()) {
-+ return;
-+ }
-+ if (classDoc.qualifiedName().equals("java.lang.Cloneable") ||
-+ classDoc.qualifiedName().equals("java.io.Serializable")) {
-+ return; // Don't generate the list, too big
-+ }
-+ List<ClassDoc> implcl = classtree.implementingclasses(classDoc);
-+ if (implcl.size() > 0) {
-+ Content label = getResource(
-+ "doclet.Implementing_Classes");
-+ Content dt = HtmlTree.DT(label);
-+ Content dl = HtmlTree.DL(dt);
-+ dl.addContent(getClassLinks(LinkInfoImpl.CONTEXT_IMPLEMENTED_CLASSES,
-+ implcl));
-+ classInfoTree.addContent(dl);
- }
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeSuperInterfacesInfo() {
-+ public void addImplementedInterfacesInfo(Content classInfoTree) {
-+ //NOTE: we really should be using ClassDoc.interfaceTypes() here, but
-+ // it doesn't walk up the tree like we want it to.
-+ List<Type> interfaceArray = Util.getAllInterfaces(classDoc, configuration);
-+ if (classDoc.isClass() && interfaceArray.size() > 0) {
-+ Content label = getResource(
-+ "doclet.All_Implemented_Interfaces");
-+ Content dt = HtmlTree.DT(label);
-+ Content dl = HtmlTree.DL(dt);
-+ dl.addContent(getClassLinks(LinkInfoImpl.CONTEXT_IMPLEMENTED_INTERFACES,
-+ interfaceArray));
-+ classInfoTree.addContent(dl);
-+ }
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addSuperInterfacesInfo(Content classInfoTree) {
- //NOTE: we really should be using ClassDoc.interfaceTypes() here, but
- // it doesn't walk up the tree like we want it to.
- List interfaceArray = Util.getAllInterfaces(classDoc, configuration);
- if (classDoc.isInterface() && interfaceArray.size() > 0) {
-- dl();
-- dt();
-- strongText("doclet.All_Superinterfaces");
-- dtEnd();
-- writeClassLinks(LinkInfoImpl.CONTEXT_SUPER_INTERFACES,
-- interfaceArray);
-- dlEnd();
-+ Content label = getResource(
-+ "doclet.All_Superinterfaces");
-+ Content dt = HtmlTree.DT(label);
-+ Content dl = HtmlTree.DL(dt);
-+ dl.addContent(getClassLinks(LinkInfoImpl.CONTEXT_SUPER_INTERFACES,
-+ interfaceArray));
-+ classInfoTree.addContent(dl);
- }
- }
-
- /**
-- * Generate links to the given classes.
-+ * {@inheritDoc}
- */
-- private void writeClassLinks(int context, List list) {
-+ public void addNestedClassInfo(Content classInfoTree) {
-+ ClassDoc outerClass = classDoc.containingClass();
-+ if (outerClass != null) {
-+ Content label;
-+ if (outerClass.isInterface()) {
-+ label = getResource(
-+ "doclet.Enclosing_Interface");
-+ } else {
-+ label = getResource(
-+ "doclet.Enclosing_Class");
-+ }
-+ Content dt = HtmlTree.DT(label);
-+ Content dl = HtmlTree.DL(dt);
-+ Content dd = new HtmlTree(HtmlTag.DD);
-+ dd.addContent(new RawHtml(getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, outerClass,
-+ false))));
-+ dl.addContent(dd);
-+ classInfoTree.addContent(dl);
-+ }
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addClassDeprecationInfo(Content classInfoTree) {
-+ Content hr = new HtmlTree(HtmlTag.HR);
-+ classInfoTree.addContent(hr);
-+ Tag[] deprs = classDoc.tags("deprecated");
-+ if (Util.isDeprecated(classDoc)) {
-+ Content strong = HtmlTree.STRONG(deprecatedPhrase);
-+ Content div = HtmlTree.DIV(HtmlStyle.block, strong);
-+ if (deprs.length > 0) {
-+ Tag[] commentTags = deprs[0].inlineTags();
-+ if (commentTags.length > 0) {
-+ div.addContent(getSpace());
-+ addInlineDeprecatedComment(classDoc, deprs[0], div);
-+ }
-+ }
-+ classInfoTree.addContent(div);
-+ }
-+ }
-+
-+ /**
-+ * Get links to the given classes.
-+ *
-+ * @param context the id of the context where the link will be printed
-+ * @param list the list of classes
-+ * @return a content tree for the class list
-+ */
-+ private Content getClassLinks(int context, List<?> list) {
- Object[] typeList = list.toArray();
-- //Sort the list to be printed.
-- print(' ');
-- dd();
-+ Content dd = new HtmlTree(HtmlTag.DD);
- for (int i = 0; i < list.size(); i++) {
- if (i > 0) {
-- print(", ");
-+ Content separator = new StringContent(", ");
-+ dd.addContent(separator);
- }
- if (typeList[i] instanceof ClassDoc) {
-- printLink(new LinkInfoImpl(context, (ClassDoc)(typeList[i])));
--
-+ Content link = new RawHtml(getLink(
-+ new LinkInfoImpl(context, (ClassDoc)(typeList[i]))));
-+ dd.addContent(link);
- } else {
-- printLink(new LinkInfoImpl(context, (Type)(typeList[i])));
-+ Content link = new RawHtml(getLink(
-+ new LinkInfoImpl(context, (Type)(typeList[i]))));
-+ dd.addContent(link);
- }
- }
-- ddEnd();
-+ return dd;
- }
-
-- protected void navLinkTree() {
-- navCellStart();
-- printHyperLink("package-tree.html", "",
-- configuration.getText("doclet.Tree"), true, "NavBarFont1");
-- navCellEnd();
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected Content getNavLinkTree() {
-+ Content treeLinkContent = getHyperLink("package-tree.html",
-+ "", treeLabel, "", "");
-+ Content li = HtmlTree.LI(treeLinkContent);
-+ return li;
- }
-
-- protected void printSummaryDetailLinks() {
-+ /**
-+ * Add summary details to the navigation bar.
-+ *
-+ * @param subDiv the content tree to which the summary detail links will be added
-+ */
-+ protected void addSummaryDetailLinks(Content subDiv) {
- try {
-- tr();
-- tdVAlignClass("top", "NavBarCell3");
-- font("-2");
-- print(" ");
-- navSummaryLinks();
-- fontEnd();
-- tdEnd();
-- tdVAlignClass("top", "NavBarCell3");
-- font("-2");
-- navDetailLinks();
-- fontEnd();
-- tdEnd();
-- trEnd();
-+ Content div = HtmlTree.DIV(getNavSummaryLinks());
-+ div.addContent(getNavDetailLinks());
-+ subDiv.addContent(div);
- } catch (Exception e) {
- e.printStackTrace();
- throw new DocletAbortException();
- }
- }
-
-- protected void navSummaryLinks() throws Exception {
-- printText("doclet.Summary");
-- space();
-+ /**
-+ * Get summary links for navigation bar.
-+ *
-+ * @return the content tree for the navigation summary links
-+ */
-+ protected Content getNavSummaryLinks() throws Exception {
-+ Content li = HtmlTree.LI(summaryLabel);
-+ li.addContent(getSpace());
-+ Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li);
- MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder)
-- configuration.getBuilderFactory().getMemberSummaryBuilder(this);
-+ configuration.getBuilderFactory().getMemberSummaryBuilder(this);
- String[] navLinkLabels = new String[] {
- "doclet.navNested", "doclet.navEnum", "doclet.navField", "doclet.navConstructor",
-- "doclet.navMethod"
-+ "doclet.navMethod"
- };
- for (int i = 0; i < navLinkLabels.length; i++ ) {
-+ Content liNav = new HtmlTree(HtmlTag.LI);
- if (i == VisibleMemberMap.ENUM_CONSTANTS && ! classDoc.isEnum()) {
- continue;
- }
-@@ -511,38 +604,41 @@
- }
- AbstractMemberWriter writer =
- ((AbstractMemberWriter) memberSummaryBuilder.
-- getMemberSummaryWriter(i));
-+ getMemberSummaryWriter(i));
- if (writer == null) {
-- printText(navLinkLabels[i]);
-+ liNav.addContent(getResource(navLinkLabels[i]));
- } else {
-- writer.navSummaryLink(
-- memberSummaryBuilder.members(i),
-- memberSummaryBuilder.getVisibleMemberMap(i));
-+ writer.addNavSummaryLink(
-+ memberSummaryBuilder.members(i),
-+ memberSummaryBuilder.getVisibleMemberMap(i), liNav);
- }
- if (i < navLinkLabels.length-1) {
-- navGap();
-+ addNavGap(liNav);
- }
-+ ulNav.addContent(liNav);
- }
-+ return ulNav;
- }
-
- /**
-- * Method navDetailLinks
-+ * Get detail links for the navigation bar.
- *
-- * @throws Exception
-- *
-+ * @return the content tree for the detail links
- */
-- protected void navDetailLinks() throws Exception {
-- printText("doclet.Detail");
-- space();
-+ protected Content getNavDetailLinks() throws Exception {
-+ Content li = HtmlTree.LI(detailLabel);
-+ li.addContent(getSpace());
-+ Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li);
- MemberSummaryBuilder memberSummaryBuilder = (MemberSummaryBuilder)
-- configuration.getBuilderFactory().getMemberSummaryBuilder(this);
-+ configuration.getBuilderFactory().getMemberSummaryBuilder(this);
- String[] navLinkLabels = new String[] {
- "doclet.navNested", "doclet.navEnum", "doclet.navField", "doclet.navConstructor",
-- "doclet.navMethod"
-+ "doclet.navMethod"
- };
- for (int i = 1; i < navLinkLabels.length; i++ ) {
-+ Content liNav = new HtmlTree(HtmlTag.LI);
- AbstractMemberWriter writer =
-- ((AbstractMemberWriter) memberSummaryBuilder.
-+ ((AbstractMemberWriter) memberSummaryBuilder.
- getMemberSummaryWriter(i));
- if (i == VisibleMemberMap.ENUM_CONSTANTS && ! classDoc.isEnum()) {
- continue;
-@@ -551,43 +647,27 @@
- continue;
- }
- if (writer == null) {
-- printText(navLinkLabels[i]);
-+ liNav.addContent(getResource(navLinkLabels[i]));
- } else {
-- writer.navDetailLink(memberSummaryBuilder.members(i));
-+ writer.addNavDetailLink(memberSummaryBuilder.members(i), liNav);
- }
- if (i < navLinkLabels.length - 1) {
-- navGap();
-+ addNavGap(liNav);
- }
-+ ulNav.addContent(liNav);
- }
-- }
--
-- protected void navGap() {
-- space();
-- print('|');
-- space();
-+ return ulNav;
- }
-
- /**
-- * If this is an inner class or interface, write the enclosing class or
-- * interface.
-+ * Add gap between navigation bar elements.
-+ *
-+ * @param liNav the content tree to which the gap will be added
- */
-- public void writeNestedClassInfo() {
-- ClassDoc outerClass = classDoc.containingClass();
-- if (outerClass != null) {
-- dl();
-- dt();
-- if (outerClass.isInterface()) {
-- strongText("doclet.Enclosing_Interface");
-- } else {
-- strongText("doclet.Enclosing_Class");
-- }
-- dtEnd();
-- dd();
-- printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, outerClass,
-- false));
-- ddEnd();
-- dlEnd();
-- }
-+ protected void addNavGap(Content liNav) {
-+ liNav.addContent(getSpace());
-+ liNav.addContent("|");
-+ liNav.addContent(getSpace());
- }
-
- /**
-@@ -598,11 +678,4 @@
- public ClassDoc getClassDoc() {
- return classDoc;
- }
--
-- /**
-- * {@inheritDoc}
-- */
-- public void completeMemberSummaryBuild() {
-- p();
-- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java
-@@ -25,11 +25,12 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.io.*;
-+import java.util.*;
-+import com.sun.javadoc.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
--import com.sun.javadoc.*;
--import java.io.*;
--import java.util.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Write the Constants Summary Page in HTML format.
-@@ -76,67 +77,106 @@
- /**
- * {@inheritDoc}
- */
-- public void writeHeader() {
-- printHtmlHeader(configuration.getText("doclet.Constants_Summary"),
-- null, true);
-- printTop();
-- navLinks(true);
-- hr();
--
-- center();
-- h1(); printText("doclet.Constants_Summary"); h1End();
-- centerEnd();
--
-- hr(4, "noshade");
-+ public Content getHeader() {
-+ String label = configuration.getText("doclet.Constants_Summary");
-+ Content bodyTree = getBody(true, getWindowTitle(label));
-+ addTop(bodyTree);
-+ addNavLinks(true, bodyTree);
-+ return bodyTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeFooter() {
-- hr();
-- navLinks(false);
-- printBottom();
-- printBodyHtmlEnd();
-+ public Content getContentsHeader() {
-+ return new HtmlTree(HtmlTag.UL);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeContentsHeader() {
-- strong(configuration.getText("doclet.Contents"));
-- ul();
-+ public void addLinkToPackageContent(PackageDoc pkg, String parsedPackageName,
-+ Set<String> printedPackageHeaders, Content contentListTree) {
-+ String packageName = pkg.name();
-+ //add link to summary
-+ Content link;
-+ if (packageName.length() == 0) {
-+ link = getHyperLink("#" + DocletConstants.UNNAMED_PACKAGE_ANCHOR,
-+ "", defaultPackageLabel, "", "");
-+ } else {
-+ Content packageNameContent = getPackageLabel(parsedPackageName);
-+ packageNameContent.addContent(".*");
-+ link = getHyperLink("#" + parsedPackageName,
-+ "", packageNameContent, "", "");
-+ printedPackageHeaders.add(parsedPackageName);
-+ }
-+ contentListTree.addContent(HtmlTree.LI(link));
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeContentsFooter() {
-- ulEnd();
-- println();
-+ public Content getContentsList(Content contentListTree) {
-+ Content titleContent = getResource(
-+ "doclet.Constants_Summary");
-+ Content pHeading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
-+ HtmlStyle.title, titleContent);
-+ Content div = HtmlTree.DIV(HtmlStyle.header, pHeading);
-+ Content headingContent = getResource(
-+ "doclet.Contents");
-+ div.addContent(HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, true,
-+ headingContent));
-+ div.addContent(contentListTree);
-+ return div;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeLinkToPackageContent(PackageDoc pkg, String parsedPackageName, Set printedPackageHeaders) {
-- String packageName = pkg.name();
-- //add link to summary
-- li();
-- if (packageName.length() == 0) {
-- printHyperLink("#" + DocletConstants.UNNAMED_PACKAGE_ANCHOR,
-- DocletConstants.DEFAULT_PACKAGE_NAME);
-- } else {
-- printHyperLink("#" + parsedPackageName, parsedPackageName + ".*");
-- printedPackageHeaders.add(parsedPackageName);
-- }
-- println();
-+ public Content getConstantSummaries() {
-+ HtmlTree summariesDiv = new HtmlTree(HtmlTag.DIV);
-+ summariesDiv.addStyle(HtmlStyle.constantValuesContainer);
-+ return summariesDiv;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeConstantMembersHeader(ClassDoc cd) {
-+ public void addPackageName(PackageDoc pkg, String parsedPackageName,
-+ Content summariesTree) {
-+ Content pkgNameContent;
-+ if (parsedPackageName.length() == 0) {
-+ summariesTree.addContent(getMarkerAnchor(
-+ DocletConstants.UNNAMED_PACKAGE_ANCHOR));
-+ pkgNameContent = defaultPackageLabel;
-+ } else {
-+ summariesTree.addContent(getMarkerAnchor(
-+ parsedPackageName));
-+ pkgNameContent = getPackageLabel(parsedPackageName);
-+ }
-+ Content headingContent = new StringContent(".*");
-+ Content heading = HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING, true,
-+ pkgNameContent);
-+ heading.addContent(headingContent);
-+ summariesTree.addContent(heading);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public Content getClassConstantHeader() {
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.blockList);
-+ return ul;
-+ }
-+
-+ /**
-+ * Get the table caption and header for the constant summary table
-+ *
-+ * @param cd classdoc to be documented
-+ * @return constant members header content
-+ */
-+ public Content getConstantMembersHeader(ClassDoc cd) {
- //generate links backward only to public classes.
- String classlink = (cd.isPublic() || cd.isProtected())?
- getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, cd,
-@@ -144,112 +184,120 @@
- cd.qualifiedName();
- String name = cd.containingPackage().name();
- if (name.length() > 0) {
-- writeClassName(name + "." + classlink);
-+ return getClassName(name + "." + classlink);
- } else {
-- writeClassName(classlink);
-+ return getClassName(classlink);
- }
- }
-
- /**
-+ * Get the class name in the table caption and the table header.
-+ *
-+ * @param classStr the class name to print.
-+ * @return the table caption and header
-+ */
-+ protected Content getClassName(String classStr) {
-+ Content table = HtmlTree.TABLE(0, 3, 0, constantsTableSummary,
-+ getTableCaption(classStr));
-+ table.addContent(getSummaryTableHeader(constantsTableHeader, "col"));
-+ return table;
-+ }
-+
-+ /**
- * {@inheritDoc}
- */
-- public void writeConstantMembersFooter(ClassDoc cd) {
-- tableFooter(false);
-- p();
-+ public void addConstantMembers(ClassDoc cd, List<FieldDoc> fields,
-+ Content classConstantTree) {
-+ currentClassDoc = cd;
-+ Content tbody = new HtmlTree(HtmlTag.TBODY);
-+ for (int i = 0; i < fields.size(); ++i) {
-+ HtmlTree tr = new HtmlTree(HtmlTag.TR);
-+ if (i%2 == 0)
-+ tr.addStyle(HtmlStyle.altColor);
-+ else
-+ tr.addStyle(HtmlStyle.rowColor);
-+ addConstantMember(fields.get(i), tr);
-+ tbody.addContent(tr);
-+ }
-+ Content table = getConstantMembersHeader(cd);
-+ table.addContent(tbody);
-+ Content li = HtmlTree.LI(HtmlStyle.blockList, table);
-+ classConstantTree.addContent(li);
- }
-
- /**
-- * Print the class name in the table heading.
-- * @param classStr the heading to print.
-+ * Add the row for the constant summary table.
-+ *
-+ * @param member the field to be documented.
-+ * @param trTree an htmltree object for the table row
- */
-- protected void writeClassName(String classStr) {
-- table(1, 3, 0, constantsTableSummary);
-- tableSubCaptionStart();
-- write(classStr);
-- tableCaptionEnd();
-- summaryTableHeader(constantsTableHeader, "col");
-+ private void addConstantMember(FieldDoc member, HtmlTree trTree) {
-+ trTree.addContent(getTypeColumn(member));
-+ trTree.addContent(getNameColumn(member));
-+ trTree.addContent(getValue(member));
- }
-
-- private void tableFooter(boolean isHeader) {
-- fontEnd();
-- if (isHeader) {
-- thEnd();
-- } else {
-- tdEnd();
-+ /**
-+ * Get the type column for the constant summary table row.
-+ *
-+ * @param member the field to be documented.
-+ * @return the type column of the constant table row
-+ */
-+ private Content getTypeColumn(FieldDoc member) {
-+ Content anchor = getMarkerAnchor(currentClassDoc.qualifiedName() +
-+ "." + member.name());
-+ Content tdType = HtmlTree.TD(HtmlStyle.colFirst, anchor);
-+ Content code = new HtmlTree(HtmlTag.CODE);
-+ StringTokenizer mods = new StringTokenizer(member.modifiers());
-+ while(mods.hasMoreTokens()) {
-+ Content modifier = new StringContent(mods.nextToken());
-+ code.addContent(modifier);
-+ code.addContent(getSpace());
- }
-- trEnd();
-- tableEnd();
-- p();
-+ Content type = new RawHtml(getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, member.type())));
-+ code.addContent(type);
-+ tdType.addContent(code);
-+ return tdType;
-+ }
-+
-+ /**
-+ * Get the name column for the constant summary table row.
-+ *
-+ * @param member the field to be documented.
-+ * @return the name column of the constant table row
-+ */
-+ private Content getNameColumn(FieldDoc member) {
-+ Content nameContent = new RawHtml(getDocLink(
-+ LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, member, member.name(), false));
-+ Content code = HtmlTree.CODE(nameContent);
-+ return HtmlTree.TD(code);
-+ }
-+
-+ /**
-+ * Get the value column for the constant summary table row.
-+ *
-+ * @param member the field to be documented.
-+ * @return the value column of the constant table row
-+ */
-+ private Content getValue(FieldDoc member) {
-+ Content valueContent = new StringContent(member.constantValueExpression());
-+ Content code = HtmlTree.CODE(valueContent);
-+ return HtmlTree.TD(HtmlStyle.colLast, code);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writePackageName(PackageDoc pkg, String parsedPackageName) {
-- String pkgname;
-- if (parsedPackageName.length() == 0) {
-- anchor(DocletConstants.UNNAMED_PACKAGE_ANCHOR);
-- pkgname = DocletConstants.DEFAULT_PACKAGE_NAME;
-- } else {
-- anchor(parsedPackageName);
-- pkgname = parsedPackageName;
-- }
-- table(1, "100%", 3, 0);
-- trBgcolorStyle("#CCCCFF", "TableHeadingColor");
-- thAlign("left");
-- font("+2");
-- write(pkgname + ".*");
-- tableFooter(true);
-+ public void addFooter(Content contentTree) {
-+ addNavLinks(false, contentTree);
-+ addBottom(contentTree);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeConstantMembers(ClassDoc cd, List fields) {
-- currentClassDoc = cd;
-- for (int i = 0; i < fields.size(); ++i) {
-- writeConstantMember((FieldDoc)(fields.get(i)));
-- }
-- }
--
-- private void writeConstantMember(FieldDoc member) {
-- trBgcolorStyle("white", "TableRowColor");
-- anchor(currentClassDoc.qualifiedName() + "." + member.name());
-- writeTypeColumn(member);
-- writeNameColumn(member);
-- writeValue(member);
-- trEnd();
-- }
--
-- private void writeTypeColumn(FieldDoc member) {
-- tdAlign("right");
-- font("-1");
-- code();
-- StringTokenizer mods = new StringTokenizer(member.modifiers());
-- while(mods.hasMoreTokens()) {
-- print(mods.nextToken() + "&nbsp;");
-- }
-- printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY,
-- member.type()));
-- codeEnd();
-- fontEnd();
-- tdEnd();
-- }
--
-- private void writeNameColumn(FieldDoc member) {
-- tdAlign("left");
-- code();
-- printDocLink(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, member,
-- member.name(), false);
-- codeEnd();
-- tdEnd();
-- }
--
-- private void writeValue(FieldDoc member) {
-- tdAlign("right");
-- code();
-- print(Util.escapeHtmlChars(member.constantValueExpression()));
-- codeEnd();
-- tdEnd();
-+ public void printDocument(Content contentTree) {
-+ printHtmlDocument(null, true, contentTree);
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstructorWriterImpl.java
-@@ -29,6 +29,7 @@
- import java.util.*;
-
- import com.sun.javadoc.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
-
-@@ -43,7 +44,6 @@
- implements ConstructorWriter, MemberSummaryWriter {
-
- private boolean foundNonPubConstructor = false;
-- private boolean printedSummaryHeader = false;
-
- /**
- * Construct a new ConstructorWriterImpl.
-@@ -75,125 +75,112 @@
- }
-
- /**
-- * Write the constructors summary header for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-+ * {@inheritDoc}
- */
-- public void writeMemberSummaryHeader(ClassDoc classDoc) {
-- printedSummaryHeader = true;
-- writer.println();
-- writer.println("<!-- ======== CONSTRUCTOR SUMMARY ======== -->");
-- writer.println();
-- writer.printSummaryHeader(this, classDoc);
-+ public Content getMemberSummaryHeader(ClassDoc classDoc,
-+ Content memberSummaryTree) {
-+ memberSummaryTree.addContent(HtmlConstants.START_OF_CONSTRUCTOR_SUMMARY);
-+ Content memberTree = writer.getMemberTreeHeader();
-+ writer.addSummaryHeader(this, classDoc, memberTree);
-+ return memberTree;
- }
-
- /**
-- * Write the constructors summary footer for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-+ * {@inheritDoc}
- */
-- public void writeMemberSummaryFooter(ClassDoc classDoc) {
-- writer.printSummaryFooter(this, classDoc);
-+ public Content getConstructorDetailsTreeHeader(ClassDoc classDoc,
-+ Content memberDetailsTree) {
-+ memberDetailsTree.addContent(HtmlConstants.START_OF_CONSTRUCTOR_DETAILS);
-+ Content constructorDetailsTree = writer.getMemberTreeHeader();
-+ constructorDetailsTree.addContent(writer.getMarkerAnchor("constructor_detail"));
-+ Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
-+ writer.constructorDetailsLabel);
-+ constructorDetailsTree.addContent(heading);
-+ return constructorDetailsTree;
- }
-
- /**
-- * Write the header for the constructor documentation.
-- *
-- * @param classDoc the class that the constructors belong to.
-+ * {@inheritDoc}
- */
-- public void writeHeader(ClassDoc classDoc, String header) {
-- writer.println();
-- writer.println("<!-- ========= CONSTRUCTOR DETAIL ======== -->");
-- writer.println();
-- writer.anchor("constructor_detail");
-- writer.printTableHeadingBackground(header);
-+ public Content getConstructorDocTreeHeader(ConstructorDoc constructor,
-+ Content constructorDetailsTree) {
-+ String erasureAnchor;
-+ if ((erasureAnchor = getErasureAnchor(constructor)) != null) {
-+ constructorDetailsTree.addContent(writer.getMarkerAnchor((erasureAnchor)));
-+ }
-+ constructorDetailsTree.addContent(
-+ writer.getMarkerAnchor(writer.getAnchor(constructor)));
-+ Content constructorDocTree = writer.getMemberTreeHeader();
-+ Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
-+ heading.addContent(constructor.name());
-+ constructorDocTree.addContent(heading);
-+ return constructorDocTree;
- }
-
- /**
-- * Write the constructor header for the given constructor.
-- *
-- * @param constructor the constructor being documented.
-- * @param isFirst the flag to indicate whether or not the constructor is the
-- * first to be documented.
-+ * {@inheritDoc}
- */
-- public void writeConstructorHeader(ConstructorDoc constructor, boolean isFirst) {
-- if (! isFirst) {
-- writer.printMemberHeader();
-+ public Content getSignature(ConstructorDoc constructor) {
-+ writer.displayLength = 0;
-+ Content pre = new HtmlTree(HtmlTag.PRE);
-+ writer.addAnnotationInfo(constructor, pre);
-+ addModifiers(constructor, pre);
-+ if (configuration().linksource) {
-+ Content constructorName = new StringContent(constructor.name());
-+ writer.addSrcLink(constructor, constructorName, pre);
-+ } else {
-+ addName(constructor.name(), pre);
- }
-- writer.println();
-- String erasureAnchor;
-- if ((erasureAnchor = getErasureAnchor(constructor)) != null) {
-- writer.anchor(erasureAnchor);
-- }
-- writer.anchor(constructor);
-- writer.h3();
-- writer.print(constructor.name());
-- writer.h3End();
-+ addParameters(constructor, pre);
-+ addExceptions(constructor, pre);
-+ return pre;
- }
-
- /**
-- * Write the signature for the given constructor.
-- *
-- * @param constructor the constructor being documented.
-+ * {@inheritDoc}
- */
-- public void writeSignature(ConstructorDoc constructor) {
-- writer.displayLength = 0;
-- writer.pre();
-- writer.writeAnnotationInfo(constructor);
-- printModifiers(constructor);
-- //printReturnType((ConstructorDoc)constructor);
-- if (configuration().linksource) {
-- writer.printSrcLink(constructor, constructor.name());
-- } else {
-- strong(constructor.name());
-- }
-- writeParameters(constructor);
-- writeExceptions(constructor);
-- writer.preEnd();
-- assert !writer.getMemberDetailsListPrinted();
-+ @Override
-+ public void setSummaryColumnStyle(HtmlTree tdTree) {
-+ if (foundNonPubConstructor)
-+ tdTree.addStyle(HtmlStyle.colLast);
-+ else
-+ tdTree.addStyle(HtmlStyle.colOne);
- }
-
- /**
-- * Write the deprecated output for the given constructor.
-- *
-- * @param constructor the constructor being documented.
-+ * {@inheritDoc}
- */
-- public void writeDeprecated(ConstructorDoc constructor) {
-- printDeprecated(constructor);
-+ public void addDeprecated(ConstructorDoc constructor, Content constructorDocTree) {
-+ addDeprecatedInfo(constructor, constructorDocTree);
- }
-
- /**
-- * Write the comments for the given constructor.
-- *
-- * @param constructor the constructor being documented.
-+ * {@inheritDoc}
- */
-- public void writeComments(ConstructorDoc constructor) {
-- printComment(constructor);
-+ public void addComments(ConstructorDoc constructor, Content constructorDocTree) {
-+ addComment(constructor, constructorDocTree);
- }
-
- /**
-- * Write the tag output for the given constructor.
-- *
-- * @param constructor the constructor being documented.
-+ * {@inheritDoc}
- */
-- public void writeTags(ConstructorDoc constructor) {
-- writer.printTags(constructor);
-+ public void addTags(ConstructorDoc constructor, Content constructorDocTree) {
-+ writer.addTagsInfo(constructor, constructorDocTree);
- }
-
- /**
-- * Write the constructor footer.
-+ * {@inheritDoc}
- */
-- public void writeConstructorFooter() {
-- printMemberFooter();
-+ public Content getConstructorDetails(Content constructorDetailsTree) {
-+ return getMemberTree(constructorDetailsTree);
- }
-
- /**
-- * Write the footer for the constructor documentation.
-- *
-- * @param classDoc the class that the constructors belong to.
-+ * {@inheritDoc}
- */
-- public void writeFooter(ClassDoc classDoc) {
-- //No footer to write for constructor documentation
-+ public Content getConstructorDoc(Content constructorDocTree,
-+ boolean isLastContent) {
-+ return getMemberTree(constructorDocTree, isLastContent);
- }
-
- /**
-@@ -212,17 +199,35 @@
- this.foundNonPubConstructor = foundNonPubConstructor;
- }
-
-- public void printSummaryLabel() {
-- writer.printText("doclet.Constructor_Summary");
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addSummaryLabel(Content memberTree) {
-+ Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
-+ writer.getResource("doclet.Constructor_Summary"));
-+ memberTree.addContent(label);
- }
-
-- public void printTableSummary() {
-- writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getTableSummary() {
-+ return configuration().getText("doclet.Member_Table_Summary",
- configuration().getText("doclet.Constructor_Summary"),
-- configuration().getText("doclet.constructors")));
-+ configuration().getText("doclet.constructors"));
- }
-
-- public void printSummaryTableHeader(ProgramElementDoc member) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getCaption() {
-+ return configuration().getText("doclet.Constructors");
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String[] getSummaryTableHeader(ProgramElementDoc member) {
- String[] header;
- if (foundNonPubConstructor) {
- header = new String[] {
-@@ -239,87 +244,73 @@
- configuration().getText("doclet.Description"))
- };
- }
-- writer.summaryTableHeader(header, "col");
-+ return header;
- }
-
-- public void printSummaryAnchor(ClassDoc cd) {
-- writer.anchor("constructor_summary");
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
-+ memberTree.addContent(writer.getMarkerAnchor("constructor_summary"));
- }
-
-- public void printInheritedSummaryAnchor(ClassDoc cd) {
-- } // no such
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
-+ }
-
-- public void printInheritedSummaryLabel(ClassDoc cd) {
-- // no such
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
- }
-
- public int getMemberKind() {
- return VisibleMemberMap.CONSTRUCTORS;
- }
-
-- protected void navSummaryLink(List members) {
-- printNavSummaryLink(classdoc,
-- members.size() > 0? true: false);
-- }
--
-- protected void printNavSummaryLink(ClassDoc cd, boolean link) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
- if (link) {
-- writer.printHyperLink("", "constructor_summary",
-- ConfigurationImpl.getInstance().getText("doclet.navConstructor"));
-+ return writer.getHyperLink("", "constructor_summary",
-+ writer.getResource("doclet.navConstructor"));
- } else {
-- writer.printText("doclet.navConstructor");
-- }
-- }
--
-- protected void printNavDetailLink(boolean link) {
-- if (link) {
-- writer.printHyperLink("", "constructor_detail",
-- ConfigurationImpl.getInstance().getText("doclet.navConstructor"));
-- } else {
-- writer.printText("doclet.navConstructor");
-- }
-- }
--
-- protected void printSummaryType(ProgramElementDoc member) {
-- if (foundNonPubConstructor) {
-- writer.printTypeSummaryHeader();
-- if (member.isProtected()) {
-- print("protected ");
-- } else if (member.isPrivate()) {
-- print("private ");
-- } else if (member.isPublic()) {
-- writer.space();
-- } else {
-- writer.printText("doclet.Package_private");
-- }
-- writer.printTypeSummaryFooter();
-- }
-- }
--
-- /**
-- * Write the inherited member summary header for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-- if(! printedSummaryHeader){
-- //We don't want inherited summary to not be under heading.
-- writeMemberSummaryHeader(classDoc);
-- writeMemberSummaryFooter(classDoc);
-- printedSummaryHeader = true;
-+ return writer.getResource("doclet.navConstructor");
- }
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeInheritedMemberSummary(ClassDoc classDoc,
-- ProgramElementDoc member, boolean isFirst, boolean isLast) {}
-+ protected void addNavDetailLink(boolean link, Content liNav) {
-+ if (link) {
-+ liNav.addContent(writer.getHyperLink("", "constructor_detail",
-+ writer.getResource("doclet.navConstructor")));
-+ } else {
-+ liNav.addContent(writer.getResource("doclet.navConstructor"));
-+ }
-+ }
-
- /**
-- * Write the inherited member summary footer for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-+ * {@inheritDoc}
- */
-- public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {}
-+ protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
-+ if (foundNonPubConstructor) {
-+ Content code = new HtmlTree(HtmlTag.CODE);
-+ if (member.isProtected()) {
-+ code.addContent("protected ");
-+ } else if (member.isPrivate()) {
-+ code.addContent("private ");
-+ } else if (member.isPublic()) {
-+ code.addContent(writer.getSpace());
-+ } else {
-+ code.addContent(
-+ configuration().getText("doclet.Package_private"));
-+ }
-+ tdSummaryType.addContent(code);
-+ }
-+ }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/DeprecatedListWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/DeprecatedListWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/DeprecatedListWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/DeprecatedListWriter.java
-@@ -25,9 +25,11 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.io.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.DeprecatedAPIListBuilder;
- import com.sun.tools.doclets.internal.toolkit.util.*;
--import java.io.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Generate File to list all the deprecated classes and class members with the
-@@ -125,28 +127,21 @@
- }
-
- /**
-- * Print the deprecated API list. Separately print all class kinds and
-- * member kinds.
-+ * Generate the deprecated API list.
- *
- * @param deprapi list of deprecated API built already.
- */
- protected void generateDeprecatedListFile(DeprecatedAPIListBuilder deprapi)
-- throws IOException {
-- writeHeader();
--
-- strong(configuration.getText("doclet.Contents"));
-- ul();
-- for (int i = 0; i < DeprecatedAPIListBuilder.NUM_TYPES; i++) {
-- writeIndexLink(deprapi, i);
-- }
-- ulEnd();
-- println();
--
-+ throws IOException {
-+ Content body = getHeader();
-+ body.addContent(getContentsList(deprapi));
- String memberTableSummary;
- String[] memberTableHeader = new String[1];
-+ HtmlTree div = new HtmlTree(HtmlTag.DIV);
-+ div.addStyle(HtmlStyle.contentContainer);
- for (int i = 0; i < DeprecatedAPIListBuilder.NUM_TYPES; i++) {
- if (deprapi.hasDocumentation(i)) {
-- writeAnchor(deprapi, i);
-+ addAnchor(deprapi, i, div);
- memberTableSummary =
- configuration.getText("doclet.Member_Table_Summary",
- configuration.getText(HEADING_KEYS[i]),
-@@ -154,66 +149,87 @@
- memberTableHeader[0] = configuration.getText("doclet.0_and_1",
- configuration.getText(HEADER_KEYS[i]),
- configuration.getText("doclet.Description"));
-- writers[i].printDeprecatedAPI(deprapi.getList(i),
-- HEADING_KEYS[i], memberTableSummary, memberTableHeader);
-+ writers[i].addDeprecatedAPI(deprapi.getList(i),
-+ HEADING_KEYS[i], memberTableSummary, memberTableHeader, div);
- }
- }
-- printDeprecatedFooter();
-+ body.addContent(div);
-+ addNavLinks(false, body);
-+ addBottom(body);
-+ printHtmlDocument(null, true, body);
- }
-
-- private void writeIndexLink(DeprecatedAPIListBuilder builder,
-- int type) {
-+ /**
-+ * Add the index link.
-+ *
-+ * @param builder the deprecated list builder
-+ * @param type the type of list being documented
-+ * @param contentTree the content tree to which the index link will be added
-+ */
-+ private void addIndexLink(DeprecatedAPIListBuilder builder,
-+ int type, Content contentTree) {
- if (builder.hasDocumentation(type)) {
-- li();
-- printHyperLink("#" + ANCHORS[type],
-- configuration.getText(HEADING_KEYS[type]));
-- println();
-- }
-- }
--
-- private void writeAnchor(DeprecatedAPIListBuilder builder, int type) {
-- if (builder.hasDocumentation(type)) {
-- anchor(ANCHORS[type]);
-+ Content li = HtmlTree.LI(getHyperLink("#" + ANCHORS[type],
-+ getResource(HEADING_KEYS[type])));
-+ contentTree.addContent(li);
- }
- }
-
- /**
-- * Print the navigation bar and header for the deprecated API Listing.
-+ * Get the contents list.
-+ *
-+ * @param deprapi the deprecated list builder
-+ * @return a content tree for the contents list
- */
-- protected void writeHeader() {
-- printHtmlHeader(configuration.getText("doclet.Window_Deprecated_List"),
-- null, true);
-- printTop();
-- navLinks(true);
-- hr();
-- center();
-- h2();
-- strongText("doclet.Deprecated_API");
-- h2End();
-- centerEnd();
--
-- hr(4, "noshade");
-+ public Content getContentsList(DeprecatedAPIListBuilder deprapi) {
-+ Content headContent = getResource("doclet.Deprecated_API");
-+ Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
-+ HtmlStyle.title, headContent);
-+ Content div = HtmlTree.DIV(HtmlStyle.header, heading);
-+ Content headingContent = getResource("doclet.Contents");
-+ div.addContent(HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, true,
-+ headingContent));
-+ Content ul = new HtmlTree(HtmlTag.UL);
-+ for (int i = 0; i < DeprecatedAPIListBuilder.NUM_TYPES; i++) {
-+ addIndexLink(deprapi, i, ul);
-+ }
-+ div.addContent(ul);
-+ return div;
- }
-
- /**
-- * Print the navigation bar and the footer for the deprecated API Listing.
-+ * Add the anchor.
-+ *
-+ * @param builder the deprecated list builder
-+ * @param type the type of list being documented
-+ * @param contentTree the content tree to which the anchor will be added
- */
-- protected void printDeprecatedFooter() {
-- hr();
-- navLinks(false);
-- printBottom();
-- printBodyHtmlEnd();
-+ private void addAnchor(DeprecatedAPIListBuilder builder, int type, Content htmlTree) {
-+ if (builder.hasDocumentation(type)) {
-+ htmlTree.addContent(getMarkerAnchor(ANCHORS[type]));
-+ }
- }
-
- /**
-- * Highlight the word "Deprecated" in the navigation bar as this is the same
-- * page.
-+ * Get the header for the deprecated API Listing.
-+ *
-+ * @return a content tree for the header
- */
-- protected void navLinkDeprecated() {
-- navCellRevStart();
-- fontStyle("NavBarFont1Rev");
-- strongText("doclet.navDeprecated");
-- fontEnd();
-- navCellEnd();
-+ public Content getHeader() {
-+ String title = configuration.getText("doclet.Window_Deprecated_List");
-+ Content bodyTree = getBody(true, getWindowTitle(title));
-+ addTop(bodyTree);
-+ addNavLinks(true, bodyTree);
-+ return bodyTree;
-+ }
-+
-+ /**
-+ * Get the deprecated label.
-+ *
-+ * @return a content tree for the deprecated label
-+ */
-+ protected Content getNavLinkDeprecated() {
-+ Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, deprecatedLabel);
-+ return li;
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/EnumConstantWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/EnumConstantWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/EnumConstantWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/EnumConstantWriterImpl.java
-@@ -28,6 +28,7 @@
- import java.io.*;
-
- import com.sun.javadoc.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
-
-@@ -40,8 +41,6 @@
- public class EnumConstantWriterImpl extends AbstractMemberWriter
- implements EnumConstantWriter, MemberSummaryWriter {
-
-- private boolean printedSummaryHeader = false;
--
- public EnumConstantWriterImpl(SubWriterHolderWriter writer,
- ClassDoc classdoc) {
- super(writer, classdoc);
-@@ -52,136 +51,98 @@
- }
-
- /**
-- * Write the enum constant summary header for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-+ * {@inheritDoc}
- */
-- public void writeMemberSummaryHeader(ClassDoc classDoc) {
-- printedSummaryHeader = true;
-- writer.println("<!-- =========== ENUM CONSTANT SUMMARY =========== -->");
-- writer.println();
-- writer.printSummaryHeader(this, classDoc);
-- }
--
-- /**
-- * Write the enum constant summary footer for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeMemberSummaryFooter(ClassDoc classDoc) {
-- writer.printSummaryFooter(this, classDoc);
-- }
--
-- /**
-- * Write the inherited enum constant summary header for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-- if(! printedSummaryHeader){
-- //We don't want inherited summary to not be under heading.
-- writeMemberSummaryHeader(classDoc);
-- writeMemberSummaryFooter(classDoc);
-- printedSummaryHeader = true;
-- }
-- writer.printInheritedSummaryHeader(this, classDoc);
-+ public Content getMemberSummaryHeader(ClassDoc classDoc,
-+ Content memberSummaryTree) {
-+ memberSummaryTree.addContent(HtmlConstants.START_OF_ENUM_CONSTANT_SUMMARY);
-+ Content memberTree = writer.getMemberTreeHeader();
-+ writer.addSummaryHeader(this, classDoc, memberTree);
-+ return memberTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeInheritedMemberSummary(ClassDoc classDoc,
-- ProgramElementDoc enumConstant, boolean isFirst, boolean isLast) {
-- writer.printInheritedSummaryMember(this, classDoc, enumConstant, isFirst);
-- }
--
-- /**
-- * Write the inherited enum constant summary footer for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {
-- writer.printInheritedSummaryFooter(this, classDoc);
-+ public Content getEnumConstantsDetailsTreeHeader(ClassDoc classDoc,
-+ Content memberDetailsTree) {
-+ memberDetailsTree.addContent(HtmlConstants.START_OF_ENUM_CONSTANT_DETAILS);
-+ Content enumConstantsDetailsTree = writer.getMemberTreeHeader();
-+ enumConstantsDetailsTree.addContent(writer.getMarkerAnchor("enum_constant_detail"));
-+ Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
-+ writer.enumConstantsDetailsLabel);
-+ enumConstantsDetailsTree.addContent(heading);
-+ return enumConstantsDetailsTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeHeader(ClassDoc classDoc, String header) {
-- writer.println();
-- writer.println("<!-- ============ ENUM CONSTANT DETAIL =========== -->");
-- writer.println();
-- writer.anchor("enum_constant_detail");
-- writer.printTableHeadingBackground(header);
-- writer.println();
-+ public Content getEnumConstantsTreeHeader(FieldDoc enumConstant,
-+ Content enumConstantsDetailsTree) {
-+ enumConstantsDetailsTree.addContent(
-+ writer.getMarkerAnchor(enumConstant.name()));
-+ Content enumConstantsTree = writer.getMemberTreeHeader();
-+ Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
-+ heading.addContent(enumConstant.name());
-+ enumConstantsTree.addContent(heading);
-+ return enumConstantsTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeEnumConstantHeader(FieldDoc enumConstant, boolean isFirst) {
-- if (! isFirst) {
-- writer.printMemberHeader();
-- writer.println("");
-+ public Content getSignature(FieldDoc enumConstant) {
-+ Content pre = new HtmlTree(HtmlTag.PRE);
-+ writer.addAnnotationInfo(enumConstant, pre);
-+ addModifiers(enumConstant, pre);
-+ Content enumConstantLink = new RawHtml(writer.getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-+ enumConstant.type())));
-+ pre.addContent(enumConstantLink);
-+ pre.addContent(" ");
-+ if (configuration().linksource) {
-+ Content enumConstantName = new StringContent(enumConstant.name());
-+ writer.addSrcLink(enumConstant, enumConstantName, pre);
-+ } else {
-+ addName(enumConstant.name(), pre);
- }
-- writer.anchor(enumConstant.name());
-- writer.h3();
-- writer.print(enumConstant.name());
-- writer.h3End();
-+ return pre;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeSignature(FieldDoc enumConstant) {
-- writer.pre();
-- writer.writeAnnotationInfo(enumConstant);
-- printModifiers(enumConstant);
-- writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-- enumConstant.type()));
-- print(' ');
-- if (configuration().linksource) {
-- writer.printSrcLink(enumConstant, enumConstant.name());
-- } else {
-- strong(enumConstant.name());
-- }
-- writer.preEnd();
-- assert !writer.getMemberDetailsListPrinted();
-+ public void addDeprecated(FieldDoc enumConstant, Content enumConstantsTree) {
-+ addDeprecatedInfo(enumConstant, enumConstantsTree);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeDeprecated(FieldDoc enumConstant) {
-- printDeprecated(enumConstant);
-+ public void addComments(FieldDoc enumConstant, Content enumConstantsTree) {
-+ addComment(enumConstant, enumConstantsTree);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeComments(FieldDoc enumConstant) {
-- printComment(enumConstant);
-+ public void addTags(FieldDoc enumConstant, Content enumConstantsTree) {
-+ writer.addTagsInfo(enumConstant, enumConstantsTree);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeTags(FieldDoc enumConstant) {
-- writer.printTags(enumConstant);
-+ public Content getEnumConstantsDetails(Content enumConstantsDetailsTree) {
-+ return getMemberTree(enumConstantsDetailsTree);
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeEnumConstantFooter() {
-- printMemberFooter();
-- }
--
-- /**
-- * {@inheritDoc}
-- */
-- public void writeFooter(ClassDoc classDoc) {
-- //No footer to write for enum constant documentation
-+ public Content getEnumConstants(Content enumConstantsTree,
-+ boolean isLastContent) {
-+ return getMemberTree(enumConstantsTree, isLastContent);
- }
-
- /**
-@@ -195,75 +156,127 @@
- return VisibleMemberMap.ENUM_CONSTANTS;
- }
-
-- public void printSummaryLabel() {
-- writer.printText("doclet.Enum_Constant_Summary");
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addSummaryLabel(Content memberTree) {
-+ Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
-+ writer.getResource("doclet.Enum_Constant_Summary"));
-+ memberTree.addContent(label);
- }
-
-- public void printTableSummary() {
-- writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getTableSummary() {
-+ return configuration().getText("doclet.Member_Table_Summary",
- configuration().getText("doclet.Enum_Constant_Summary"),
-- configuration().getText("doclet.enum_constants")));
-+ configuration().getText("doclet.enum_constants"));
- }
-
-- public void printSummaryTableHeader(ProgramElementDoc member) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getCaption() {
-+ return configuration().getText("doclet.Enum_Constants");
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String[] getSummaryTableHeader(ProgramElementDoc member) {
- String[] header = new String[] {
- configuration().getText("doclet.0_and_1",
- configuration().getText("doclet.Enum_Constant"),
- configuration().getText("doclet.Description"))
- };
-- writer.summaryTableHeader(header, "col");
-+ return header;
- }
-
-- public void printSummaryAnchor(ClassDoc cd) {
-- writer.anchor("enum_constant_summary");
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
-+ memberTree.addContent(writer.getMarkerAnchor("enum_constant_summary"));
- }
-
-- public void printInheritedSummaryAnchor(ClassDoc cd) {
-- } // no such
--
-- public void printInheritedSummaryLabel(ClassDoc cd) {
-- // no such
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
- }
-
-- protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
-- writer.strong();
-- writer.printDocLink(context, (MemberDoc) member, member.name(), false);
-- writer.strongEnd();
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
- }
-
-- protected void writeInheritedSummaryLink(ClassDoc cd,
-- ProgramElementDoc member) {
-- writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, (MemberDoc)member,
-- member.name(), false);
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
-+ Content tdSummary) {
-+ Content strong = HtmlTree.STRONG(new RawHtml(
-+ writer.getDocLink(context, (MemberDoc) member, member.name(), false)));
-+ Content code = HtmlTree.CODE(strong);
-+ tdSummary.addContent(code);
- }
-
-- protected void printSummaryType(ProgramElementDoc member) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ @Override
-+ public void setSummaryColumnStyle(HtmlTree tdTree) {
-+ tdTree.addStyle(HtmlStyle.colOne);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addInheritedSummaryLink(ClassDoc cd,
-+ ProgramElementDoc member, Content linksTree) {
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
- //Not applicable.
- }
-
-- protected void writeDeprecatedLink(ProgramElementDoc member) {
-- writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER,
-- (MemberDoc) member, ((FieldDoc)member).qualifiedName(), false);
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected Content getDeprecatedLink(ProgramElementDoc member) {
-+ return writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER,
-+ (MemberDoc) member, ((FieldDoc)member).qualifiedName());
- }
-
-- protected void printNavSummaryLink(ClassDoc cd, boolean link) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
- if (link) {
-- writer.printHyperLink("", (cd == null)?
-- "enum_constant_summary":
-- "enum_constants_inherited_from_class_" +
-- configuration().getClassName(cd),
-- configuration().getText("doclet.navEnum"));
-+ return writer.getHyperLink("", (cd == null)?
-+ "enum_constant_summary":
-+ "enum_constants_inherited_from_class_" +
-+ configuration().getClassName(cd),
-+ writer.getResource("doclet.navEnum"));
- } else {
-- writer.printText("doclet.navEnum");
-+ return writer.getResource("doclet.navEnum");
- }
- }
-
-- protected void printNavDetailLink(boolean link) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addNavDetailLink(boolean link, Content liNav) {
- if (link) {
-- writer.printHyperLink("", "enum_constant_detail",
-- configuration().getText("doclet.navEnum"));
-+ liNav.addContent(writer.getHyperLink("", "enum_constant_detail",
-+ writer.getResource("doclet.navEnum")));
- } else {
-- writer.printText("doclet.navEnum");
-+ liNav.addContent(writer.getResource("doclet.navEnum"));
- }
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/FieldWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/FieldWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/FieldWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/FieldWriterImpl.java
-@@ -28,6 +28,7 @@
- import java.io.*;
-
- import com.sun.javadoc.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
-
-@@ -42,8 +43,6 @@
- public class FieldWriterImpl extends AbstractMemberWriter
- implements FieldWriter, MemberSummaryWriter {
-
-- private boolean printedSummaryHeader = false;
--
- public FieldWriterImpl(SubWriterHolderWriter writer, ClassDoc classdoc) {
- super(writer, classdoc);
- }
-@@ -53,177 +52,118 @@
- }
-
- /**
-- * Write the fields summary header for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-+ * {@inheritDoc}
- */
-- public void writeMemberSummaryHeader(ClassDoc classDoc) {
-- printedSummaryHeader = true;
-- writer.println("<!-- =========== FIELD SUMMARY =========== -->");
-- writer.println();
-- writer.printSummaryHeader(this, classDoc);
-- }
--
-- /**
-- * Write the fields summary footer for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeMemberSummaryFooter(ClassDoc classDoc) {
-- writer.tableEnd();
-- writer.space();
-- }
--
-- /**
-- * Write the inherited fields summary header for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-- if(! printedSummaryHeader){
-- //We don't want inherited summary to not be under heading.
-- writeMemberSummaryHeader(classDoc);
-- writeMemberSummaryFooter(classDoc);
-- printedSummaryHeader = true;
-- }
-- writer.printInheritedSummaryHeader(this, classDoc);
-+ public Content getMemberSummaryHeader(ClassDoc classDoc,
-+ Content memberSummaryTree) {
-+ memberSummaryTree.addContent(HtmlConstants.START_OF_FIELD_SUMMARY);
-+ Content memberTree = writer.getMemberTreeHeader();
-+ writer.addSummaryHeader(this, classDoc, memberTree);
-+ return memberTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeInheritedMemberSummary(ClassDoc classDoc,
-- ProgramElementDoc field, boolean isFirst, boolean isLast) {
-- writer.printInheritedSummaryMember(this, classDoc, field, isFirst);
-+ public Content getFieldDetailsTreeHeader(ClassDoc classDoc,
-+ Content memberDetailsTree) {
-+ memberDetailsTree.addContent(HtmlConstants.START_OF_FIELD_DETAILS);
-+ Content fieldDetailsTree = writer.getMemberTreeHeader();
-+ fieldDetailsTree.addContent(writer.getMarkerAnchor("field_detail"));
-+ Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
-+ writer.fieldDetailsLabel);
-+ fieldDetailsTree.addContent(heading);
-+ return fieldDetailsTree;
- }
-
- /**
-- * Write the inherited fields summary footer for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-+ * {@inheritDoc}
- */
-- public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {
-- writer.printInheritedSummaryFooter(this, classDoc);
-+ public Content getFieldDocTreeHeader(FieldDoc field,
-+ Content fieldDetailsTree) {
-+ fieldDetailsTree.addContent(
-+ writer.getMarkerAnchor(field.name()));
-+ Content fieldDocTree = writer.getMemberTreeHeader();
-+ Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
-+ heading.addContent(field.name());
-+ fieldDocTree.addContent(heading);
-+ return fieldDocTree;
- }
-
- /**
-- * Write the header for the field documentation.
-- *
-- * @param classDoc the class that the fields belong to.
-+ * {@inheritDoc}
- */
-- public void writeHeader(ClassDoc classDoc, String header) {
-- writer.println();
-- writer.println("<!-- ============ FIELD DETAIL =========== -->");
-- writer.println();
-- writer.anchor("field_detail");
-- writer.printTableHeadingBackground(header);
-- writer.println();
-+ public Content getSignature(FieldDoc field) {
-+ Content pre = new HtmlTree(HtmlTag.PRE);
-+ writer.addAnnotationInfo(field, pre);
-+ addModifiers(field, pre);
-+ Content fieldlink = new RawHtml(writer.getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-+ field.type())));
-+ pre.addContent(fieldlink);
-+ pre.addContent(" ");
-+ if (configuration().linksource) {
-+ Content fieldName = new StringContent(field.name());
-+ writer.addSrcLink(field, fieldName, pre);
-+ } else {
-+ addName(field.name(), pre);
-+ }
-+ return pre;
- }
-
- /**
-- * Write the field header for the given field.
-- *
-- * @param field the field being documented.
-- * @param isFirst the flag to indicate whether or not the field is the
-- * first to be documented.
-+ * {@inheritDoc}
- */
-- public void writeFieldHeader(FieldDoc field, boolean isFirst) {
-- if (! isFirst) {
-- writer.printMemberHeader();
-- writer.println("");
-- }
-- writer.anchor(field.name());
-- writer.h3();
-- writer.print(field.name());
-- writer.h3End();
-+ public void addDeprecated(FieldDoc field, Content fieldDocTree) {
-+ addDeprecatedInfo(field, fieldDocTree);
- }
-
- /**
-- * Write the signature for the given field.
-- *
-- * @param field the field being documented.
-+ * {@inheritDoc}
- */
-- public void writeSignature(FieldDoc field) {
-- writer.pre();
-- writer.writeAnnotationInfo(field);
-- printModifiers(field);
-- writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-- field.type()));
-- print(' ');
-- if (configuration().linksource) {
-- writer.printSrcLink(field, field.name());
-- } else {
-- strong(field.name());
-- }
-- writer.preEnd();
-- assert !writer.getMemberDetailsListPrinted();
-- }
--
-- /**
-- * Write the deprecated output for the given field.
-- *
-- * @param field the field being documented.
-- */
-- public void writeDeprecated(FieldDoc field) {
-- printDeprecated(field);
-- }
--
-- /**
-- * Write the comments for the given field.
-- *
-- * @param field the field being documented.
-- */
-- public void writeComments(FieldDoc field) {
-+ public void addComments(FieldDoc field, Content fieldDocTree) {
- ClassDoc holder = field.containingClass();
- if (field.inlineTags().length > 0) {
-- writer.printMemberDetailsListStartTag();
- if (holder.equals(classdoc) ||
-- (! (holder.isPublic() || Util.isLinkable(holder, configuration())))) {
-- writer.dd();
-- writer.printInlineComment(field);
-- writer.ddEnd();
-+ (! (holder.isPublic() || Util.isLinkable(holder, configuration())))) {
-+ writer.addInlineComment(field, fieldDocTree);
- } else {
-- String classlink = writer.codeText(
-- writer.getDocLink(LinkInfoImpl.CONTEXT_FIELD_DOC_COPY,
-+ Content link = new RawHtml(
-+ writer.getDocLink(LinkInfoImpl.CONTEXT_FIELD_DOC_COPY,
- holder, field,
- holder.isIncluded() ?
- holder.typeName() : holder.qualifiedTypeName(),
-- false));
-- writer.dd();
-- writer.strong(configuration().getText(holder.isClass()?
-- "doclet.Description_From_Class" :
-- "doclet.Description_From_Interface", classlink));
-- writer.ddEnd();
-- writer.dd();
-- writer.printInlineComment(field);
-- writer.ddEnd();
-+ false));
-+ Content codeLink = HtmlTree.CODE(link);
-+ Content strong = HtmlTree.STRONG(holder.isClass()?
-+ writer.descfrmClassLabel : writer.descfrmInterfaceLabel);
-+ strong.addContent(writer.getSpace());
-+ strong.addContent(codeLink);
-+ fieldDocTree.addContent(HtmlTree.DIV(HtmlStyle.block, strong));
-+ writer.addInlineComment(field, fieldDocTree);
- }
- }
- }
-
- /**
-- * Write the tag output for the given field.
-- *
-- * @param field the field being documented.
-+ * {@inheritDoc}
- */
-- public void writeTags(FieldDoc field) {
-- writer.printTags(field);
-+ public void addTags(FieldDoc field, Content fieldDocTree) {
-+ writer.addTagsInfo(field, fieldDocTree);
- }
-
- /**
-- * Write the field footer.
-+ * {@inheritDoc}
- */
-- public void writeFieldFooter() {
-- printMemberFooter();
-+ public Content getFieldDetails(Content fieldDetailsTree) {
-+ return getMemberTree(fieldDetailsTree);
- }
-
- /**
-- * Write the footer for the field documentation.
-- *
-- * @param classDoc the class that the fields belong to.
-+ * {@inheritDoc}
- */
-- public void writeFooter(ClassDoc classDoc) {
-- //No footer to write for field documentation
-+ public Content getFieldDoc(Content fieldDocTree,
-+ boolean isLastContent) {
-+ return getMemberTree(fieldDocTree, isLastContent);
- }
-
- /**
-@@ -237,85 +177,136 @@
- return VisibleMemberMap.FIELDS;
- }
-
-- public void printSummaryLabel() {
-- writer.printText("doclet.Field_Summary");
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addSummaryLabel(Content memberTree) {
-+ Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
-+ writer.getResource("doclet.Field_Summary"));
-+ memberTree.addContent(label);
- }
-
-- public void printTableSummary() {
-- writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getTableSummary() {
-+ return configuration().getText("doclet.Member_Table_Summary",
- configuration().getText("doclet.Field_Summary"),
-- configuration().getText("doclet.fields")));
-+ configuration().getText("doclet.fields"));
- }
-
-- public void printSummaryTableHeader(ProgramElementDoc member) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getCaption() {
-+ return configuration().getText("doclet.Fields");
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String[] getSummaryTableHeader(ProgramElementDoc member) {
- String[] header = new String[] {
- writer.getModifierTypeHeader(),
- configuration().getText("doclet.0_and_1",
- configuration().getText("doclet.Field"),
- configuration().getText("doclet.Description"))
- };
-- writer.summaryTableHeader(header, "col");
-+ return header;
- }
-
-- public void printSummaryAnchor(ClassDoc cd) {
-- writer.anchor("field_summary");
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
-+ memberTree.addContent(writer.getMarkerAnchor("field_summary"));
- }
-
-- public void printInheritedSummaryAnchor(ClassDoc cd) {
-- writer.anchor("fields_inherited_from_class_" + configuration().getClassName(cd));
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
-+ inheritedTree.addContent(writer.getMarkerAnchor(
-+ "fields_inherited_from_class_" + configuration().getClassName(cd)));
- }
-
-- public void printInheritedSummaryLabel(ClassDoc cd) {
-- String classlink = writer.getPreQualifiedClassLink(
-- LinkInfoImpl.CONTEXT_MEMBER, cd, false);
-- writer.strong();
-- String key = cd.isClass()?
-- "doclet.Fields_Inherited_From_Class" :
-- "doclet.Fields_Inherited_From_Interface";
-- writer.printText(key, classlink);
-- writer.strongEnd();
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
-+ Content classLink = new RawHtml(writer.getPreQualifiedClassLink(
-+ LinkInfoImpl.CONTEXT_MEMBER, cd, false));
-+ Content label = new StringContent(cd.isClass() ?
-+ configuration().getText("doclet.Fields_Inherited_From_Class") :
-+ configuration().getText("doclet.Fields_Inherited_From_Interface"));
-+ Content labelHeading = HtmlTree.HEADING(HtmlConstants.INHERITED_SUMMARY_HEADING,
-+ label);
-+ labelHeading.addContent(writer.getSpace());
-+ labelHeading.addContent(classLink);
-+ inheritedTree.addContent(labelHeading);
- }
-
-- protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
-- writer.strong();
-- writer.printDocLink(context, cd , (MemberDoc) member, member.name(), false);
-- writer.strongEnd();
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
-+ Content tdSummary) {
-+ Content strong = HtmlTree.STRONG(new RawHtml(
-+ writer.getDocLink(context, cd , (MemberDoc) member, member.name(), false)));
-+ Content code = HtmlTree.CODE(strong);
-+ tdSummary.addContent(code);
- }
-
-- protected void writeInheritedSummaryLink(ClassDoc cd,
-- ProgramElementDoc member) {
-- writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc)member,
-- member.name(), false);
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addInheritedSummaryLink(ClassDoc cd,
-+ ProgramElementDoc member, Content linksTree) {
-+ linksTree.addContent(new RawHtml(
-+ writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc)member,
-+ member.name(), false)));
- }
-
-- protected void printSummaryType(ProgramElementDoc member) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
- FieldDoc field = (FieldDoc)member;
-- printModifierAndType(field, field.type());
-+ addModifierAndType(field, field.type(), tdSummaryType);
- }
-
-- protected void writeDeprecatedLink(ProgramElementDoc member) {
-- writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER,
-- (MemberDoc) member, ((FieldDoc)member).qualifiedName(), false);
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected Content getDeprecatedLink(ProgramElementDoc member) {
-+ return writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER,
-+ (MemberDoc) member, ((FieldDoc)member).qualifiedName());
- }
-
-- protected void printNavSummaryLink(ClassDoc cd, boolean link) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
- if (link) {
-- writer.printHyperLink("", (cd == null)?
-- "field_summary":
-- "fields_inherited_from_class_" +
-- configuration().getClassName(cd),
-- configuration().getText("doclet.navField"));
-+ return writer.getHyperLink("", (cd == null)?
-+ "field_summary":
-+ "fields_inherited_from_class_" +
-+ configuration().getClassName(cd),
-+ writer.getResource("doclet.navField"));
- } else {
-- writer.printText("doclet.navField");
-+ return writer.getResource("doclet.navField");
- }
- }
-
-- protected void printNavDetailLink(boolean link) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addNavDetailLink(boolean link, Content liNav) {
- if (link) {
-- writer.printHyperLink("", "field_detail",
-- configuration().getText("doclet.navField"));
-+ liNav.addContent(writer.getHyperLink("", "field_detail",
-+ writer.getResource("doclet.navField")));
- } else {
-- writer.printText("doclet.navField");
-+ liNav.addContent(writer.getResource("doclet.navField"));
- }
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java
-@@ -25,8 +25,10 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.io.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
--import java.io.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Generate the documentation in the Html "frame" format in the browser. The
-@@ -47,6 +49,8 @@
- */
- int noOfPackages;
-
-+ private final String SCROLL_YES = "yes";
-+
- /**
- * Constructor to construct FrameOutputWriter object.
- *
-@@ -86,82 +90,93 @@
- * as well as warning if browser is not supporting the Html frames.
- */
- protected void generateFrameFile() {
-+ Content frameset = getFrameDetails();
- if (configuration.windowtitle.length() > 0) {
-- printFramesetHeader(configuration.windowtitle, configuration.notimestamp);
-+ printFramesetDocument(configuration.windowtitle, configuration.notimestamp,
-+ frameset);
- } else {
-- printFramesetHeader(configuration.getText("doclet.Generated_Docs_Untitled"),
-- configuration.notimestamp);
-+ printFramesetDocument(configuration.getText("doclet.Generated_Docs_Untitled"),
-+ configuration.notimestamp, frameset);
- }
-- printFrameDetails();
-- printFrameFooter();
- }
-
- /**
-- * Generate the code for issueing the warning for a non-frame capable web
-+ * Add the code for issueing the warning for a non-frame capable web
- * client. Also provide links to the non-frame version documentation.
-+ *
-+ * @param contentTree the content tree to which the non-frames information will be added
- */
-- protected void printFrameWarning() {
-- noFrames();
-- h2();
-- printText("doclet.Frame_Alert");
-- h2End();
-- p();
-- printText("doclet.Frame_Warning_Message");
-- br();
-- printText("doclet.Link_To");
-- printHyperLink(configuration.topFile,
-- configuration.getText("doclet.Non_Frame_Version"));
-- println("");
-- noFramesEnd();
-+ protected void addFrameWarning(Content contentTree) {
-+ Content noframes = new HtmlTree(HtmlTag.NOFRAMES);
-+ Content noScript = HtmlTree.NOSCRIPT(
-+ HtmlTree.DIV(getResource("doclet.No_Script_Message")));
-+ noframes.addContent(noScript);
-+ Content noframesHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Frame_Alert"));
-+ noframes.addContent(noframesHead);
-+ Content p = HtmlTree.P(getResource("doclet.Frame_Warning_Message"));
-+ noframes.addContent(p);
-+ noframes.addContent(new HtmlTree(HtmlTag.BR));
-+ noframes.addContent(getResource("doclet.Link_To"));
-+ Content link = getHyperLink(configuration.topFile,
-+ getResource("doclet.Non_Frame_Version"));
-+ noframes.addContent(link);
-+ contentTree.addContent(noframes);
- }
-
- /**
-- * Print the frame sizes and their contents.
-+ * Get the frame sizes and their contents.
-+ *
-+ * @return a content tree for the frame details
- */
-- protected void printFrameDetails() {
-- // title attribute intentionally made empty so
-- // 508 tests will not flag it as missing
-- frameSet("cols=\"20%,80%\" title=\"\" onLoad=\"top.loadFrames()\"");
-+ protected Content getFrameDetails() {
-+ HtmlTree frameset = HtmlTree.FRAMESET("20%,80%", null, "Documentation frame",
-+ "top.loadFrames()");
- if (noOfPackages <= 1) {
-- printAllClassesFrameTag();
-+ addAllClassesFrameTag(frameset);
- } else if (noOfPackages > 1) {
-- frameSet("rows=\"30%,70%\" title=\"\" onLoad=\"top.loadFrames()\"");
-- printAllPackagesFrameTag();
-- printAllClassesFrameTag();
-- frameSetEnd();
-+ HtmlTree leftFrameset = HtmlTree.FRAMESET(null, "30%,70%", "Left frames",
-+ "top.loadFrames()");
-+ addAllPackagesFrameTag(leftFrameset);
-+ addAllClassesFrameTag(leftFrameset);
-+ frameset.addContent(leftFrameset);
- }
-- printClassFrameTag();
-- printFrameWarning();
-- frameSetEnd();
-+ addClassFrameTag(frameset);
-+ addFrameWarning(frameset);
-+ return frameset;
- }
-
- /**
-- * Print the FRAME tag for the frame that lists all packages
-+ * Add the FRAME tag for the frame that lists all packages.
-+ *
-+ * @param contentTree the content tree to which the information will be added
- */
-- private void printAllPackagesFrameTag() {
-- frame("src=\"overview-frame.html\" name=\"packageListFrame\""
-- + " title=\"" + configuration.getText("doclet.All_Packages") + "\"");
-+ private void addAllPackagesFrameTag(Content contentTree) {
-+ HtmlTree frame = HtmlTree.FRAME("overview-frame.html", "packageListFrame",
-+ configuration.getText("doclet.All_Packages"));
-+ contentTree.addContent(frame);
- }
-
- /**
-- * Print the FRAME tag for the frame that lists all classes
-+ * Add the FRAME tag for the frame that lists all classes.
-+ *
-+ * @param contentTree the content tree to which the information will be added
- */
-- private void printAllClassesFrameTag() {
-- frame("src=\"" + "allclasses-frame.html" + "\""
-- + " name=\"packageFrame\""
-- + " title=\"" + configuration.getText("doclet.All_classes_and_interfaces")
-- + "\"");
-+ private void addAllClassesFrameTag(Content contentTree) {
-+ HtmlTree frame = HtmlTree.FRAME("allclasses-frame.html", "packageFrame",
-+ configuration.getText("doclet.All_classes_and_interfaces"));
-+ contentTree.addContent(frame);
- }
-
- /**
-- * Print the FRAME tag for the frame that describes the class in detail
-+ * Add the FRAME tag for the frame that describes the class in detail.
-+ *
-+ * @param contentTree the content tree to which the information will be added
- */
-- private void printClassFrameTag() {
-- frame("src=\"" + configuration.topFile + "\""
-- + " name=\"classFrame\""
-- + " title=\""
-- + configuration.getText("doclet.Package_class_and_interface_descriptions")
-- + "\" scrolling=\"yes\"");
-+ private void addClassFrameTag(Content contentTree) {
-+ HtmlTree frame = HtmlTree.FRAME(configuration.topFile, "classFrame",
-+ configuration.getText("doclet.Package_class_and_interface_descriptions"),
-+ SCROLL_YES);
-+ contentTree.addContent(frame);
- }
--
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/HelpWriter.java
-@@ -25,8 +25,10 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.io.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
--import java.io.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Generate the Help File for the generated API documentation. The help file
-@@ -72,159 +74,242 @@
- * Generate the help file contents.
- */
- protected void generateHelpFile() {
-- printHtmlHeader(configuration.getText("doclet.Window_Help_title"),
-- null, true);
-- printTop();
-- navLinks(true); hr();
--
-- printHelpFileContents();
--
-- navLinks(false);
-- printBottom();
-- printBodyHtmlEnd();
-+ String title = configuration.getText("doclet.Window_Help_title");
-+ Content body = getBody(true, getWindowTitle(title));
-+ addTop(body);
-+ addNavLinks(true, body);
-+ addHelpFileContents(body);
-+ addNavLinks(false, body);
-+ addBottom(body);
-+ printHtmlDocument(null, true, body);
- }
-
- /**
-- * Print the help file contents from the resource file. While generating the
-+ * Add the help file contents from the resource file to the content tree. While adding the
- * help file contents it also keeps track of user options. If "-notree"
-- * is used, then the "overview-tree.html" will not get generated and hence
-- * help information also will not get generated.
-+ * is used, then the "overview-tree.html" will not get added and hence
-+ * help information also will not get added.
-+ *
-+ * @param contentTree the content tree to which the help file contents will be added
- */
-- protected void printHelpFileContents() {
-- center(); h1(); printText("doclet.Help_line_1"); h1End(); centerEnd();
-- printText("doclet.Help_line_2");
-+ protected void addHelpFileContents(Content contentTree) {
-+ Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, false, HtmlStyle.title,
-+ getResource("doclet.Help_line_1"));
-+ Content div = HtmlTree.DIV(HtmlStyle.header, heading);
-+ Content line2 = HtmlTree.P(HtmlStyle.subTitle,
-+ getResource("doclet.Help_line_2"));
-+ div.addContent(line2);
-+ contentTree.addContent(div);
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.blockList);
- if (configuration.createoverview) {
-- h3(); printText("doclet.Overview"); h3End();
-- blockquote(); p();
-- printText("doclet.Help_line_3",
-- getHyperLink("overview-summary.html",
-- configuration.getText("doclet.Overview")));
-- blockquoteEnd();
-+ Content overviewHeading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Overview"));
-+ Content liOverview = HtmlTree.LI(HtmlStyle.blockList, overviewHeading);
-+ Content line3 = getResource("doclet.Help_line_3",
-+ getHyperLinkString("overview-summary.html",
-+ configuration.getText("doclet.Overview")));
-+ Content overviewPara = HtmlTree.P(line3);
-+ liOverview.addContent(overviewPara);
-+ ul.addContent(liOverview);
- }
-- h3(); printText("doclet.Package"); h3End();
-- blockquote(); p(); printText("doclet.Help_line_4");
-- ul();
-- li(); printText("doclet.Interfaces_Italic");
-- li(); printText("doclet.Classes");
-- li(); printText("doclet.Enums");
-- li(); printText("doclet.Exceptions");
-- li(); printText("doclet.Errors");
-- li(); printText("doclet.AnnotationTypes");
-- ulEnd();
-- blockquoteEnd();
-- h3(); printText("doclet.Help_line_5"); h3End();
-- blockquote(); p(); printText("doclet.Help_line_6");
-- ul();
-- li(); printText("doclet.Help_line_7");
-- li(); printText("doclet.Help_line_8");
-- li(); printText("doclet.Help_line_9");
-- li(); printText("doclet.Help_line_10");
-- li(); printText("doclet.Help_line_11");
-- li(); printText("doclet.Help_line_12");
-- p();
-- li(); printText("doclet.Nested_Class_Summary");
-- li(); printText("doclet.Field_Summary");
-- li(); printText("doclet.Constructor_Summary");
-- li(); printText("doclet.Method_Summary");
-- p();
-- li(); printText("doclet.Field_Detail");
-- li(); printText("doclet.Constructor_Detail");
-- li(); printText("doclet.Method_Detail");
-- ulEnd();
-- printText("doclet.Help_line_13");
-- blockquoteEnd();
--
-+ Content packageHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Package"));
-+ Content liPackage = HtmlTree.LI(HtmlStyle.blockList, packageHead);
-+ Content line4 = getResource("doclet.Help_line_4");
-+ Content packagePara = HtmlTree.P(line4);
-+ liPackage.addContent(packagePara);
-+ HtmlTree ulPackage = new HtmlTree(HtmlTag.UL);
-+ ulPackage.addContent(HtmlTree.LI(
-+ getResource("doclet.Interfaces_Italic")));
-+ ulPackage.addContent(HtmlTree.LI(
-+ getResource("doclet.Classes")));
-+ ulPackage.addContent(HtmlTree.LI(
-+ getResource("doclet.Enums")));
-+ ulPackage.addContent(HtmlTree.LI(
-+ getResource("doclet.Exceptions")));
-+ ulPackage.addContent(HtmlTree.LI(
-+ getResource("doclet.Errors")));
-+ ulPackage.addContent(HtmlTree.LI(
-+ getResource("doclet.AnnotationTypes")));
-+ liPackage.addContent(ulPackage);
-+ ul.addContent(liPackage);
-+ Content classHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Help_line_5"));
-+ Content liClass = HtmlTree.LI(HtmlStyle.blockList, classHead);
-+ Content line6 = getResource("doclet.Help_line_6");
-+ Content classPara = HtmlTree.P(line6);
-+ liClass.addContent(classPara);
-+ HtmlTree ul1 = new HtmlTree(HtmlTag.UL);
-+ ul1.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_line_7")));
-+ ul1.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_line_8")));
-+ ul1.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_line_9")));
-+ ul1.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_line_10")));
-+ ul1.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_line_11")));
-+ ul1.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_line_12")));
-+ liClass.addContent(ul1);
-+ HtmlTree ul2 = new HtmlTree(HtmlTag.UL);
-+ ul2.addContent(HtmlTree.LI(
-+ getResource("doclet.Nested_Class_Summary")));
-+ ul2.addContent(HtmlTree.LI(
-+ getResource("doclet.Field_Summary")));
-+ ul2.addContent(HtmlTree.LI(
-+ getResource("doclet.Constructor_Summary")));
-+ ul2.addContent(HtmlTree.LI(
-+ getResource("doclet.Method_Summary")));
-+ liClass.addContent(ul2);
-+ HtmlTree ul3 = new HtmlTree(HtmlTag.UL);
-+ ul3.addContent(HtmlTree.LI(
-+ getResource("doclet.Field_Detail")));
-+ ul3.addContent(HtmlTree.LI(
-+ getResource("doclet.Constructor_Detail")));
-+ ul3.addContent(HtmlTree.LI(
-+ getResource("doclet.Method_Detail")));
-+ liClass.addContent(ul3);
-+ Content line13 = getResource("doclet.Help_line_13");
-+ Content para = HtmlTree.P(line13);
-+ liClass.addContent(para);
-+ ul.addContent(liClass);
- //Annotation Types
-- blockquoteEnd();
-- h3(); printText("doclet.AnnotationType"); h3End();
-- blockquote(); p(); printText("doclet.Help_annotation_type_line_1");
-- ul();
-- li(); printText("doclet.Help_annotation_type_line_2");
-- li(); printText("doclet.Help_annotation_type_line_3");
-- li(); printText("doclet.Annotation_Type_Required_Member_Summary");
-- li(); printText("doclet.Annotation_Type_Optional_Member_Summary");
-- li(); printText("doclet.Annotation_Type_Member_Detail");
-- ulEnd();
-- blockquoteEnd();
--
-+ Content aHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.AnnotationType"));
-+ Content liAnnotation = HtmlTree.LI(HtmlStyle.blockList, aHead);
-+ Content aline1 = getResource("doclet.Help_annotation_type_line_1");
-+ Content aPara = HtmlTree.P(aline1);
-+ liAnnotation.addContent(aPara);
-+ HtmlTree aul = new HtmlTree(HtmlTag.UL);
-+ aul.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_annotation_type_line_2")));
-+ aul.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_annotation_type_line_3")));
-+ aul.addContent(HtmlTree.LI(
-+ getResource("doclet.Annotation_Type_Required_Member_Summary")));
-+ aul.addContent(HtmlTree.LI(
-+ getResource("doclet.Annotation_Type_Optional_Member_Summary")));
-+ aul.addContent(HtmlTree.LI(
-+ getResource("doclet.Annotation_Type_Member_Detail")));
-+ liAnnotation.addContent(aul);
-+ ul.addContent(liAnnotation);
- //Enums
-- blockquoteEnd();
-- h3(); printText("doclet.Enum"); h3End();
-- blockquote(); p(); printText("doclet.Help_enum_line_1");
-- ul();
-- li(); printText("doclet.Help_enum_line_2");
-- li(); printText("doclet.Help_enum_line_3");
-- li(); printText("doclet.Enum_Constant_Summary");
-- li(); printText("doclet.Enum_Constant_Detail");
-- ulEnd();
-- blockquoteEnd();
--
-+ Content enumHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Enum"));
-+ Content liEnum = HtmlTree.LI(HtmlStyle.blockList, enumHead);
-+ Content eline1 = getResource("doclet.Help_enum_line_1");
-+ Content enumPara = HtmlTree.P(eline1);
-+ liEnum.addContent(enumPara);
-+ HtmlTree eul = new HtmlTree(HtmlTag.UL);
-+ eul.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_enum_line_2")));
-+ eul.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_enum_line_3")));
-+ eul.addContent(HtmlTree.LI(
-+ getResource("doclet.Enum_Constant_Summary")));
-+ eul.addContent(HtmlTree.LI(
-+ getResource("doclet.Enum_Constant_Detail")));
-+ liEnum.addContent(eul);
-+ ul.addContent(liEnum);
- if (configuration.classuse) {
-- h3(); printText("doclet.Help_line_14"); h3End();
-- blockquote();
-- printText("doclet.Help_line_15");
-- blockquoteEnd();
-+ Content useHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Help_line_14"));
-+ Content liUse = HtmlTree.LI(HtmlStyle.blockList, useHead);
-+ Content line15 = getResource("doclet.Help_line_15");
-+ Content usePara = HtmlTree.P(line15);
-+ liUse.addContent(usePara);
-+ ul.addContent(liUse);
- }
- if (configuration.createtree) {
-- h3(); printText("doclet.Help_line_16"); h3End();
-- blockquote();
-- printText("doclet.Help_line_17_with_tree_link",
-- getHyperLink("overview-tree.html",
-- configuration.getText("doclet.Class_Hierarchy")));
-- ul();
-- li(); printText("doclet.Help_line_18");
-- li(); printText("doclet.Help_line_19");
-- ulEnd();
-- blockquoteEnd();
-+ Content treeHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Help_line_16"));
-+ Content liTree = HtmlTree.LI(HtmlStyle.blockList, treeHead);
-+ Content line17 = getResource("doclet.Help_line_17_with_tree_link",
-+ getHyperLinkString("overview-tree.html",
-+ configuration.getText("doclet.Class_Hierarchy")));
-+ Content treePara = HtmlTree.P(line17);
-+ liTree.addContent(treePara);
-+ HtmlTree tul = new HtmlTree(HtmlTag.UL);
-+ tul.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_line_18")));
-+ tul.addContent(HtmlTree.LI(
-+ getResource("doclet.Help_line_19")));
-+ liTree.addContent(tul);
-+ ul.addContent(liTree);
- }
- if (!(configuration.nodeprecatedlist ||
- configuration.nodeprecated)) {
-- h3(); printText("doclet.Deprecated_API"); h3End();
-- blockquote();
-- printText("doclet.Help_line_20_with_deprecated_api_link",
-- getHyperLink("deprecated-list.html",
-- configuration.getText("doclet.Deprecated_API")));
-- blockquoteEnd();
-+ Content dHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Deprecated_API"));
-+ Content liDeprecated = HtmlTree.LI(HtmlStyle.blockList, dHead);
-+ Content line20 = getResource("doclet.Help_line_20_with_deprecated_api_link",
-+ getHyperLinkString("deprecated-list.html",
-+ configuration.getText("doclet.Deprecated_API")));
-+ Content dPara = HtmlTree.P(line20);
-+ liDeprecated.addContent(dPara);
-+ ul.addContent(liDeprecated);
- }
- if (configuration.createindex) {
- String indexlink;
- if (configuration.splitindex) {
-- indexlink = getHyperLink("index-files/index-1.html",
-- configuration.getText("doclet.Index"));
-+ indexlink = getHyperLinkString("index-files/index-1.html",
-+ configuration.getText("doclet.Index"));
- } else {
-- indexlink = getHyperLink("index-all.html",
-- configuration.getText("doclet.Index"));
-+ indexlink = getHyperLinkString("index-all.html",
-+ configuration.getText("doclet.Index"));
- }
-- h3(); printText("doclet.Help_line_21"); h3End();
-- blockquote();
-- printText("doclet.Help_line_22", indexlink);
-- blockquoteEnd();
-+ Content indexHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Help_line_21"));
-+ Content liIndex = HtmlTree.LI(HtmlStyle.blockList, indexHead);
-+ Content line22 = getResource("doclet.Help_line_22", indexlink);
-+ Content indexPara = HtmlTree.P(line22);
-+ liIndex.addContent(indexPara);
-+ ul.addContent(liIndex);
- }
-- h3(); printText("doclet.Help_line_23"); h3End();
-- printText("doclet.Help_line_24");
-- h3(); printText("doclet.Help_line_25"); h3End();
-- printText("doclet.Help_line_26"); p();
--
-- h3(); printText("doclet.Serialized_Form"); h3End();
-- printText("doclet.Help_line_27"); p();
--
-- h3(); printText("doclet.Constants_Summary"); h3End();
-- printText("doclet.Help_line_28"); p();
--
-- font("-1"); em();
-- printText("doclet.Help_line_29");
-- emEnd(); fontEnd(); br();
-- hr();
-+ Content prevHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Help_line_23"));
-+ Content liPrev = HtmlTree.LI(HtmlStyle.blockList, prevHead);
-+ Content line24 = getResource("doclet.Help_line_24");
-+ Content prevPara = HtmlTree.P(line24);
-+ liPrev.addContent(prevPara);
-+ ul.addContent(liPrev);
-+ Content frameHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Help_line_25"));
-+ Content liFrame = HtmlTree.LI(HtmlStyle.blockList, frameHead);
-+ Content line26 = getResource("doclet.Help_line_26");
-+ Content framePara = HtmlTree.P(line26);
-+ liFrame.addContent(framePara);
-+ ul.addContent(liFrame);
-+ Content sHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Serialized_Form"));
-+ Content liSerial = HtmlTree.LI(HtmlStyle.blockList, sHead);
-+ Content line27 = getResource("doclet.Help_line_27");
-+ Content serialPara = HtmlTree.P(line27);
-+ liSerial.addContent(serialPara);
-+ ul.addContent(liSerial);
-+ Content constHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ getResource("doclet.Constants_Summary"));
-+ Content liConst = HtmlTree.LI(HtmlStyle.blockList, constHead);
-+ Content line28 = getResource("doclet.Help_line_28");
-+ Content constPara = HtmlTree.P(line28);
-+ liConst.addContent(constPara);
-+ ul.addContent(liConst);
-+ Content divContent = HtmlTree.DIV(HtmlStyle.contentContainer, ul);
-+ Content line29 = HtmlTree.EM(getResource("doclet.Help_line_29"));
-+ divContent.addContent(line29);
-+ contentTree.addContent(divContent);
- }
-
- /**
-- * Highlight the word "Help" in the navigation bar as this is the help file.
-+ * Get the help label.
-+ *
-+ * @return a content tree for the help label
- */
-- protected void navLinkHelp() {
-- navCellRevStart();
-- fontStyle("NavBarFont1Rev");
-- strongText("doclet.Help");
-- fontEnd();
-- navCellEnd();
-+ protected Content getNavLinkHelp() {
-+ Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, helpLabel);
-+ return li;
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java b/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java
-@@ -144,8 +144,11 @@
- !configuration.nohelp) {
- HelpWriter.generate(configuration);
- }
-+ // If a stylesheet file is not specified, copy the default stylesheet.
- if (configuration.stylesheetfile.length() == 0) {
-- StylesheetWriter.generate(configuration);
-+ Util.copyFile(configuration, "stylesheet.css", Util.RESOURCESDIR,
-+ (configdestdir.isEmpty()) ?
-+ System.getProperty("user.dir") : configdestdir, false);
- }
- }
-
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java
-@@ -88,6 +88,11 @@
- public ConfigurationImpl configuration;
-
- /**
-+ * To check whether annotation heading is printed or not.
-+ */
-+ protected boolean printedAnnotationHeading = false;
-+
-+ /**
- * Constructor to construct the HtmlStandardWriter object.
- *
- * @param filename File to be generated.
-@@ -169,7 +174,7 @@
- // Append slash if next character is not a slash
- if (relativepathNoSlash.length() > 0 && previndex < htmlstr.length()
- && htmlstr.charAt(previndex) != '/') {
-- buf.append(DirectoryManager.URL_FILE_SEPERATOR);
-+ buf.append(DirectoryManager.URL_FILE_SEPARATOR);
- }
- }
- return buf.toString();
-@@ -192,17 +197,47 @@
- println(" <!--");
- println(" if(window==top) {");
- println(" document.writeln('"
-- + getHyperLink(link, where, label, strong, "", "", target) + "');");
-+ + getHyperLinkString(link, where, label, strong, "", "", target) + "');");
- println(" }");
- println(" //-->");
- scriptEnd();
- noScript();
-- println(" " + getHyperLink(link, where, label, strong, "", "", target));
-+ println(" " + getHyperLinkString(link, where, label, strong, "", "", target));
- noScriptEnd();
- println(DocletConstants.NL);
- }
-
-- private void printMethodInfo(MethodDoc method) {
-+ /**
-+ * Get the script to show or hide the All classes link.
-+ *
-+ * @param id id of the element to show or hide
-+ * @return a content tree for the script
-+ */
-+ public Content getAllClassesLinkScript(String id) {
-+ HtmlTree script = new HtmlTree(HtmlTag.SCRIPT);
-+ script.addAttr(HtmlAttr.TYPE, "text/javascript");
-+ String scriptCode = "<!--\n" +
-+ " allClassesLink = document.getElementById(\"" + id + "\");\n" +
-+ " if(window==top) {\n" +
-+ " allClassesLink.style.display = \"block\";\n" +
-+ " }\n" +
-+ " else {\n" +
-+ " allClassesLink.style.display = \"none\";\n" +
-+ " }\n" +
-+ " //-->\n";
-+ Content scriptContent = new RawHtml(scriptCode);
-+ script.addContent(scriptContent);
-+ Content div = HtmlTree.DIV(script);
-+ return div;
-+ }
-+
-+ /**
-+ * Add method information.
-+ *
-+ * @param method the method to be documented
-+ * @param dl the content tree to which the method information will be added
-+ */
-+ private void addMethodInfo(MethodDoc method, Content dl) {
- ClassDoc[] intfacs = method.containingClass().interfaces();
- MethodDoc overriddenMethod = method.overriddenMethod();
- // Check whether there is any implementation or overridden info to be
-@@ -211,44 +246,38 @@
- if ((intfacs.length > 0 &&
- new ImplementedMethods(method, this.configuration).build().length > 0) ||
- overriddenMethod != null) {
-- printMemberDetailsListStartTag();
-- dd();
-- printTagsInfoHeader();
-- MethodWriterImpl.printImplementsInfo(this, method);
-+ MethodWriterImpl.addImplementsInfo(this, method, dl);
- if (overriddenMethod != null) {
-- MethodWriterImpl.printOverridden(this,
-- method.overriddenType(), overriddenMethod);
-+ MethodWriterImpl.addOverridden(this,
-+ method.overriddenType(), overriddenMethod, dl);
- }
-- printTagsInfoFooter();
-- ddEnd();
- }
- }
-
-- protected void printTags(Doc doc) {
-- if(configuration.nocomment){
-+ /**
-+ * Adds the tags information.
-+ *
-+ * @param doc the doc for which the tags will be generated
-+ * @param htmltree the documentation tree to which the tags will be added
-+ */
-+ protected void addTagsInfo(Doc doc, Content htmltree) {
-+ if (configuration.nocomment) {
- return;
- }
-+ Content dl = new HtmlTree(HtmlTag.DL);
- if (doc instanceof MethodDoc) {
-- printMethodInfo((MethodDoc) doc);
-+ addMethodInfo((MethodDoc) doc, dl);
- }
- TagletOutputImpl output = new TagletOutputImpl("");
- TagletWriter.genTagOuput(configuration.tagletManager, doc,
- configuration.tagletManager.getCustomTags(doc),
- getTagletWriterInstance(false), output);
- String outputString = output.toString().trim();
-- // For RootDoc and ClassDoc, this section is not the definition description
-- // but the start of definition list.
- if (!outputString.isEmpty()) {
-- if (!(doc instanceof RootDoc || doc instanceof ClassDoc)) {
-- printMemberDetailsListStartTag();
-- dd();
-- }
-- printTagsInfoHeader();
-- print(outputString);
-- printTagsInfoFooter();
-- if (!(doc instanceof RootDoc || doc instanceof ClassDoc))
-- ddEnd();
-+ Content resultString = new RawHtml(outputString);
-+ dl.addContent(resultString);
- }
-+ htmltree.addContent(dl);
- }
-
- /**
-@@ -284,17 +313,16 @@
- }
-
- /**
-- * Print Package link, with target frame.
-+ * Get Package link, with target frame.
- *
-- * @param pd The link will be to the "package-summary.html" page for this
-- * package.
-- * @param target Name of the target frame.
-- * @param label Tag for the link.
-+ * @param pd The link will be to the "package-summary.html" page for this package
-+ * @param target name of the target frame
-+ * @param label tag for the link
-+ * @return a content for the target package link
- */
-- public void printTargetPackageLink(PackageDoc pd, String target,
-- String label) {
-- print(getHyperLink(pathString(pd, "package-summary.html"), "", label,
-- false, "", "", target));
-+ public Content getTargetPackageLink(PackageDoc pd, String target,
-+ Content label) {
-+ return getHyperLink(pathString(pd, "package-summary.html"), "", label, "", target);
- }
-
- /**
-@@ -358,6 +386,64 @@
- }
-
- /**
-+ * Generates the HTML document tree and prints it out.
-+ *
-+ * @param metakeywords Array of String keywords for META tag. Each element
-+ * of the array is assigned to a separate META tag.
-+ * Pass in null for no array
-+ * @param includeScript true if printing windowtitle script
-+ * false for files that appear in the left-hand frames
-+ * @param body the body htmltree to be included in the document
-+ */
-+ public void printHtmlDocument(String[] metakeywords, boolean includeScript,
-+ Content body) {
-+ Content htmlDocType = DocType.Transitional();
-+ Content htmlComment = new Comment(configuration.getText("doclet.New_Page"));
-+ Content head = new HtmlTree(HtmlTag.HEAD);
-+ if (!configuration.notimestamp) {
-+ Content headComment = new Comment("Generated by javadoc (version " +
-+ ConfigurationImpl.BUILD_DATE + ") on " + today());
-+ head.addContent(headComment);
-+ }
-+ if (configuration.charset.length() > 0) {
-+ Content meta = HtmlTree.META("Content-Type", "text/html",
-+ configuration.charset);
-+ head.addContent(meta);
-+ }
-+ head.addContent(getTitle());
-+ if (!configuration.notimestamp) {
-+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
-+ Content meta = HtmlTree.META("date", dateFormat.format(new Date()));
-+ head.addContent(meta);
-+ }
-+ if (metakeywords != null) {
-+ for (int i=0; i < metakeywords.length; i++) {
-+ Content meta = HtmlTree.META("keywords", metakeywords[i]);
-+ head.addContent(meta);
-+ }
-+ }
-+ head.addContent(getStyleSheetProperties());
-+ Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(),
-+ head, body);
-+ Content htmlDocument = new HtmlDocument(htmlDocType,
-+ htmlComment, htmlTree);
-+ print(htmlDocument.toString());
-+ }
-+
-+ /**
-+ * Get the window title.
-+ *
-+ * @param title the title string to construct the complete window title
-+ * @return the window title string
-+ */
-+ public String getWindowTitle(String title) {
-+ if (configuration.windowtitle.length() > 0) {
-+ title += " (" + configuration.windowtitle + ")";
-+ }
-+ return title;
-+ }
-+
-+ /**
- * Print user specified header and the footer.
- *
- * @param header if true print the user provided header else print the
-@@ -378,6 +464,28 @@
- }
-
- /**
-+ * Get user specified header and the footer.
-+ *
-+ * @param header if true print the user provided header else print the
-+ * user provided footer.
-+ */
-+ public Content getUserHeaderFooter(boolean header) {
-+ String content;
-+ if (header) {
-+ content = replaceDocRootDir(configuration.header);
-+ } else {
-+ if (configuration.footer.length() != 0) {
-+ content = replaceDocRootDir(configuration.footer);
-+ } else {
-+ content = replaceDocRootDir(configuration.header);
-+ }
-+ }
-+ Content rawContent = new RawHtml(content);
-+ Content em = HtmlTree.EM(rawContent);
-+ return em;
-+ }
-+
-+ /**
- * Print the user specified top.
- */
- public void printTop() {
-@@ -386,6 +494,16 @@
- }
-
- /**
-+ * Adds the user specified top.
-+ *
-+ * @param body the content tree to which user specified top will be added
-+ */
-+ public void addTop(Content body) {
-+ Content top = new RawHtml(replaceDocRootDir(configuration.top));
-+ body.addContent(top);
-+ }
-+
-+ /**
- * Print the user specified bottom.
- */
- public void printBottom() {
-@@ -394,6 +512,18 @@
- }
-
- /**
-+ * Adds the user specified bottom.
-+ *
-+ * @param body the content tree to which user specified bottom will be added
-+ */
-+ public void addBottom(Content body) {
-+ Content bottom = new RawHtml(replaceDocRootDir(configuration.bottom));
-+ Content small = HtmlTree.SMALL(bottom);
-+ Content p = HtmlTree.P(HtmlStyle.legalCopy, small);
-+ body.addContent(p);
-+ }
-+
-+ /**
- * Print the navigation bar for the Html page at the top and and the bottom.
- *
- * @param header If true print navigation bar at the top of the page else
-@@ -406,13 +536,13 @@
- println(DocletConstants.NL + "<!-- ========= START OF TOP NAVBAR ======= -->");
- anchor("navbar_top");
- println();
-- print(getHyperLink("", "skip-navbar_top", "", false, "",
-+ print(getHyperLinkString("", "skip-navbar_top", "", false, "",
- configuration.getText("doclet.Skip_navigation_links"), ""));
- } else {
- println(DocletConstants.NL + "<!-- ======= START OF BOTTOM NAVBAR ====== -->");
- anchor("navbar_bottom");
- println();
-- print(getHyperLink("", "skip-navbar_bottom", "", false, "",
-+ print(getHyperLinkString("", "skip-navbar_bottom", "", false, "",
- configuration.getText("doclet.Skip_navigation_links"), ""));
- }
- table(0, "100%", 1, 0);
-@@ -516,6 +646,97 @@
- }
-
- /**
-+ * Adds the navigation bar for the Html page at the top and and the bottom.
-+ *
-+ * @param header If true print navigation bar at the top of the page else
-+ * @param body the HtmlTree to which the nav links will be added
-+ */
-+ protected void addNavLinks(boolean header, Content body) {
-+ if (!configuration.nonavbar) {
-+ String allClassesId = "allclasses_";
-+ HtmlTree navDiv = new HtmlTree(HtmlTag.DIV);
-+ if (header) {
-+ body.addContent(HtmlConstants.START_OF_TOP_NAVBAR);
-+ navDiv.addStyle(HtmlStyle.topNav);
-+ allClassesId += "navbar_top";
-+ Content a = getMarkerAnchor("navbar_top");
-+ navDiv.addContent(a);
-+ Content skipLinkContent = getHyperLink("",
-+ "skip-navbar_top", HtmlTree.EMPTY, configuration.getText(
-+ "doclet.Skip_navigation_links"), "");
-+ navDiv.addContent(skipLinkContent);
-+ } else {
-+ body.addContent(HtmlConstants.START_OF_BOTTOM_NAVBAR);
-+ navDiv.addStyle(HtmlStyle.bottomNav);
-+ allClassesId += "navbar_bottom";
-+ Content a = getMarkerAnchor("navbar_bottom");
-+ navDiv.addContent(a);
-+ Content skipLinkContent = getHyperLink("",
-+ "skip-navbar_bottom", HtmlTree.EMPTY, configuration.getText(
-+ "doclet.Skip_navigation_links"), "");
-+ navDiv.addContent(skipLinkContent);
-+ }
-+ if (header) {
-+ navDiv.addContent(getMarkerAnchor("navbar_top_firstrow"));
-+ } else {
-+ navDiv.addContent(getMarkerAnchor("navbar_bottom_firstrow"));
-+ }
-+ HtmlTree navList = new HtmlTree(HtmlTag.UL);
-+ navList.addStyle(HtmlStyle.navList);
-+ navList.addAttr(HtmlAttr.TITLE, "Navigation");
-+ if (configuration.createoverview) {
-+ navList.addContent(getNavLinkContents());
-+ }
-+ if (configuration.packages.length == 1) {
-+ navList.addContent(getNavLinkPackage(configuration.packages[0]));
-+ } else if (configuration.packages.length > 1) {
-+ navList.addContent(getNavLinkPackage());
-+ }
-+ navList.addContent(getNavLinkClass());
-+ if(configuration.classuse) {
-+ navList.addContent(getNavLinkClassUse());
-+ }
-+ if(configuration.createtree) {
-+ navList.addContent(getNavLinkTree());
-+ }
-+ if(!(configuration.nodeprecated ||
-+ configuration.nodeprecatedlist)) {
-+ navList.addContent(getNavLinkDeprecated());
-+ }
-+ if(configuration.createindex) {
-+ navList.addContent(getNavLinkIndex());
-+ }
-+ if (!configuration.nohelp) {
-+ navList.addContent(getNavLinkHelp());
-+ }
-+ navDiv.addContent(navList);
-+ Content aboutDiv = HtmlTree.DIV(HtmlStyle.aboutLanguage, getUserHeaderFooter(header));
-+ navDiv.addContent(aboutDiv);
-+ body.addContent(navDiv);
-+ Content ulNav = HtmlTree.UL(HtmlStyle.navList, getNavLinkPrevious());
-+ ulNav.addContent(getNavLinkNext());
-+ Content subDiv = HtmlTree.DIV(HtmlStyle.subNav, ulNav);
-+ Content ulFrames = HtmlTree.UL(HtmlStyle.navList, getNavShowLists());
-+ ulFrames.addContent(getNavHideLists(filename));
-+ subDiv.addContent(ulFrames);
-+ HtmlTree ulAllClasses = HtmlTree.UL(HtmlStyle.navList, getNavLinkClassIndex());
-+ ulAllClasses.addAttr(HtmlAttr.ID, allClassesId.toString());
-+ subDiv.addContent(ulAllClasses);
-+ subDiv.addContent(getAllClassesLinkScript(allClassesId.toString()));
-+ addSummaryDetailLinks(subDiv);
-+ if (header) {
-+ subDiv.addContent(getMarkerAnchor("skip-navbar_top"));
-+ body.addContent(subDiv);
-+ body.addContent(HtmlConstants.END_OF_TOP_NAVBAR);
-+ } else {
-+ subDiv.addContent(getMarkerAnchor("skip-navbar_bottom"));
-+ body.addContent(subDiv);
-+ body.addContent(HtmlConstants.END_OF_BOTTOM_NAVBAR);
-+ }
-+ }
-+ }
-+
-+ /**
- * Print the word "NEXT" to indicate that no link is available. Override
- * this method to customize next link.
- */
-@@ -524,6 +745,16 @@
- }
-
- /**
-+ * Get the word "NEXT" to indicate that no link is available. Override
-+ * this method to customize next link.
-+ *
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkNext() {
-+ return getNavLinkNext(null);
-+ }
-+
-+ /**
- * Print the word "PREV" to indicate that no link is available. Override
- * this method to customize prev link.
- */
-@@ -532,12 +763,28 @@
- }
-
- /**
-+ * Get the word "PREV" to indicate that no link is available. Override
-+ * this method to customize prev link.
-+ *
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkPrevious() {
-+ return getNavLinkPrevious(null);
-+ }
-+
-+ /**
- * Do nothing. This is the default method.
- */
- protected void printSummaryDetailLinks() {
- }
-
- /**
-+ * Do nothing. This is the default method.
-+ */
-+ protected void addSummaryDetailLinks(Content navDiv) {
-+ }
-+
-+ /**
- * Print link to the "overview-summary.html" page.
- */
- protected void navLinkContents() {
-@@ -548,6 +795,18 @@
- }
-
- /**
-+ * Get link to the "overview-summary.html" page.
-+ *
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkContents() {
-+ Content linkContent = getHyperLink(relativePath +
-+ "overview-summary.html", "", overviewLabel, "", "");
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
-+ }
-+
-+ /**
- * Description for a cell in the navigation bar.
- */
- protected void navCellStart() {
-@@ -588,6 +847,19 @@
- }
-
- /**
-+ * Get link to the "package-summary.html" page for the package passed.
-+ *
-+ * @param pkg Package to which link will be generated
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkPackage(PackageDoc pkg) {
-+ Content linkContent = getPackageLink(pkg,
-+ packageLabel);
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
-+ }
-+
-+ /**
- * Print the word "Package" in the navigation bar cell, to indicate that
- * link is not available here.
- */
-@@ -600,6 +872,16 @@
- }
-
- /**
-+ * Get the word "Package" , to indicate that link is not available here.
-+ *
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkPackage() {
-+ Content li = HtmlTree.LI(packageLabel);
-+ return li;
-+ }
-+
-+ /**
- * Print the word "Use" in the navigation bar cell, to indicate that link
- * is not available.
- */
-@@ -612,6 +894,16 @@
- }
-
- /**
-+ * Get the word "Use", to indicate that link is not available.
-+ *
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkClassUse() {
-+ Content li = HtmlTree.LI(useLabel);
-+ return li;
-+ }
-+
-+ /**
- * Print link for previous file.
- *
- * @param prev File name for the prev link.
-@@ -626,6 +918,22 @@
- }
-
- /**
-+ * Get link for previous file.
-+ *
-+ * @param prev File name for the prev link
-+ * @return a content tree for the link
-+ */
-+ public Content getNavLinkPrevious(String prev) {
-+ Content li;
-+ if (prev != null) {
-+ li = HtmlTree.LI(getHyperLink(prev, "", prevLabel, "", ""));
-+ }
-+ else
-+ li = HtmlTree.LI(prevLabel);
-+ return li;
-+ }
-+
-+ /**
- * Print link for next file. If next is null, just print the label
- * without linking it anywhere.
- *
-@@ -641,16 +949,46 @@
- }
-
- /**
-+ * Get link for next file. If next is null, just print the label
-+ * without linking it anywhere.
-+ *
-+ * @param next File name for the next link
-+ * @return a content tree for the link
-+ */
-+ public Content getNavLinkNext(String next) {
-+ Content li;
-+ if (next != null) {
-+ li = HtmlTree.LI(getHyperLink(next, "", nextLabel, "", ""));
-+ }
-+ else
-+ li = HtmlTree.LI(nextLabel);
-+ return li;
-+ }
-+
-+ /**
- * Print "FRAMES" link, to switch to the frame version of the output.
- *
- * @param link File to be linked, "index.html".
- */
- protected void navShowLists(String link) {
-- print(getHyperLink(link + "?" + path + filename, "",
-+ print(getHyperLinkString(link + "?" + path + filename, "",
- configuration.getText("doclet.FRAMES"), true, "", "", "_top"));
- }
-
- /**
-+ * Get "FRAMES" link, to switch to the frame version of the output.
-+ *
-+ * @param link File to be linked, "index.html"
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavShowLists(String link) {
-+ Content framesContent = getHyperLink(link + "?" + path +
-+ filename, "", framesLabel, "", "_top");
-+ Content li = HtmlTree.LI(framesContent);
-+ return li;
-+ }
-+
-+ /**
- * Print "FRAMES" link, to switch to the frame version of the output.
- */
- protected void navShowLists() {
-@@ -658,16 +996,37 @@
- }
-
- /**
-+ * Get "FRAMES" link, to switch to the frame version of the output.
-+ *
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavShowLists() {
-+ return getNavShowLists(relativePath + "index.html");
-+ }
-+
-+ /**
- * Print "NO FRAMES" link, to switch to the non-frame version of the output.
- *
- * @param link File to be linked.
- */
- protected void navHideLists(String link) {
-- print(getHyperLink(link, "", configuration.getText("doclet.NO_FRAMES"),
-+ print(getHyperLinkString(link, "", configuration.getText("doclet.NO_FRAMES"),
- true, "", "", "_top"));
- }
-
- /**
-+ * Get "NO FRAMES" link, to switch to the non-frame version of the output.
-+ *
-+ * @param link File to be linked
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavHideLists(String link) {
-+ Content noFramesContent = getHyperLink(link, "", noframesLabel, "", "_top");
-+ Content li = HtmlTree.LI(noFramesContent);
-+ return li;
-+ }
-+
-+ /**
- * Print "Tree" link in the navigation bar. If there is only one package
- * specified on the command line, then the "Tree" link will be to the
- * only "package-tree.html" file otherwise it will be to the
-@@ -687,10 +1046,39 @@
- }
-
- /**
-- * Print "Tree" link to the "overview-tree.html" file.
-+ * Get "Tree" link in the navigation bar. If there is only one package
-+ * specified on the command line, then the "Tree" link will be to the
-+ * only "package-tree.html" file otherwise it will be to the
-+ * "overview-tree.html" file.
-+ *
-+ * @return a content tree for the link
- */
-- protected void navLinkMainTree(String label) {
-- printHyperLink(relativePath + "overview-tree.html", label);
-+ protected Content getNavLinkTree() {
-+ Content treeLinkContent;
-+ PackageDoc[] packages = configuration.root.specifiedPackages();
-+ if (packages.length == 1 && configuration.root.specifiedClasses().length == 0) {
-+ treeLinkContent = getHyperLink(pathString(packages[0],
-+ "package-tree.html"), "", treeLabel,
-+ "", "");
-+ } else {
-+ treeLinkContent = getHyperLink(relativePath + "overview-tree.html",
-+ "", treeLabel, "", "");
-+ }
-+ Content li = HtmlTree.LI(treeLinkContent);
-+ return li;
-+ }
-+
-+ /**
-+ * Get the overview tree link for the main tree.
-+ *
-+ * @param label the label for the link
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkMainTree(String label) {
-+ Content mainTreeContent = getHyperLink(relativePath + "overview-tree.html",
-+ new StringContent(label));
-+ Content li = HtmlTree.LI(mainTreeContent);
-+ return li;
- }
-
- /**
-@@ -706,6 +1094,16 @@
- }
-
- /**
-+ * Get the word "Class", to indicate that class link is not available.
-+ *
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkClass() {
-+ Content li = HtmlTree.LI(classLabel);
-+ return li;
-+ }
-+
-+ /**
- * Print "Deprecated" API link in the navigation bar.
- */
- protected void navLinkDeprecated() {
-@@ -716,6 +1114,18 @@
- }
-
- /**
-+ * Get "Deprecated" API link in the navigation bar.
-+ *
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkDeprecated() {
-+ Content linkContent = getHyperLink(relativePath +
-+ "deprecated-list.html", "", deprecatedLabel, "", "");
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
-+ }
-+
-+ /**
- * Print link for generated index. If the user has used "-splitindex"
- * command line option, then link to file "index-files/index-1.html" is
- * generated otherwise link to file "index-all.html" is generated.
-@@ -725,6 +1135,21 @@
- AllClassesFrameWriter.OUTPUT_FILE_NAME_NOFRAMES,
- "", "", configuration.getText("doclet.All_Classes"), true);
- }
-+
-+ /**
-+ * Get link for generated index. If the user has used "-splitindex"
-+ * command line option, then link to file "index-files/index-1.html" is
-+ * generated otherwise link to file "index-all.html" is generated.
-+ *
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkClassIndex() {
-+ Content allClassesContent = getHyperLink(relativePath +
-+ AllClassesFrameWriter.OUTPUT_FILE_NAME_NOFRAMES, "",
-+ allclassesLabel, "", "");
-+ Content li = HtmlTree.LI(allClassesContent);
-+ return li;
-+ }
- /**
- * Print link for generated class index.
- */
-@@ -741,6 +1166,20 @@
- }
-
- /**
-+ * Get link for generated class index.
-+ *
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkIndex() {
-+ Content linkContent = getHyperLink(relativePath +(configuration.splitindex?
-+ DirectoryManager.getPath("index-files") + fileseparator: "") +
-+ (configuration.splitindex?"index-1.html" : "index-all.html"), "",
-+ indexLabel, "", "");
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
-+ }
-+
-+ /**
- * Print help file link. If user has provided a help file, then generate a
- * link to the user given file, which is already copied to current or
- * destination directory.
-@@ -762,6 +1201,29 @@
- }
-
- /**
-+ * Get help file link. If user has provided a help file, then generate a
-+ * link to the user given file, which is already copied to current or
-+ * destination directory.
-+ *
-+ * @return a content tree for the link
-+ */
-+ protected Content getNavLinkHelp() {
-+ String helpfilenm = configuration.helpfile;
-+ if (helpfilenm.equals("")) {
-+ helpfilenm = "help-doc.html";
-+ } else {
-+ int lastsep;
-+ if ((lastsep = helpfilenm.lastIndexOf(File.separatorChar)) != -1) {
-+ helpfilenm = helpfilenm.substring(lastsep + 1);
-+ }
-+ }
-+ Content linkContent = getHyperLink(relativePath + helpfilenm, "",
-+ helpLabel, "", "");
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
-+ }
-+
-+ /**
- * Print the word "Detail" in the navigation bar. No link is available.
- */
- protected void navDetail() {
-@@ -843,6 +1305,96 @@
- }
-
- /**
-+ * 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(String[] header, String scope) {
-+ Content tr = new HtmlTree(HtmlTag.TR);
-+ int size = header.length;
-+ Content tableHeader;
-+ if (size == 1) {
-+ tableHeader = new StringContent(header[0]);
-+ tr.addContent(HtmlTree.TH(HtmlStyle.colOne, scope, tableHeader));
-+ return tr;
-+ }
-+ for (int i = 0; i < size; i++) {
-+ tableHeader = new StringContent(header[i]);
-+ if(i == 0)
-+ tr.addContent(HtmlTree.TH(HtmlStyle.colFirst, 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
-+ * @return a content tree for the caption
-+ */
-+ public Content getTableCaption(String rawText) {
-+ Content title = new RawHtml(rawText);
-+ Content captionSpan = HtmlTree.SPAN(title);
-+ Content space = getSpace();
-+ Content tabSpan = HtmlTree.SPAN(HtmlStyle.tabEnd, space);
-+ Content caption = HtmlTree.CAPTION(captionSpan);
-+ caption.addContent(tabSpan);
-+ return caption;
-+ }
-+
-+ /**
-+ * Get the marker anchor which will be added to the documentation tree.
-+ *
-+ * @param anchorName the anchor name attribute
-+ * @return a content tree for the marker anchor
-+ */
-+ public Content getMarkerAnchor(String anchorName) {
-+ return getMarkerAnchor(anchorName, null);
-+ }
-+
-+ /**
-+ * Get the marker anchor which will be added to the documentation tree.
-+ *
-+ * @param anchorName the anchor name attribute
-+ * @param anchorContent the content that should be added to the anchor
-+ * @return a content tree for the marker anchor
-+ */
-+ public Content getMarkerAnchor(String anchorName, Content anchorContent) {
-+ if (anchorContent == null)
-+ anchorContent = new Comment(" ");
-+ Content markerAnchor = HtmlTree.A_NAME(anchorName, anchorContent);
-+ return markerAnchor;
-+ }
-+
-+ /**
-+ * Returns a packagename content.
-+ *
-+ * @param packageDoc the package to check
-+ * @return package name content
-+ */
-+ public Content getPackageName(PackageDoc packageDoc) {
-+ return packageDoc == null || packageDoc.name().length() == 0 ?
-+ defaultPackageLabel :
-+ getPackageLabel(packageDoc.name());
-+ }
-+
-+ /**
-+ * Returns a package name label.
-+ *
-+ * @param parsedName the package name
-+ * @return the package name content
-+ */
-+ public Content getPackageLabel(String packageName) {
-+ return new StringContent(packageName);
-+ }
-+
-+ /**
- * Prine table header information about color, column span and the font.
- *
- * @param color Background color.
-@@ -1026,7 +1578,7 @@
- * @param isStrong true if the label should be strong.
- */
- public void printPackageLink(PackageDoc pkg, String label, boolean isStrong) {
-- print(getPackageLink(pkg, label, isStrong));
-+ print(getPackageLinkString(pkg, label, isStrong));
- }
-
- /**
-@@ -1039,7 +1591,7 @@
- */
- public void printPackageLink(PackageDoc pkg, String label, boolean isStrong,
- String style) {
-- print(getPackageLink(pkg, label, isStrong, style));
-+ print(getPackageLinkString(pkg, label, isStrong, style));
- }
-
- /**
-@@ -1050,9 +1602,9 @@
- * @param isStrong true if the label should be strong.
- * @return the link to the given package.
- */
-- public String getPackageLink(PackageDoc pkg, String label,
-+ public String getPackageLinkString(PackageDoc pkg, String label,
- boolean isStrong) {
-- return getPackageLink(pkg, label, isStrong, "");
-+ return getPackageLinkString(pkg, label, isStrong, "");
- }
-
- /**
-@@ -1064,7 +1616,7 @@
- * @param style the font of the package link label.
- * @return the link to the given package.
- */
-- public String getPackageLink(PackageDoc pkg, String label, boolean isStrong,
-+ public String getPackageLinkString(PackageDoc pkg, String label, boolean isStrong,
- String style) {
- boolean included = pkg != null && pkg.isIncluded();
- if (! included) {
-@@ -1077,12 +1629,43 @@
- }
- }
- if (included || pkg == null) {
-- return getHyperLink(pathString(pkg, "package-summary.html"),
-+ return getHyperLinkString(pathString(pkg, "package-summary.html"),
- "", label, isStrong, style);
- } else {
- String crossPkgLink = getCrossPackageLink(Util.getPackageName(pkg));
- if (crossPkgLink != null) {
-- return getHyperLink(crossPkgLink, "", label, isStrong, style);
-+ return getHyperLinkString(crossPkgLink, "", label, isStrong, style);
-+ } else {
-+ return label;
-+ }
-+ }
-+ }
-+
-+ /**
-+ * Return the link to the given package.
-+ *
-+ * @param pkg the package to link to.
-+ * @param label the label for the link.
-+ * @return a content tree for the package link.
-+ */
-+ public Content getPackageLink(PackageDoc pkg, Content label) {
-+ boolean included = pkg != null && pkg.isIncluded();
-+ if (! included) {
-+ PackageDoc[] packages = configuration.packages;
-+ for (int i = 0; i < packages.length; i++) {
-+ if (packages[i].equals(pkg)) {
-+ included = true;
-+ break;
-+ }
-+ }
-+ }
-+ if (included || pkg == null) {
-+ return getHyperLink(pathString(pkg, "package-summary.html"),
-+ "", label);
-+ } else {
-+ String crossPkgLink = getCrossPackageLink(Util.getPackageName(pkg));
-+ if (crossPkgLink != null) {
-+ return getHyperLink(crossPkgLink, "", label);
- } else {
- return label;
- }
-@@ -1110,6 +1693,29 @@
- }
-
- /**
-+ * Add the link to the content tree.
-+ *
-+ * @param doc program element doc for which the link will be added
-+ * @param label label for the link
-+ * @param htmltree the content tree to which the link will be added
-+ */
-+ public void addSrcLink(ProgramElementDoc doc, Content label, Content htmltree) {
-+ if (doc == null) {
-+ return;
-+ }
-+ ClassDoc cd = doc.containingClass();
-+ if (cd == null) {
-+ //d must be a class doc since in has no containing class.
-+ cd = (ClassDoc) doc;
-+ }
-+ String href = relativePath + DocletConstants.SOURCE_OUTPUT_DIR_NAME
-+ + DirectoryManager.getDirectoryPath(cd.containingPackage())
-+ + cd.name() + ".html#" + SourceToHTMLConverter.getAnchorName(doc);
-+ Content linkContent = getHyperLink(href, "", label, "", "");
-+ htmltree.addContent(linkContent);
-+ }
-+
-+ /**
- * Return the link to the given class.
- *
- * @param linkInfo the information about the link.
-@@ -1173,7 +1779,7 @@
- //the -link option. There are ways to determine if an external package
- //exists, but no way to determine if the external class exists. We just
- //have to assume that it does.
-- return getHyperLink(
-+ return getHyperLinkString(
- configuration.extern.getExternalLink(packageName, relativePath,
- className + ".html?is-external=true"),
- refMemName == null ? "" : refMemName,
-@@ -1198,17 +1804,27 @@
- "package-summary.html?is-external=true");
- }
-
-- public void printQualifiedClassLink(int context, ClassDoc cd) {
-- printLink(new LinkInfoImpl(context, cd,
-- configuration.getClassName(cd), ""));
-+ /**
-+ * Get the class link.
-+ *
-+ * @param context the id of the context where the link will be added
-+ * @param cd the class doc to link to
-+ * @return a content tree for the link
-+ */
-+ public Content getQualifiedClassLink(int context, ClassDoc cd) {
-+ return new RawHtml(getLink(new LinkInfoImpl(context, cd,
-+ configuration.getClassName(cd), "")));
- }
-
- /**
-- * Print Class link, with only class name as the link and prefixing
-- * plain package name.
-+ * Add the class link.
-+ *
-+ * @param context the id of the context where the link will be added
-+ * @param cd the class doc to link to
-+ * @param contentTree the content tree to which the link will be added
- */
-- public void printPreQualifiedClassLink(int context, ClassDoc cd) {
-- print(getPreQualifiedClassLink(context, cd, false));
-+ public void addPreQualifiedClassLink(int context, ClassDoc cd, Content contentTree) {
-+ addPreQualifiedClassLink(context, cd, false, contentTree);
- }
-
- /**
-@@ -1231,13 +1847,36 @@
- return classlink;
- }
-
-+ /**
-+ * Add the class link with the package portion of the label in
-+ * plain text. If the qualifier is excluded, it will not be included in the
-+ * link label.
-+ *
-+ * @param context the id of the context where the link will be added
-+ * @param cd the class to link to
-+ * @param isStrong true if the link should be strong
-+ * @param contentTree the content tree to which the link with be added
-+ */
-+ public void addPreQualifiedClassLink(int context,
-+ ClassDoc cd, boolean isStrong, Content contentTree) {
-+ PackageDoc pd = cd.containingPackage();
-+ if(pd != null && ! configuration.shouldExcludeQualifier(pd.name())) {
-+ contentTree.addContent(getPkgName(cd));
-+ }
-+ contentTree.addContent(new RawHtml(getLink(new LinkInfoImpl(
-+ context, cd, cd.name(), isStrong))));
-+ }
-
- /**
-- * Print Class link, with only class name as the strong link and prefixing
-+ * Add the class link, with only class name as the strong link and prefixing
- * plain package name.
-+ *
-+ * @param context the id of the context where the link will be added
-+ * @param cd the class to link to
-+ * @param contentTree the content tree to which the link with be added
- */
-- public void printPreQualifiedStrongClassLink(int context, ClassDoc cd) {
-- print(getPreQualifiedClassLink(context, cd, true));
-+ public void addPreQualifiedStrongClassLink(int context, ClassDoc cd, Content contentTree) {
-+ addPreQualifiedClassLink(context, cd, true, contentTree);
- }
-
- public void printText(String key) {
-@@ -1265,16 +1904,15 @@
- }
-
- /**
-- * Print the link for the given member.
-+ * Get the link for the given member.
- *
-- * @param context the id of the context where the link will be printed.
-- * @param doc the member being linked to.
-- * @param label the label for the link.
-- * @param strong true if the link should be strong.
-+ * @param context the id of the context where the link will be added
-+ * @param doc the member being linked to
-+ * @param label the label for the link
-+ * @return a content tree for the doc link
- */
-- public void printDocLink(int context, MemberDoc doc, String label,
-- boolean strong) {
-- print(getDocLink(context, doc, label, strong));
-+ public Content getDocLink(int context, MemberDoc doc, String label) {
-+ return getDocLink(context, doc.containingClass(), doc, label);
- }
-
- /**
-@@ -1336,6 +1974,34 @@
- }
- }
-
-+ /**
-+ * Return the link for the given member.
-+ *
-+ * @param context the id of the context where the link will be added
-+ * @param classDoc the classDoc that we should link to. This is not
-+ * necessarily equal to doc.containingClass(). We may be
-+ * inheriting comments
-+ * @param doc the member being linked to
-+ * @param label the label for the link
-+ * @return the link for the given member
-+ */
-+ public Content getDocLink(int context, ClassDoc classDoc, MemberDoc doc,
-+ String label) {
-+ if (! (doc.isIncluded() ||
-+ Util.isLinkable(classDoc, configuration()))) {
-+ return new StringContent(label);
-+ } else if (doc instanceof ExecutableMemberDoc) {
-+ ExecutableMemberDoc emd = (ExecutableMemberDoc)doc;
-+ return new RawHtml(getLink(new LinkInfoImpl(context, classDoc,
-+ getAnchor(emd), label, false)));
-+ } else if (doc instanceof MemberDoc) {
-+ return new RawHtml(getLink(new LinkInfoImpl(context, classDoc,
-+ doc.name(), label, false)));
-+ } else {
-+ return new StringContent(label);
-+ }
-+ }
-+
- public void anchor(ExecutableMemberDoc emd) {
- anchor(getAnchor(emd));
- }
-@@ -1390,14 +2056,14 @@
- //@see is referencing an included package
- String packageName = isplaintext ? refPackage.name() :
- getCode() + refPackage.name() + getCodeEnd();
-- result.append(getPackageLink(refPackage,
-+ result.append(getPackageLinkString(refPackage,
- label.length() == 0 ? packageName : label, false));
- } else {
- //@see is not referencing an included class or package. Check for cross links.
- String classCrossLink, packageCrossLink = getCrossPackageLink(refClassName);
- if (packageCrossLink != null) {
- //Package cross link found
-- result.append(getHyperLink(packageCrossLink, "",
-+ result.append(getHyperLinkString(packageCrossLink, "",
- (label.length() == 0)? text : label, false));
- } else if ((classCrossLink = getCrossClassLink(refClassName,
- refMemName, label, false, "", ! isplaintext)) != null) {
-@@ -1456,18 +2122,61 @@
- printCommentTags(doc, tag.inlineTags(), false, false);
- }
-
-+ /**
-+ * Add the inline comment.
-+ *
-+ * @param doc the doc for which the inline comment will be added
-+ * @param tag the inline tag to be added
-+ * @param htmltree the content tree to which the comment will be added
-+ */
-+ public void addInlineComment(Doc doc, Tag tag, Content htmltree) {
-+ addCommentTags(doc, tag.inlineTags(), false, false, htmltree);
-+ }
-+
- public void printInlineDeprecatedComment(Doc doc, Tag tag) {
- printCommentTags(doc, tag.inlineTags(), true, false);
- }
-
-+ /**
-+ * Add the inline deprecated comment.
-+ *
-+ * @param doc the doc for which the inline deprecated comment will be added
-+ * @param tag the inline tag to be added
-+ * @param htmltree the content tree to which the comment will be added
-+ */
-+ public void addInlineDeprecatedComment(Doc doc, Tag tag, Content htmltree) {
-+ addCommentTags(doc, tag.inlineTags(), true, false, htmltree);
-+ }
-+
- public void printSummaryComment(Doc doc) {
- printSummaryComment(doc, doc.firstSentenceTags());
- }
-
-+ /**
-+ * Adds the summary content.
-+ *
-+ * @param doc the doc for which the summary will be generated
-+ * @param htmltree the documentation tree to which the summary will be added
-+ */
-+ public void addSummaryComment(Doc doc, Content htmltree) {
-+ addSummaryComment(doc, doc.firstSentenceTags(), htmltree);
-+ }
-+
- public void printSummaryComment(Doc doc, Tag[] firstSentenceTags) {
- printCommentTags(doc, firstSentenceTags, false, true);
- }
-
-+ /**
-+ * Adds the summary content.
-+ *
-+ * @param doc the doc for which the summary will be generated
-+ * @param firstSentenceTags the first sentence tags for the doc
-+ * @param htmltree the documentation tree to which the summary will be added
-+ */
-+ public void addSummaryComment(Doc doc, Tag[] firstSentenceTags, Content htmltree) {
-+ addCommentTags(doc, firstSentenceTags, false, true, htmltree);
-+ }
-+
- public void printSummaryDeprecatedComment(Doc doc) {
- printCommentTags(doc, doc.firstSentenceTags(), true, true);
- }
-@@ -1476,11 +2185,25 @@
- printCommentTags(doc, tag.firstSentenceTags(), true, true);
- }
-
-+ public void addSummaryDeprecatedComment(Doc doc, Tag tag, Content htmltree) {
-+ addCommentTags(doc, tag.firstSentenceTags(), true, true, htmltree);
-+ }
-+
- public void printInlineComment(Doc doc) {
- printCommentTags(doc, doc.inlineTags(), false, false);
- p();
- }
-
-+ /**
-+ * Adds the inline comment.
-+ *
-+ * @param doc the doc for which the inline comments will be generated
-+ * @param htmltree the documentation tree to which the inline comments will be added
-+ */
-+ public void addInlineComment(Doc doc, Content htmltree) {
-+ addCommentTags(doc, doc.inlineTags(), false, false, htmltree);
-+ }
-+
- public void printInlineDeprecatedComment(Doc doc) {
- printCommentTags(doc, doc.inlineTags(), true, false);
- }
-@@ -1503,6 +2226,36 @@
- }
-
- /**
-+ * Adds the comment tags.
-+ *
-+ * @param doc the doc for which the comment tags will be generated
-+ * @param tags the first sentence tags for the doc
-+ * @param depr true if it is deprecated
-+ * @param first true if the first sentenge tags should be added
-+ * @param htmltree the documentation tree to which the comment tags will be added
-+ */
-+ private void addCommentTags(Doc doc, Tag[] tags, boolean depr,
-+ boolean first, Content htmltree) {
-+ if(configuration.nocomment){
-+ return;
-+ }
-+ Content div;
-+ Content result = new RawHtml(commentTagsToString(null, doc, tags, first));
-+ if (depr) {
-+ Content italic = HtmlTree.I(result);
-+ div = HtmlTree.DIV(HtmlStyle.block, italic);
-+ htmltree.addContent(div);
-+ }
-+ else {
-+ div = HtmlTree.DIV(HtmlStyle.block, result);
-+ htmltree.addContent(div);
-+ }
-+ if (tags.length == 0) {
-+ htmltree.addContent(getSpace());
-+ }
-+ }
-+
-+ /**
- * Converts inline tags and text to text strings, expanding the
- * inline tags along the way. Called wherever text can contain
- * an inline tag, such as in comments or in free-form text arguments
-@@ -1612,8 +2365,8 @@
- return text;
- }
-
-- if (! redirectPathFromRoot.endsWith(DirectoryManager.URL_FILE_SEPERATOR)) {
-- redirectPathFromRoot += DirectoryManager.URL_FILE_SEPERATOR;
-+ if (! redirectPathFromRoot.endsWith(DirectoryManager.URL_FILE_SEPARATOR)) {
-+ redirectPathFromRoot += DirectoryManager.URL_FILE_SEPARATOR;
- }
-
- //Redirect all relative links.
-@@ -1739,6 +2492,27 @@
- }
-
- /**
-+ * Returns a link to the stylesheet file.
-+ *
-+ * @return an HtmlTree for the lINK tag which provides the stylesheet location
-+ */
-+ public HtmlTree getStyleSheetProperties() {
-+ String filename = configuration.stylesheetfile;
-+ if (filename.length() > 0) {
-+ File stylefile = new File(filename);
-+ String parent = stylefile.getParent();
-+ filename = (parent == null)?
-+ filename:
-+ filename.substring(parent.length() + 1);
-+ } else {
-+ filename = "stylesheet.css";
-+ }
-+ filename = relativePath + filename;
-+ HtmlTree link = HtmlTree.LINK("stylesheet", "text/css", filename, "Style");
-+ return link;
-+ }
-+
-+ /**
- * According to the Java Language Specifications, all the outer classes
- * and static nested classes are core classes.
- */
-@@ -1765,6 +2539,16 @@
- }
-
- /**
-+ * Adds the annotatation types for the given doc.
-+ *
-+ * @param packageDoc the package to write annotations for
-+ * @param htmltree the content tree to which the annotation types will be added
-+ */
-+ public void addAnnotationInfo(ProgramElementDoc doc, Content htmltree) {
-+ addAnnotationInfo(doc, doc.annotations(), htmltree);
-+ }
-+
-+ /**
- * Write the annotatation types for the given doc and parameter.
- *
- * @param indent the number of spaced to indent the parameters.
-@@ -1776,6 +2560,30 @@
- }
-
- /**
-+ * Adds the annotatation types for the given packageDoc.
-+ *
-+ * @param packageDoc the package to write annotations for.
-+ * @param htmltree the documentation tree to which the annotation info will be
-+ * added
-+ */
-+ public void addAnnotationInfo(PackageDoc packageDoc, Content htmltree) {
-+ addAnnotationInfo(packageDoc, packageDoc.annotations(), htmltree);
-+ }
-+
-+ /**
-+ * Add the annotatation types for the given doc and parameter.
-+ *
-+ * @param indent the number of spaces to indent the parameters.
-+ * @param doc the doc to write annotations for.
-+ * @param param the parameter to write annotations for.
-+ * @param tree the content tree to which the annotation types will be added
-+ */
-+ public boolean addAnnotationInfo(int indent, Doc doc, Parameter param,
-+ Content tree) {
-+ return addAnnotationInfo(indent, doc, param.annotations(), false, tree);
-+ }
-+
-+ /**
- * Write the annotatation types for the given doc.
- *
- * @param doc the doc to write annotations for.
-@@ -1786,6 +2594,19 @@
- }
-
- /**
-+ * Adds the annotatation types for the given doc.
-+ *
-+ * @param doc the doc to write annotations for.
-+ * @param descList the array of {@link AnnotationDesc}.
-+ * @param htmltree the documentation tree to which the annotation info will be
-+ * added
-+ */
-+ private void addAnnotationInfo(Doc doc, AnnotationDesc[] descList,
-+ Content htmltree) {
-+ addAnnotationInfo(0, doc, descList, true, htmltree);
-+ }
-+
-+ /**
- * Write the annotatation types for the given doc.
- *
- * @param indent the number of extra spaces to indent the annotations.
-@@ -1806,6 +2627,29 @@
- }
-
- /**
-+ * Adds the annotatation types for the given doc.
-+ *
-+ * @param indent the number of extra spaces to indent the annotations.
-+ * @param doc the doc to write annotations for.
-+ * @param descList the array of {@link AnnotationDesc}.
-+ * @param htmltree the documentation tree to which the annotation info will be
-+ * added
-+ */
-+ private boolean addAnnotationInfo(int indent, Doc doc,
-+ AnnotationDesc[] descList, boolean lineBreak, Content htmltree) {
-+ List<String> annotations = getAnnotations(indent, descList, lineBreak);
-+ if (annotations.size() == 0) {
-+ return false;
-+ }
-+ Content annotationContent;
-+ for (Iterator<String> iter = annotations.iterator(); iter.hasNext();) {
-+ annotationContent = new RawHtml(iter.next());
-+ htmltree.addContent(annotationContent);
-+ }
-+ return true;
-+ }
-+
-+ /**
- * Return the string representations of the annotation types for
- * the given doc.
- *
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialFieldWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialFieldWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialFieldWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialFieldWriter.java
-@@ -31,6 +31,7 @@
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.taglets.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Generate serialized form for serializable fields.
-@@ -46,8 +47,6 @@
-
- private boolean printedOverallAnchor = false;
-
-- private boolean printedFirstMember = false;
--
- public HtmlSerialFieldWriter(SubWriterHolderWriter writer,
- ClassDoc classdoc) {
- super(writer, classdoc);
-@@ -69,109 +68,143 @@
- }
- }
-
-- public void writeHeader(String heading) {
-- if (! printedOverallAnchor) {
-- writer.anchor("serializedForm");
-- printedOverallAnchor = true;
-- writer.printTableHeadingBackground(heading);
-- writer.println();
-- if (heading.equals(
-- configuration().getText("doclet.Serialized_Form_class"))) {
-- assert !writer.getMemberDetailsListPrinted();
-- }
-- } else {
-- writer.printTableHeadingBackground(heading);
-- writer.println();
-- }
-- }
--
-- public void writeMemberHeader(ClassDoc fieldType, String fieldTypeStr,
-- String fieldDimensions, String fieldName) {
-- if (printedFirstMember) {
-- writer.printMemberHeader();
-- }
-- printedFirstMember = true;
-- writer.h3();
-- writer.print(fieldName);
-- writer.h3End();
-- writer.pre();
-- if (fieldType == null) {
-- writer.print(fieldTypeStr);
-- } else {
-- writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_SERIAL_MEMBER,
-- fieldType));
-- }
-- print(fieldDimensions + ' ');
-- strong(fieldName);
-- writer.preEnd();
-- assert !writer.getMemberDetailsListPrinted();
-+ /**
-+ * Return the header for serializable fields section.
-+ *
-+ * @return a content tree for the header
-+ */
-+ public Content getSerializableFieldsHeader() {
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.blockList);
-+ return ul;
- }
-
- /**
-- * Write the deprecated information for this member.
-+ * Return the header for serializable fields content section.
- *
-- * @param field the field to document.
-+ * @param isLastContent true if the cotent being documented is the last content.
-+ * @return a content tree for the header
- */
-- public void writeMemberDeprecatedInfo(FieldDoc field) {
-- printDeprecated(field);
-+ public Content getFieldsContentHeader(boolean isLastContent) {
-+ HtmlTree li = new HtmlTree(HtmlTag.LI);
-+ if (isLastContent)
-+ li.addStyle(HtmlStyle.blockListLast);
-+ else
-+ li.addStyle(HtmlStyle.blockList);
-+ return li;
- }
-
- /**
-- * Write the description text for this member.
-+ * Add serializable fields.
-+ *
-+ * @param heading the heading for the section
-+ * @param serializableFieldsTree the tree to be added to the serializable fileds
-+ * content tree
-+ * @return a content tree for the serializable fields content
-+ */
-+ public Content getSerializableFields(String heading, Content serializableFieldsTree) {
-+ HtmlTree li = new HtmlTree(HtmlTag.LI);
-+ li.addStyle(HtmlStyle.blockList);
-+ if (serializableFieldsTree.isValid()) {
-+ if (!printedOverallAnchor) {
-+ li.addContent(writer.getMarkerAnchor("serializedForm"));
-+ printedOverallAnchor = true;
-+ }
-+ Content headingContent = new StringContent(heading);
-+ Content serialHeading = HtmlTree.HEADING(HtmlConstants.SERIALIZED_MEMBER_HEADING,
-+ headingContent);
-+ li.addContent(serialHeading);
-+ li.addContent(serializableFieldsTree);
-+ }
-+ return li;
-+ }
-+
-+ /**
-+ * Add the member header.
-+ *
-+ * @param fieldsType the class document to be listed
-+ * @param fieldTypeStr the string for the filed type to be documented
-+ * @param fieldDimensions the dimensions of the field string to be added
-+ * @param firldName name of the field to be added
-+ * @param contentTree the content tree to which the member header will be added
-+ */
-+ public void addMemberHeader(ClassDoc fieldType, String fieldTypeStr,
-+ String fieldDimensions, String fieldName, Content contentTree) {
-+ Content nameContent = new RawHtml(fieldName);
-+ Content heading = HtmlTree.HEADING(HtmlConstants.MEMBER_HEADING, nameContent);
-+ contentTree.addContent(heading);
-+ Content pre = new HtmlTree(HtmlTag.PRE);
-+ if (fieldType == null) {
-+ pre.addContent(fieldTypeStr);
-+ } else {
-+ Content fieldContent = new RawHtml(writer.getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_SERIAL_MEMBER, fieldType)));
-+ pre.addContent(fieldContent);
-+ }
-+ pre.addContent(fieldDimensions + " ");
-+ pre.addContent(fieldName);
-+ contentTree.addContent(pre);
-+ }
-+
-+ /**
-+ * Add the deprecated information for this member.
- *
- * @param field the field to document.
-+ * @param contentTree the tree to which the deprecated info will be added
- */
-- public void writeMemberDescription(FieldDoc field) {
-+ public void addMemberDeprecatedInfo(FieldDoc field, Content contentTree) {
-+ addDeprecatedInfo(field, contentTree);
-+ }
-+
-+ /**
-+ * Add the description text for this member.
-+ *
-+ * @param field the field to document.
-+ * @param contentTree the tree to which the deprecated info will be added
-+ */
-+ public void addMemberDescription(FieldDoc field, Content contentTree) {
- if (field.inlineTags().length > 0) {
-- writer.printMemberDetailsListStartTag();
-- writer.dd();
-- writer.printInlineComment(field);
-- writer.ddEnd();
-+ writer.addInlineComment(field, contentTree);
- }
- Tag[] tags = field.tags("serial");
- if (tags.length > 0) {
-- writer.printMemberDetailsListStartTag();
-- writer.dd();
-- writer.printInlineComment(field, tags[0]);
-- writer.ddEnd();
-+ writer.addInlineComment(field, tags[0], contentTree);
- }
- }
-
- /**
-- * Write the description text for this member represented by the tag.
-+ * Add the description text for this member represented by the tag.
- *
-- * @param serialFieldTag the field to document (represented by tag).
-+ * @param serialFieldTag the field to document (represented by tag)
-+ * @param contentTree the tree to which the deprecated info will be added
- */
-- public void writeMemberDescription(SerialFieldTag serialFieldTag) {
-+ public void addMemberDescription(SerialFieldTag serialFieldTag, Content contentTree) {
- String serialFieldTagDesc = serialFieldTag.description().trim();
- if (!serialFieldTagDesc.isEmpty()) {
-- writer.dl();
-- writer.dd();
-- writer.print(serialFieldTagDesc);
-- writer.ddEnd();
-- writer.dlEnd();
-+ Content serialFieldContent = new RawHtml(serialFieldTagDesc);
-+ Content div = HtmlTree.DIV(HtmlStyle.block, serialFieldContent);
-+ contentTree.addContent(div);
- }
- }
-
- /**
-- * Write the tag information for this member.
-+ * Add the tag information for this member.
- *
- * @param field the field to document.
-+ * @param contentTree the tree to which the member tags info will be added
- */
-- public void writeMemberTags(FieldDoc field) {
-+ public void addMemberTags(FieldDoc field, Content contentTree) {
- TagletOutputImpl output = new TagletOutputImpl("");
- TagletWriter.genTagOuput(configuration().tagletManager, field,
-- configuration().tagletManager.getCustomTags(field),
-+ configuration().tagletManager.getCustomTags(field),
- writer.getTagletWriterInstance(false), output);
- String outputString = output.toString().trim();
-+ Content dlTags = new HtmlTree(HtmlTag.DL);
- if (!outputString.isEmpty()) {
-- writer.printMemberDetailsListStartTag();
-- writer.dd();
-- writer.dl();
-- print(outputString);
-- writer.dlEnd();
-- writer.ddEnd();
-+ Content tagContent = new RawHtml(outputString);
-+ dlTags.addContent(tagContent);
- }
-+ contentTree.addContent(dlTags);
- }
-
- /**
-@@ -192,24 +225,4 @@
- return true;
- return false;
- }
--
-- public void writeMemberFooter() {
-- printMemberFooter();
-- }
--
-- /**
-- * Write the footer information. If the serilization overview section was
-- * printed, check for definition list and close list tag.
-- *
-- * @param heading the heading that was written.
-- */
-- public void writeFooter(String heading) {
-- if (printedOverallAnchor) {
-- if (heading.equals(
-- configuration().getText("doclet.Serialized_Form_class"))) {
-- writer.printMemberDetailsListEndTag();
-- assert !writer.getMemberDetailsListPrinted();
-- }
-- }
-- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialMethodWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialMethodWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialMethodWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlSerialMethodWriter.java
-@@ -28,57 +28,119 @@
- import com.sun.javadoc.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.taglets.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Generate serialized form for Serializable/Externalizable methods.
- * Documentation denoted by the <code>serialData</code> tag is processed.
- *
- * @author Joe Fialli
-+ * @author Bhavesh Patel (Modified)
- */
- public class HtmlSerialMethodWriter extends MethodWriterImpl implements
- SerializedFormWriter.SerialMethodWriter{
-
-- private boolean printedFirstMember = false;
--
- public HtmlSerialMethodWriter(SubWriterHolderWriter writer,
- ClassDoc classdoc) {
- super(writer, classdoc);
- }
-
-- public void writeHeader(String heading) {
-- writer.anchor("serialized_methods");
-- writer.printTableHeadingBackground(heading);
-- writer.p();
-+ /**
-+ * Return the header for serializable methods section.
-+ *
-+ * @return a content tree for the header
-+ */
-+ public Content getSerializableMethodsHeader() {
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.blockList);
-+ return ul;
- }
-
-- public void writeNoCustomizationMsg(String msg) {
-- writer.print(msg);
-- writer.p();
-+ /**
-+ * Return the header for serializable methods content section.
-+ *
-+ * @param isLastContent true if the cotent being documented is the last content.
-+ * @return a content tree for the header
-+ */
-+ public Content getMethodsContentHeader(boolean isLastContent) {
-+ HtmlTree li = new HtmlTree(HtmlTag.LI);
-+ if (isLastContent)
-+ li.addStyle(HtmlStyle.blockListLast);
-+ else
-+ li.addStyle(HtmlStyle.blockList);
-+ return li;
- }
-
-- public void writeMemberHeader(MethodDoc member) {
-- if (printedFirstMember) {
-- writer.printMemberHeader();
-- }
-- printedFirstMember = true;
-- writer.anchor(member);
-- printHead(member);
-- writeSignature(member);
-+ /**
-+ * Add serializable methods.
-+ *
-+ * @param heading the heading for the section
-+ * @param serializableMethodContent the tree to be added to the serializable methods
-+ * content tree
-+ * @return a content tree for the serializable methods content
-+ */
-+ public Content getSerializableMethods(String heading, Content serializableMethodContent) {
-+ Content li = HtmlTree.LI(HtmlStyle.blockList, writer.getMarkerAnchor(
-+ "serialized_methods"));
-+ Content headingContent = new StringContent(heading);
-+ Content serialHeading = HtmlTree.HEADING(HtmlConstants.SERIALIZED_MEMBER_HEADING,
-+ headingContent);
-+ li.addContent(serialHeading);
-+ li.addContent(serializableMethodContent);
-+ return li;
- }
-
-- public void writeMemberFooter() {
-- printMemberFooter();
-+ /**
-+ * Return the no customization message.
-+ *
-+ * @param msg the message to be displayed
-+ * @return no customization message content
-+ */
-+ public Content getNoCustomizationMsg(String msg) {
-+ Content noCustomizationMsg = new StringContent(msg);
-+ return noCustomizationMsg;
- }
-
-- public void writeDeprecatedMemberInfo(MethodDoc member) {
-- printDeprecated(member);
-+ /**
-+ * Add the member header.
-+ *
-+ * @param member the method document to be listed
-+ * @param methodsContentTree the content tree to which the member header will be added
-+ */
-+ public void addMemberHeader(MethodDoc member, Content methodsContentTree) {
-+ methodsContentTree.addContent(writer.getMarkerAnchor(
-+ writer.getAnchor(member)));
-+ methodsContentTree.addContent(getHead(member));
-+ methodsContentTree.addContent(getSignature(member));
- }
-
-- public void writeMemberDescription(MethodDoc member) {
-- printComment(member);
-+ /**
-+ * Add the deprecated information for this member.
-+ *
-+ * @param member the method to document.
-+ * @param methodsContentTree the tree to which the deprecated info will be added
-+ */
-+ public void addDeprecatedMemberInfo(MethodDoc member, Content methodsContentTree) {
-+ addDeprecatedInfo(member, methodsContentTree);
- }
-
-- public void writeMemberTags(MethodDoc member) {
-+ /**
-+ * Add the description text for this member.
-+ *
-+ * @param member the method to document.
-+ * @param methodsContentTree the tree to which the deprecated info will be added
-+ */
-+ public void addMemberDescription(MethodDoc member, Content methodsContentTree) {
-+ addComment(member, methodsContentTree);
-+ }
-+
-+ /**
-+ * Add the tag information for this member.
-+ *
-+ * @param member the method to document.
-+ * @param methodsContentTree the tree to which the member tags info will be added
-+ */
-+ public void addMemberTags(MethodDoc member, Content methodsContentTree) {
- TagletOutputImpl output = new TagletOutputImpl("");
- TagletManager tagletManager =
- ConfigurationImpl.getInstance().tagletManager;
-@@ -86,14 +148,12 @@
- tagletManager.getSerializedFormTags(),
- writer.getTagletWriterInstance(false), output);
- String outputString = output.toString().trim();
-+ Content dlTags = new HtmlTree(HtmlTag.DL);
- if (!outputString.isEmpty()) {
-- writer.printMemberDetailsListStartTag();
-- writer.dd();
-- writer.dl();
-- print(outputString);
-- writer.dlEnd();
-- writer.ddEnd();
-+ Content tagContent = new RawHtml(outputString);
-+ dlTags.addContent(tagContent);
- }
-+ methodsContentTree.addContent(dlTags);
- MethodDoc method = (MethodDoc)member;
- if (method.name().compareTo("writeExternal") == 0
- && method.tags("serialData").length == 0) {
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/LinkFactoryImpl.java
-@@ -79,7 +79,7 @@
- String filename = pathString(classLinkInfo);
- if (linkInfo.linkToSelf ||
- !(linkInfo.classDoc.name() + ".html").equals(m_writer.filename)) {
-- linkOutput.append(m_writer.getHyperLink(filename,
-+ linkOutput.append(m_writer.getHyperLinkString(filename,
- classLinkInfo.where, label.toString(),
- classLinkInfo.isStrong, classLinkInfo.styleName,
- title, classLinkInfo.target));
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/MethodWriterImpl.java
-@@ -28,9 +28,9 @@
- import java.io.*;
-
- import com.sun.javadoc.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
--import com.sun.tools.doclets.internal.toolkit.taglets.*;
-
- /**
- * Writes method documentation in HTML format.
-@@ -43,8 +43,6 @@
- public class MethodWriterImpl extends AbstractExecutableMemberWriter
- implements MethodWriter, MemberSummaryWriter {
-
-- private boolean printedSummaryHeader = false;
--
- /**
- * Construct a new MethodWriterImpl.
- *
-@@ -65,184 +63,127 @@
- }
-
- /**
-- * Write the methods summary header for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-+ * {@inheritDoc}
- */
-- public void writeMemberSummaryHeader(ClassDoc classDoc) {
-- printedSummaryHeader = true;
-- writer.println();
-- writer.println("<!-- ========== METHOD SUMMARY =========== -->");
-- writer.println();
-- writer.printSummaryHeader(this, classDoc);
-- }
--
-- /**
-- * Write the methods summary footer for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeMemberSummaryFooter(ClassDoc classDoc) {
-- writer.printSummaryFooter(this, classDoc);
-- }
--
-- /**
-- * Write the inherited methods summary header for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-- if(! printedSummaryHeader){
-- //We don't want inherited summary to not be under heading.
-- writeMemberSummaryHeader(classDoc);
-- writeMemberSummaryFooter(classDoc);
-- printedSummaryHeader = true;
-- }
-- writer.printInheritedSummaryHeader(this, classDoc);
-+ public Content getMemberSummaryHeader(ClassDoc classDoc,
-+ Content memberSummaryTree) {
-+ memberSummaryTree.addContent(HtmlConstants.START_OF_METHOD_SUMMARY);
-+ Content memberTree = writer.getMemberTreeHeader();
-+ writer.addSummaryHeader(this, classDoc, memberTree);
-+ return memberTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writeInheritedMemberSummary(ClassDoc classDoc,
-- ProgramElementDoc method, boolean isFirst, boolean isLast) {
-- writer.printInheritedSummaryMember(this, classDoc, method, isFirst);
-+ public Content getMethodDetailsTreeHeader(ClassDoc classDoc,
-+ Content memberDetailsTree) {
-+ memberDetailsTree.addContent(HtmlConstants.START_OF_METHOD_DETAILS);
-+ Content methodDetailsTree = writer.getMemberTreeHeader();
-+ methodDetailsTree.addContent(writer.getMarkerAnchor("method_detail"));
-+ Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
-+ writer.methodDetailsLabel);
-+ methodDetailsTree.addContent(heading);
-+ return methodDetailsTree;
- }
-
- /**
-- * Write the inherited methods summary footer for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-+ * {@inheritDoc}
- */
-- public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {
-- writer.printInheritedSummaryFooter(this, classDoc); ;
-+ public Content getMethodDocTreeHeader(MethodDoc method,
-+ Content methodDetailsTree) {
-+ String erasureAnchor;
-+ if ((erasureAnchor = getErasureAnchor(method)) != null) {
-+ methodDetailsTree.addContent(writer.getMarkerAnchor((erasureAnchor)));
-+ }
-+ methodDetailsTree.addContent(
-+ writer.getMarkerAnchor(writer.getAnchor(method)));
-+ Content methodDocTree = writer.getMemberTreeHeader();
-+ Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
-+ heading.addContent(method.name());
-+ methodDocTree.addContent(heading);
-+ return methodDocTree;
- }
-
- /**
-- * Write the header for the method documentation.
-+ * Get the signature for the given method.
- *
-- * @param classDoc the class that the methods belong to.
-+ * @param method the method being documented.
-+ * @return a content object for the signature
- */
-- public void writeHeader(ClassDoc classDoc, String header) {
-- writer.println();
-- writer.println("<!-- ============ METHOD DETAIL ========== -->");
-- writer.println();
-- writer.anchor("method_detail");
-- writer.printTableHeadingBackground(header);
-+ public Content getSignature(MethodDoc method) {
-+ writer.displayLength = 0;
-+ Content pre = new HtmlTree(HtmlTag.PRE);
-+ writer.addAnnotationInfo(method, pre);
-+ addModifiers(method, pre);
-+ addTypeParameters(method, pre);
-+ addReturnType(method, pre);
-+ if (configuration().linksource) {
-+ Content methodName = new StringContent(method.name());
-+ writer.addSrcLink(method, methodName, pre);
-+ } else {
-+ addName(method.name(), pre);
-+ }
-+ addParameters(method, pre);
-+ addExceptions(method, pre);
-+ return pre;
- }
-
- /**
-- * Write the method header for the given method.
-- *
-- * @param method the method being documented.
-- * @param isFirst the flag to indicate whether or not the method is the
-- * first to be documented.
-+ * {@inheritDoc}
- */
-- public void writeMethodHeader(MethodDoc method, boolean isFirst) {
-- if (! isFirst) {
-- writer.printMemberHeader();
-- }
-- writer.println();
-- String erasureAnchor;
-- if ((erasureAnchor = getErasureAnchor(method)) != null) {
-- writer.anchor(erasureAnchor);
-- }
-- writer.anchor(method);
-- writer.h3();
-- writer.print(method.name());
-- writer.h3End();
-+ public void addDeprecated(MethodDoc method, Content methodDocTree) {
-+ addDeprecatedInfo(method, methodDocTree);
- }
-
- /**
-- * Write the signature for the given method.
-- *
-- * @param method the method being documented.
-+ * {@inheritDoc}
- */
-- public void writeSignature(MethodDoc method) {
-- writer.displayLength = 0;
-- writer.pre();
-- writer.writeAnnotationInfo(method);
-- printModifiers(method);
-- writeTypeParameters(method);
-- printReturnType(method);
-- if (configuration().linksource) {
-- writer.printSrcLink(method, method.name());
-- } else {
-- strong(method.name());
-- }
-- writeParameters(method);
-- writeExceptions(method);
-- writer.preEnd();
-- assert !writer.getMemberDetailsListPrinted();
-- }
--
-- /**
-- * Write the deprecated output for the given method.
-- *
-- * @param method the method being documented.
-- */
-- public void writeDeprecated(MethodDoc method) {
-- printDeprecated(method);
-- }
--
-- /**
-- * Write the comments for the given method.
-- *
-- * @param method the method being documented.
-- */
-- public void writeComments(Type holder, MethodDoc method) {
-+ public void addComments(Type holder, MethodDoc method, Content methodDocTree) {
- ClassDoc holderClassDoc = holder.asClassDoc();
- if (method.inlineTags().length > 0) {
-- writer.printMemberDetailsListStartTag();
- if (holder.asClassDoc().equals(classdoc) ||
-- (! (holderClassDoc.isPublic() ||
-+ (! (holderClassDoc.isPublic() ||
- Util.isLinkable(holderClassDoc, configuration())))) {
-- writer.dd();
-- writer.printInlineComment(method);
-- writer.ddEnd();
-+ writer.addInlineComment(method, methodDocTree);
- } else {
-- String classlink = writer.codeText(
-- writer.getDocLink(LinkInfoImpl.CONTEXT_METHOD_DOC_COPY,
-+ Content link = new RawHtml(
-+ writer.getDocLink(LinkInfoImpl.CONTEXT_METHOD_DOC_COPY,
- holder.asClassDoc(), method,
- holder.asClassDoc().isIncluded() ?
- holder.typeName() : holder.qualifiedTypeName(),
-- false));
-- writer.dd();
-- writer.strongText(holder.asClassDoc().isClass()?
-- "doclet.Description_From_Class":
-- "doclet.Description_From_Interface",
-- classlink);
-- writer.ddEnd();
-- writer.dd();
-- writer.printInlineComment(method);
-- writer.ddEnd();
-+ false));
-+ Content codelLink = HtmlTree.CODE(link);
-+ Content strong = HtmlTree.STRONG(holder.asClassDoc().isClass()?
-+ writer.descfrmClassLabel : writer.descfrmInterfaceLabel);
-+ strong.addContent(writer.getSpace());
-+ strong.addContent(codelLink);
-+ methodDocTree.addContent(HtmlTree.DIV(HtmlStyle.block, strong));
-+ writer.addInlineComment(method, methodDocTree);
- }
- }
- }
-
- /**
-- * Write the tag output for the given method.
-- *
-- * @param method the method being documented.
-+ * {@inheritDoc}
- */
-- public void writeTags(MethodDoc method) {
-- writer.printTags(method);
-+ public void addTags(MethodDoc method, Content methodDocTree) {
-+ writer.addTagsInfo(method, methodDocTree);
- }
-
- /**
-- * Write the method footer.
-+ * {@inheritDoc}
- */
-- public void writeMethodFooter() {
-- printMemberFooter();
-+ public Content getMethodDetails(Content methodDetailsTree) {
-+ return getMemberTree(methodDetailsTree);
- }
-
- /**
-- * Write the footer for the method documentation.
-- *
-- * @param classDoc the class that the methods belong to.
-+ * {@inheritDoc}
- */
-- public void writeFooter(ClassDoc classDoc) {
-- //No footer to write for method documentation
-+ public Content getMethodDoc(Content methodDocTree,
-+ boolean isLastContent) {
-+ return getMemberTree(methodDocTree, isLastContent);
- }
-
- /**
-@@ -256,53 +197,89 @@
- return VisibleMemberMap.METHODS;
- }
-
-- public void printSummaryLabel() {
-- writer.printText("doclet.Method_Summary");
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addSummaryLabel(Content memberTree) {
-+ Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
-+ writer.getResource("doclet.Method_Summary"));
-+ memberTree.addContent(label);
- }
-
-- public void printTableSummary() {
-- writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getTableSummary() {
-+ return configuration().getText("doclet.Member_Table_Summary",
- configuration().getText("doclet.Method_Summary"),
-- configuration().getText("doclet.methods")));
-+ configuration().getText("doclet.methods"));
- }
-
-- public void printSummaryTableHeader(ProgramElementDoc member) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getCaption() {
-+ return configuration().getText("doclet.Methods");
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String[] getSummaryTableHeader(ProgramElementDoc member) {
- String[] header = new String[] {
- writer.getModifierTypeHeader(),
- configuration().getText("doclet.0_and_1",
- configuration().getText("doclet.Method"),
- configuration().getText("doclet.Description"))
- };
-- writer.summaryTableHeader(header, "col");
-+ return header;
- }
-
-- public void printSummaryAnchor(ClassDoc cd) {
-- writer.anchor("method_summary");
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
-+ memberTree.addContent(writer.getMarkerAnchor("method_summary"));
- }
-
-- public void printInheritedSummaryAnchor(ClassDoc cd) {
-- writer.anchor("methods_inherited_from_class_" +
-- ConfigurationImpl.getInstance().getClassName(cd));
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
-+ inheritedTree.addContent(writer.getMarkerAnchor(
-+ "methods_inherited_from_class_" +
-+ configuration().getClassName(cd)));
- }
-
-- public void printInheritedSummaryLabel(ClassDoc cd) {
-- String classlink = writer.getPreQualifiedClassLink(
-- LinkInfoImpl.CONTEXT_MEMBER, cd, false);
-- writer.strong();
-- String key = cd.isClass()?
-- "doclet.Methods_Inherited_From_Class" :
-- "doclet.Methods_Inherited_From_Interface";
-- writer.printText(key, classlink);
-- writer.strongEnd();
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
-+ Content classLink = new RawHtml(writer.getPreQualifiedClassLink(
-+ LinkInfoImpl.CONTEXT_MEMBER, cd, false));
-+ Content label = new StringContent(cd.isClass() ?
-+ configuration().getText("doclet.Methods_Inherited_From_Class") :
-+ configuration().getText("doclet.Methods_Inherited_From_Interface"));
-+ Content labelHeading = HtmlTree.HEADING(HtmlConstants.INHERITED_SUMMARY_HEADING,
-+ label);
-+ labelHeading.addContent(writer.getSpace());
-+ labelHeading.addContent(classLink);
-+ inheritedTree.addContent(labelHeading);
- }
-
-- protected void printSummaryType(ProgramElementDoc member) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
- MethodDoc meth = (MethodDoc)member;
-- printModifierAndType(meth, meth.returnType());
-+ addModifierAndType(meth, meth.returnType(), tdSummaryType);
- }
-
-- protected static void printOverridden(HtmlDocletWriter writer,
-- Type overriddenType, MethodDoc method) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected static void addOverridden(HtmlDocletWriter writer,
-+ Type overriddenType, MethodDoc method, Content dl) {
- if(writer.configuration.nocomment){
- return;
- }
-@@ -317,31 +294,33 @@
- //is not visible so don't document this.
- return;
- }
-- String label = "doclet.Overrides";
-+ Content label = writer.overridesLabel;
- int context = LinkInfoImpl.CONTEXT_METHOD_OVERRIDES;
-
- if (method != null) {
- if(overriddenType.asClassDoc().isAbstract() && method.isAbstract()){
- //Abstract method is implemented from abstract class,
- //not overridden
-- label = "doclet.Specified_By";
-+ label = writer.specifiedByLabel;
- context = LinkInfoImpl.CONTEXT_METHOD_SPECIFIED_BY;
- }
-- String overriddenTypeLink = writer.codeText(
-- writer.getLink(new LinkInfoImpl(context, overriddenType)));
-+ Content dt = HtmlTree.DT(HtmlTree.STRONG(label));
-+ dl.addContent(dt);
-+ Content overriddenTypeLink = new RawHtml(
-+ writer.getLink(new LinkInfoImpl(context, overriddenType)));
-+ Content codeOverridenTypeLink = HtmlTree.CODE(overriddenTypeLink);
- String name = method.name();
-- writer.dt();
-- writer.strongText(label);
-- writer.dtEnd();
-- writer.dd();
-- String methLink = writer.codeText(
-- writer.getLink(
-+ Content methlink = new RawHtml(writer.getLink(
- new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-- overriddenType.asClassDoc(),
-- writer.getAnchor(method), name, false)
-- ));
-- writer.printText("doclet.in_class", methLink, overriddenTypeLink);
-- writer.ddEnd();
-+ overriddenType.asClassDoc(),
-+ writer.getAnchor(method), name, false)));
-+ Content codeMethLink = HtmlTree.CODE(methlink);
-+ Content dd = HtmlTree.DD(codeMethLink);
-+ dd.addContent(writer.getSpace());
-+ dd.addContent(writer.getResource("doclet.in_class"));
-+ dd.addContent(writer.getSpace());
-+ dd.addContent(codeOverridenTypeLink);
-+ dl.addContent(dd);
- }
- }
-
-@@ -363,61 +342,78 @@
- }
- }
-
-- protected static void printImplementsInfo(HtmlDocletWriter writer,
-- MethodDoc method) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected static void addImplementsInfo(HtmlDocletWriter writer,
-+ MethodDoc method, Content dl) {
- if(writer.configuration.nocomment){
- return;
- }
- ImplementedMethods implementedMethodsFinder =
-- new ImplementedMethods(method, writer.configuration);
-+ new ImplementedMethods(method, writer.configuration);
- MethodDoc[] implementedMethods = implementedMethodsFinder.build();
- for (int i = 0; i < implementedMethods.length; i++) {
- MethodDoc implementedMeth = implementedMethods[i];
- Type intfac = implementedMethodsFinder.getMethodHolder(implementedMeth);
-- String methlink = "";
-- String intfaclink = writer.codeText(
-- writer.getLink(new LinkInfoImpl(
-+ Content intfaclink = new RawHtml(writer.getLink(new LinkInfoImpl(
- LinkInfoImpl.CONTEXT_METHOD_SPECIFIED_BY, intfac)));
-- writer.dt();
-- writer.strongText("doclet.Specified_By");
-- writer.dtEnd();
-- writer.dd();
-- methlink = writer.codeText(writer.getDocLink(
-- LinkInfoImpl.CONTEXT_MEMBER, implementedMeth,
-- implementedMeth.name(), false));
-- writer.printText("doclet.in_interface", methlink, intfaclink);
-- writer.ddEnd();
-- }
--
-- }
--
-- protected void printReturnType(MethodDoc method) {
-- Type type = method.returnType();
-- if (type != null) {
-- writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_RETURN_TYPE,
-- type));
-- print(' ');
-+ Content codeIntfacLink = HtmlTree.CODE(intfaclink);
-+ Content dt = HtmlTree.DT(HtmlTree.STRONG(writer.specifiedByLabel));
-+ dl.addContent(dt);
-+ Content methlink = new RawHtml(writer.getDocLink(
-+ LinkInfoImpl.CONTEXT_MEMBER, implementedMeth,
-+ implementedMeth.name(), false));
-+ Content codeMethLink = HtmlTree.CODE(methlink);
-+ Content dd = HtmlTree.DD(codeMethLink);
-+ dd.addContent(writer.getSpace());
-+ dd.addContent(writer.getResource("doclet.in_interface"));
-+ dd.addContent(writer.getSpace());
-+ dd.addContent(codeIntfacLink);
-+ dl.addContent(dd);
- }
- }
-
-- protected void printNavSummaryLink(ClassDoc cd, boolean link) {
-- if (link) {
-- writer.printHyperLink("", (cd == null)?
-- "method_summary":
-- "methods_inherited_from_class_" +
-- ConfigurationImpl.getInstance().getClassName(cd),
-- ConfigurationImpl.getInstance().getText("doclet.navMethod"));
-- } else {
-- writer.printText("doclet.navMethod");
-+ /**
-+ * Add the return type.
-+ *
-+ * @param method the method being documented.
-+ * @param htmltree the content tree to which the return type will be added
-+ */
-+ protected void addReturnType(MethodDoc method, Content htmltree) {
-+ Type type = method.returnType();
-+ if (type != null) {
-+ Content linkContent = new RawHtml(writer.getLink(
-+ new LinkInfoImpl(LinkInfoImpl.CONTEXT_RETURN_TYPE, type)));
-+ htmltree.addContent(linkContent);
-+ htmltree.addContent(writer.getSpace());
- }
- }
-
-- protected void printNavDetailLink(boolean link) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
- if (link) {
-- writer.printHyperLink("", "method_detail",
-- ConfigurationImpl.getInstance().getText("doclet.navMethod"));
-+ return writer.getHyperLink("", (cd == null)?
-+ "method_summary":
-+ "methods_inherited_from_class_" +
-+ configuration().getClassName(cd),
-+ writer.getResource("doclet.navMethod"));
- } else {
-- writer.printText("doclet.navMethod");
-+ return writer.getResource("doclet.navMethod");
-+ }
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addNavDetailLink(boolean link, Content liNav) {
-+ if (link) {
-+ liNav.addContent(writer.getHyperLink("", "method_detail",
-+ writer.getResource("doclet.navMethod")));
-+ } else {
-+ liNav.addContent(writer.getResource("doclet.navMethod"));
- }
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/NestedClassWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/NestedClassWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/NestedClassWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/NestedClassWriterImpl.java
-@@ -26,8 +26,10 @@
- package com.sun.tools.doclets.formats.html;
-
- import java.io.*;
-+import java.util.*;
-
- import com.sun.javadoc.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
-
-@@ -42,8 +44,6 @@
- public class NestedClassWriterImpl extends AbstractMemberWriter
- implements MemberSummaryWriter {
-
-- private boolean printedSummaryHeader = false;
--
- public NestedClassWriterImpl(SubWriterHolderWriter writer,
- ClassDoc classdoc) {
- super(writer, classdoc);
-@@ -54,90 +54,17 @@
- }
-
- /**
-- * Write the classes summary header for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeMemberSummaryHeader(ClassDoc classDoc) {
-- printedSummaryHeader = true;
-- writer.println("<!-- ======== NESTED CLASS SUMMARY ======== -->");
-- writer.println();
-- writer.printSummaryHeader(this, classDoc);
-- }
--
-- /**
-- * Write the classes summary footer for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeMemberSummaryFooter(ClassDoc classDoc) {
-- writer.printSummaryFooter(this, classDoc);
-- }
--
-- /**
-- * Write the inherited classes summary header for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeInheritedMemberSummaryHeader(ClassDoc classDoc) {
-- if(! printedSummaryHeader){
-- //We don't want inherited summary to not be under heading.
-- writeMemberSummaryHeader(classDoc);
-- writeMemberSummaryFooter(classDoc);
-- printedSummaryHeader = true;
-- }
-- writer.printInheritedSummaryHeader(this, classDoc);
-- }
--
-- /**
- * {@inheritDoc}
- */
-- public void writeInheritedMemberSummary(ClassDoc classDoc,
-- ProgramElementDoc nestedClass, boolean isFirst, boolean isLast) {
-- writer.printInheritedSummaryMember(this, classDoc, nestedClass, isFirst);
-+ public Content getMemberSummaryHeader(ClassDoc classDoc,
-+ Content memberSummaryTree) {
-+ memberSummaryTree.addContent(HtmlConstants.START_OF_NESTED_CLASS_SUMMARY);
-+ Content memberTree = writer.getMemberTreeHeader();
-+ writer.addSummaryHeader(this, classDoc, memberTree);
-+ return memberTree;
- }
-
- /**
-- * Write the inherited classes summary footer for the given class.
-- *
-- * @param classDoc the class the summary belongs to.
-- */
-- public void writeInheritedMemberSummaryFooter(ClassDoc classDoc) {
-- writer.printInheritedSummaryFooter(this, classDoc);
-- writer.println();
-- }
--
-- /**
-- * Write the header for the nested class documentation.
-- *
-- * @param classDoc the class that the classes belong to.
-- */
-- public void writeHeader(ClassDoc classDoc, String header) {
-- writer.anchor("nested class_detail");
-- writer.printTableHeadingBackground(header);
-- }
--
-- /**
-- * Write the nested class header for the given nested class.
-- *
-- * @param nestedClass the nested class being documented.
-- * @param isFirst the flag to indicate whether or not the nested class is the
-- * first to be documented.
-- */
-- public void writeClassHeader(ClassDoc nestedClass, boolean isFirst) {
-- if (! isFirst) {
-- writer.printMemberHeader();
-- writer.println("");
-- }
-- writer.anchor(nestedClass.name());
-- writer.h3();
-- writer.print(nestedClass.name());
-- writer.h3End();
-- }
--
--
--
-- /**
- * Close the writer.
- */
- public void close() throws IOException {
-@@ -148,17 +75,35 @@
- return VisibleMemberMap.INNERCLASSES;
- }
-
-- public void printSummaryLabel() {
-- writer.printText("doclet.Nested_Class_Summary");
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addSummaryLabel(Content memberTree) {
-+ Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
-+ writer.getResource("doclet.Nested_Class_Summary"));
-+ memberTree.addContent(label);
- }
-
-- public void printTableSummary() {
-- writer.tableIndexSummary(configuration().getText("doclet.Member_Table_Summary",
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getTableSummary() {
-+ return configuration().getText("doclet.Member_Table_Summary",
- configuration().getText("doclet.Nested_Class_Summary"),
-- configuration().getText("doclet.nested_classes")));
-+ configuration().getText("doclet.nested_classes"));
- }
-
-- public void printSummaryTableHeader(ProgramElementDoc member) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getCaption() {
-+ return configuration().getText("doclet.Nested_Classes");
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String[] getSummaryTableHeader(ProgramElementDoc member) {
- String[] header;
- if (member.isInterface()) {
- header = new String[] {
-@@ -176,92 +121,95 @@
- configuration().getText("doclet.Description"))
- };
- }
-- writer.summaryTableHeader(header, "col");
-+ return header;
- }
-
-- public void printSummaryAnchor(ClassDoc cd) {
-- writer.anchor("nested_class_summary");
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
-+ memberTree.addContent(writer.getMarkerAnchor("nested_class_summary"));
- }
-
-- public void printInheritedSummaryAnchor(ClassDoc cd) {
-- writer.anchor("nested_classes_inherited_from_class_" +
-- cd.qualifiedName());
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
-+ inheritedTree.addContent(writer.getMarkerAnchor(
-+ "nested_classes_inherited_from_class_" + cd.qualifiedName()));
- }
-
-- public void printInheritedSummaryLabel(ClassDoc cd) {
-- String clslink = writer.getPreQualifiedClassLink(
-- LinkInfoImpl.CONTEXT_MEMBER, cd, false);
-- writer.strong();
-- writer.printText(cd.isInterface() ?
-- "doclet.Nested_Classes_Interface_Inherited_From_Interface" :
-- "doclet.Nested_Classes_Interfaces_Inherited_From_Class",
-- clslink);
-- writer.strongEnd();
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
-+ Content classLink = new RawHtml(writer.getPreQualifiedClassLink(
-+ LinkInfoImpl.CONTEXT_MEMBER, cd, false));
-+ Content label = new StringContent(cd.isInterface() ?
-+ configuration().getText("doclet.Nested_Classes_Interface_Inherited_From_Interface") :
-+ configuration().getText("doclet.Nested_Classes_Interfaces_Inherited_From_Class"));
-+ Content labelHeading = HtmlTree.HEADING(HtmlConstants.INHERITED_SUMMARY_HEADING,
-+ label);
-+ labelHeading.addContent(writer.getSpace());
-+ labelHeading.addContent(classLink);
-+ inheritedTree.addContent(labelHeading);
- }
-
-- protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
-- writer.strong();
-- writer.printLink(new LinkInfoImpl(context, (ClassDoc)member, false));
-- writer.strongEnd();
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
-+ Content tdSummary) {
-+ Content strong = HtmlTree.STRONG(new RawHtml(
-+ writer.getLink(new LinkInfoImpl(context, (ClassDoc)member, false))));
-+ Content code = HtmlTree.CODE(strong);
-+ tdSummary.addContent(code);
- }
-
-- protected void writeInheritedSummaryLink(ClassDoc cd,
-- ProgramElementDoc member) {
-- writer.printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-- (ClassDoc)member, false));
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addInheritedSummaryLink(ClassDoc cd,
-+ ProgramElementDoc member, Content linksTree) {
-+ linksTree.addContent(new RawHtml(
-+ writer.getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
-+ (ClassDoc)member, false))));
- }
-
-- protected void printSummaryType(ProgramElementDoc member) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addSummaryType(ProgramElementDoc member,
-+ Content tdSummaryType) {
- ClassDoc cd = (ClassDoc)member;
-- printModifierAndType(cd, null);
-+ addModifierAndType(cd, null, tdSummaryType);
- }
-
-- protected void printHeader(ClassDoc cd) {
-- // N.A.
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected Content getDeprecatedLink(ProgramElementDoc member) {
-+ return writer.getQualifiedClassLink(LinkInfoImpl.CONTEXT_MEMBER,
-+ (ClassDoc)member);
- }
-
-- protected void printBodyHtmlEnd(ClassDoc cd) {
-- // N.A.
-- }
--
-- protected void printMember(ProgramElementDoc member) {
-- // N.A.
-- }
--
-- protected void writeDeprecatedLink(ProgramElementDoc member) {
-- writer.printQualifiedClassLink(LinkInfoImpl.CONTEXT_MEMBER,
-- (ClassDoc)member);
-- }
--
-- protected void printNavSummaryLink(ClassDoc cd, boolean link) {
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
- if (link) {
-- writer.printHyperLink("", (cd == null) ? "nested_class_summary":
-- "nested_classes_inherited_from_class_" +
-+ return writer.getHyperLink("", (cd == null) ? "nested_class_summary":
-+ "nested_classes_inherited_from_class_" +
- cd.qualifiedName(),
-- ConfigurationImpl.getInstance().getText("doclet.navNested"));
-+ writer.getResource("doclet.navNested"));
- } else {
-- writer.printText("doclet.navNested");
-+ return writer.getResource("doclet.navNested");
- }
- }
-
-- protected void printNavDetailLink(boolean link) {
-- }
--
-- protected void printMemberLink(ProgramElementDoc member) {
-- }
--
-- protected void printMembersSummaryLink(ClassDoc cd, ClassDoc icd,
-- boolean link) {
-- if (link) {
-- writer.printHyperLink(cd.name() + ".html",
-- (cd == icd)?
-- "nested_class_summary":
-- "nested_classes_inherited_from_class_" +
-- icd.qualifiedName(),
-- ConfigurationImpl.getInstance().getText(
-- "doclet.Nested_Class_Summary"));
-- } else {
-- writer.printText("doclet.Nested_Class_Summary");
-- }
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addNavDetailLink(boolean link, Content liNav) {
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/PackageFrameWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/PackageFrameWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageFrameWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageFrameWriter.java
-@@ -25,18 +25,20 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.io.*;
-+import java.util.*;
-+import com.sun.javadoc.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
--import com.sun.javadoc.*;
--import java.io.*;
--import java.util.*;
- /**
- * Class to generate file for each package contents in the left-hand bottom
- * frame. This will list all the Class Kinds in the package. A click on any
- * class-kind will update the right-hand frame with the clicked class-kind page.
- *
- * @author Atul M Dambalkar
-+ * @author Bhavesh Patel (Modified)
- */
- public class PackageFrameWriter extends HtmlDocletWriter {
-
-@@ -85,132 +87,107 @@
- * @param packageDoc The package for which "pacakge-frame.html" is to be generated.
- */
- public static void generate(ConfigurationImpl configuration,
-- PackageDoc packageDoc) {
-+ PackageDoc packageDoc) {
- PackageFrameWriter packgen;
- try {
- packgen = new PackageFrameWriter(configuration, packageDoc);
- String pkgName = Util.getPackageName(packageDoc);
-- packgen.printHtmlHeader(pkgName, configuration.metakeywords.getMetaKeywords(packageDoc), false);
-- packgen.printPackageHeader(pkgName);
-- packgen.generateClassListing();
-- packgen.printBodyHtmlEnd();
-+ Content body = packgen.getBody(false, packgen.getWindowTitle(pkgName));
-+ Content pkgNameContent = new StringContent(pkgName);
-+ Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, HtmlStyle.bar,
-+ packgen.getTargetPackageLink(packageDoc, "classFrame", pkgNameContent));
-+ body.addContent(heading);
-+ HtmlTree div = new HtmlTree(HtmlTag.DIV);
-+ div.addStyle(HtmlStyle.indexContainer);
-+ packgen.addClassListing(div);
-+ body.addContent(div);
-+ packgen.printHtmlDocument(
-+ configuration.metakeywords.getMetaKeywords(packageDoc), false, body);
- packgen.close();
- } catch (IOException exc) {
- configuration.standardmessage.error(
-- "doclet.exception_encountered",
-- exc.toString(), OUTPUT_FILE_NAME);
-+ "doclet.exception_encountered",
-+ exc.toString(), OUTPUT_FILE_NAME);
- throw new DocletAbortException();
- }
- }
-
- /**
-- * Generate class listing for all the classes in this package. Divide class
-+ * Add class listing for all the classes in this package. Divide class
- * listing as per the class kind and generate separate listing for
- * Classes, Interfaces, Exceptions and Errors.
-+ *
-+ * @param contentTree the content tree to which the listing will be added
- */
-- protected void generateClassListing() {
-+ protected void addClassListing(Content contentTree) {
- Configuration config = configuration();
- if (packageDoc.isIncluded()) {
-- generateClassKindListing(packageDoc.interfaces(),
-- configuration.getText("doclet.Interfaces"));
-- generateClassKindListing(packageDoc.ordinaryClasses(),
-- configuration.getText("doclet.Classes"));
-- generateClassKindListing(packageDoc.enums(),
-- configuration.getText("doclet.Enums"));
-- generateClassKindListing(packageDoc.exceptions(),
-- configuration.getText("doclet.Exceptions"));
-- generateClassKindListing(packageDoc.errors(),
-- configuration.getText("doclet.Errors"));
-- generateClassKindListing(packageDoc.annotationTypes(),
-- configuration.getText("doclet.AnnotationTypes"));
-+ addClassKindListing(packageDoc.interfaces(),
-+ getResource("doclet.Interfaces"), contentTree);
-+ addClassKindListing(packageDoc.ordinaryClasses(),
-+ getResource("doclet.Classes"), contentTree);
-+ addClassKindListing(packageDoc.enums(),
-+ getResource("doclet.Enums"), contentTree);
-+ addClassKindListing(packageDoc.exceptions(),
-+ getResource("doclet.Exceptions"), contentTree);
-+ addClassKindListing(packageDoc.errors(),
-+ getResource("doclet.Errors"), contentTree);
-+ addClassKindListing(packageDoc.annotationTypes(),
-+ getResource("doclet.AnnotationTypes"), contentTree);
- } else {
- String name = Util.getPackageName(packageDoc);
-- generateClassKindListing(config.classDocCatalog.interfaces(name),
-- configuration.getText("doclet.Interfaces"));
-- generateClassKindListing(config.classDocCatalog.ordinaryClasses(name),
-- configuration.getText("doclet.Classes"));
-- generateClassKindListing(config.classDocCatalog.enums(name),
-- configuration.getText("doclet.Enums"));
-- generateClassKindListing(config.classDocCatalog.exceptions(name),
-- configuration.getText("doclet.Exceptions"));
-- generateClassKindListing(config.classDocCatalog.errors(name),
-- configuration.getText("doclet.Errors"));
-- generateClassKindListing(config.classDocCatalog.annotationTypes(name),
-- configuration.getText("doclet.AnnotationTypes"));
-+ addClassKindListing(config.classDocCatalog.interfaces(name),
-+ getResource("doclet.Interfaces"), contentTree);
-+ addClassKindListing(config.classDocCatalog.ordinaryClasses(name),
-+ getResource("doclet.Classes"), contentTree);
-+ addClassKindListing(config.classDocCatalog.enums(name),
-+ getResource("doclet.Enums"), contentTree);
-+ addClassKindListing(config.classDocCatalog.exceptions(name),
-+ getResource("doclet.Exceptions"), contentTree);
-+ addClassKindListing(config.classDocCatalog.errors(name),
-+ getResource("doclet.Errors"), contentTree);
-+ addClassKindListing(config.classDocCatalog.annotationTypes(name),
-+ getResource("doclet.AnnotationTypes"), contentTree);
- }
- }
-
- /**
-- * Generate specific class kind listing. Also add label to the listing.
-+ * Add specific class kind listing. Also add label to the listing.
- *
-- * @param arr Array of specific class kinds, namely Class or Interface or
-- * Exception or Error.
-- * @param label Label for the listing
-+ * @param arr Array of specific class kinds, namely Class or Interface or Exception or Error
-+ * @param labelContent content tree of the label to be added
-+ * @param contentTree the content tree to which the class kind listing will be added
- */
-- protected void generateClassKindListing(ClassDoc[] arr, String label) {
-+ protected void addClassKindListing(ClassDoc[] arr, Content labelContent,
-+ Content contentTree) {
- if(arr.length > 0) {
- Arrays.sort(arr);
-- printPackageTableHeader();
-- fontSizeStyle("+1", "FrameHeadingFont");
- boolean printedHeader = false;
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addAttr(HtmlAttr.TITLE, labelContent.toString());
- for (int i = 0; i < arr.length; i++) {
- if (documentedClasses != null &&
-- !documentedClasses.contains(arr[i])) {
-+ !documentedClasses.contains(arr[i])) {
- continue;
- }
- if (!Util.isCoreClass(arr[i]) || !
-- configuration.isGeneratedDoc(arr[i])) {
-+ configuration.isGeneratedDoc(arr[i])) {
- continue;
- }
- if (!printedHeader) {
-- print(label);
-- fontEnd();
-- println("&nbsp;");
-- fontStyle("FrameItemFont");
-+ Content heading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
-+ true, labelContent);
-+ contentTree.addContent(heading);
- printedHeader = true;
- }
-- br();
-- printLink(new LinkInfoImpl(
-- LinkInfoImpl.PACKAGE_FRAME,
-- arr[i],
-- (arr[i].isInterface() ?
-- italicsText(arr[i].name()) :
-- arr[i].name()),"classFrame")
-- );
-+ Content link = new RawHtml (getLink(new LinkInfoImpl(
-+ LinkInfoImpl.PACKAGE_FRAME, arr[i],
-+ (arr[i].isInterface() ? italicsText(arr[i].name()) :
-+ arr[i].name()),"classFrame")));
-+ Content li = HtmlTree.LI(link);
-+ ul.addContent(li);
- }
-- fontEnd();
-- printPackageTableFooter();
-- println();
-+ contentTree.addContent(ul);
- }
- }
--
-- /**
-- * Print the package link at the top of the class kind listing. Clicking
-- * this link, package-summary page will appear in the right hand frame.
-- *
-- * @param heading Top Heading to be used for the class kind listing.
-- */
-- protected void printPackageHeader(String heading) {
-- fontSizeStyle("+1", "FrameTitleFont");
-- printTargetPackageLink(packageDoc, "classFrame", heading);
-- fontEnd();
-- }
--
-- /**
-- * The table for the class kind listing.
-- */
-- protected void printPackageTableHeader() {
-- table();
-- tr();
-- tdNowrap();
-- }
--
-- /**
-- * Closing Html tags for table of class kind listing.
-- */
-- protected void printPackageTableFooter() {
-- tdEnd();
-- trEnd();
-- tableEnd();
-- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexFrameWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexFrameWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexFrameWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexFrameWriter.java
-@@ -25,10 +25,11 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.io.*;
-+import com.sun.javadoc.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
--
--import com.sun.javadoc.*;
--import java.io.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Generate the package index for the left-hand frame in the generated output.
-@@ -58,7 +59,7 @@
- String filename = "overview-frame.html";
- try {
- packgen = new PackageIndexFrameWriter(configuration, filename);
-- packgen.generatePackageIndexFile("doclet.Window_Overview", false);
-+ packgen.buildPackageIndexFile("doclet.Window_Overview", false);
- packgen.close();
- } catch (IOException exc) {
- configuration.standardmessage.error(
-@@ -69,114 +70,86 @@
- }
-
- /**
-- * Print each package name on separate rows.
-- *
-- * @param pd PackageDoc
-+ * {@inheritDoc}
- */
-- protected void printIndexRow(PackageDoc pd) {
-- fontStyle("FrameItemFont");
-- if (pd.name().length() > 0) {
-- print(getHyperLink(pathString(pd, "package-frame.html"), "",
-- pd.name(), false, "", "", "packageFrame"));
-- } else {
-- print(getHyperLink("package-frame.html", "", "&lt;unnamed package>",
-- false, "", "", "packageFrame"));
-+ protected void addPackagesList(PackageDoc[] packages, String text,
-+ String tableSummary, Content body) {
-+ Content heading = HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING, true,
-+ packagesLabel);
-+ Content div = HtmlTree.DIV(HtmlStyle.indexContainer, heading);
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addAttr(HtmlAttr.TITLE, packagesLabel.toString());
-+ for(int i = 0; i < packages.length; i++) {
-+ if (packages[i] != null) {
-+ ul.addContent(getPackage(packages[i]));
-+ }
- }
-- fontEnd();
-- br();
-+ div.addContent(ul);
-+ body.addContent(div);
- }
-
- /**
-- * Print the "-packagesheader" string in strong format, at top of the page,
-- * if it is not the empty string. Otherwise print the "-header" string.
-- * Despite the name, there is actually no navigation bar for this page.
-+ * Gets each package name as a separate link.
-+ *
-+ * @param pd PackageDoc
-+ * @return content for the package link
- */
-- protected void printNavigationBarHeader() {
-- printTableHeader(true);
-- fontSizeStyle("+1", "FrameTitleFont");
-+ protected Content getPackage(PackageDoc pd) {
-+ Content packageLinkContent;
-+ Content packageLabel;
-+ if (pd.name().length() > 0) {
-+ packageLabel = getPackageLabel(pd.name());
-+ packageLinkContent = getHyperLink(pathString(pd,
-+ "package-frame.html"), "", packageLabel, "",
-+ "packageFrame");
-+ } else {
-+ packageLabel = new RawHtml("&lt;unnamed package&gt;");
-+ packageLinkContent = getHyperLink("package-frame.html",
-+ "", packageLabel, "", "packageFrame");
-+ }
-+ Content li = HtmlTree.LI(packageLinkContent);
-+ return li;
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ protected void addNavigationBarHeader(Content body) {
-+ Content headerContent;
- if (configuration.packagesheader.length() > 0) {
-- strong(replaceDocRootDir(configuration.packagesheader));
-+ headerContent = new RawHtml(replaceDocRootDir(configuration.packagesheader));
- } else {
-- strong(replaceDocRootDir(configuration.header));
-+ headerContent = new RawHtml(replaceDocRootDir(configuration.header));
- }
-- fontEnd();
-- printTableFooter(true);
-+ Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
-+ HtmlStyle.bar, headerContent);
-+ body.addContent(heading);
- }
-
- /**
- * Do nothing as there is no overview information in this page.
- */
-- protected void printOverviewHeader() {
-+ protected void addOverviewHeader(Content body) {
- }
-
- /**
-- * Print Html "table" tag for the package index format.
-+ * Adds "All Classes" link for the top of the left-hand frame page to the
-+ * documentation tree.
- *
-- * @param text Text string will not be used in this method.
-+ * @param body the Content object to which the all classes link should be added
- */
-- protected void printIndexHeader(String text, String tableSummary) {
-- printTableHeader(false);
-+ protected void addAllClassesLink(Content body) {
-+ Content linkContent = getHyperLink("allclasses-frame.html", "",
-+ allclassesLabel, "", "packageFrame");
-+ Content div = HtmlTree.DIV(HtmlStyle.indexHeader, linkContent);
-+ body.addContent(div);
- }
-
- /**
-- * Print Html closing "table" tag at the end of the package index.
-+ * {@inheritDoc}
- */
-- protected void printIndexFooter() {
-- printTableFooter(false);
-- }
--
-- /**
-- * Print "All Classes" link at the top of the left-hand frame page.
-- */
-- protected void printAllClassesPackagesLink() {
-- fontStyle("FrameItemFont");
-- print(getHyperLink("allclasses-frame.html", "",
-- configuration.getText("doclet.All_Classes"), false, "", "",
-- "packageFrame"));
-- fontEnd();
-- p();
-- fontSizeStyle("+1", "FrameHeadingFont");
-- printText("doclet.Packages");
-- fontEnd();
-- br();
-- }
--
-- /**
-- * Just print some space, since there is no navigation bar for this page.
-- */
-- protected void printNavigationBarFooter() {
-- p();
-- space();
-- }
--
-- /**
-- * Print Html closing tags for the table for package index.
-- *
-- * @param isHeading true if this is a table for a heading.
-- */
-- private void printTableFooter(boolean isHeading) {
-- if (isHeading) {
-- thEnd();
-- } else {
-- tdEnd();
-- }
-- trEnd();
-- tableEnd();
-- }
--
-- /**
-- * Print Html tags for the table for package index.
-- *
-- * @param isHeading true if this is a table for a heading.
-- */
-- private void printTableHeader(boolean isHeading) {
-- table();
-- tr();
-- if (isHeading) {
-- thAlignNowrap("left");
-- } else {
-- tdNowrap();
-- }
--
-+ protected void addNavigationBarFooter(Content body) {
-+ Content p = HtmlTree.P(getSpace());
-+ body.addContent(p);
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java
-@@ -25,10 +25,12 @@
-
- package com.sun.tools.doclets.formats.html;
-
--import com.sun.tools.doclets.internal.toolkit.util.*;
--import com.sun.javadoc.*;
- import java.io.*;
- import java.util.*;
-+import com.sun.javadoc.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Generate the package index page "overview-summary.html" for the right-hand
-@@ -83,7 +85,7 @@
- String filename = "overview-summary.html";
- try {
- packgen = new PackageIndexWriter(configuration, filename);
-- packgen.generatePackageIndexFile("doclet.Window_Overview_Summary", true);
-+ packgen.buildPackageIndexFile("doclet.Window_Overview_Summary", true);
- packgen.close();
- } catch (IOException exc) {
- configuration.standardmessage.error(
-@@ -94,125 +96,139 @@
- }
-
- /**
-- * Print each package in separate rows in the index table. Generate link
-- * to each package.
-+ * Depending upon the grouping information and their titles, add
-+ * separate table indices for each package group.
- *
-- * @param pkg Package to which link is to be generated.
-+ * @param body the documentation tree to which the index will be added
- */
-- protected void printIndexRow(PackageDoc pkg) {
-- if(pkg != null && pkg.name().length() > 0) {
-- trBgcolorStyle("white", "TableRowColor");
-- summaryRow(20);
-- strong();
-- printPackageLink(pkg, Util.getPackageName(pkg), false);
-- strongEnd();
-- summaryRowEnd();
-- summaryRow(0);
-- printSummaryComment(pkg);
-- summaryRowEnd();
-- trEnd();
-- }
-- }
--
-- /**
-- * Depending upon the grouping information and their titles, generate
-- * separate table indices for each package group.
-- */
-- protected void generateIndex() {
-+ protected void addIndex(Content body) {
- for (int i = 0; i < groupList.size(); i++) {
- String groupname = (String)groupList.get(i);
- List list = (List)groupPackageMap.get(groupname);
- if (list != null && list.size() > 0) {
-- printIndexContents((PackageDoc[])list.
-- toArray(new PackageDoc[list.size()]),
-- groupname,
-- configuration.getText("doclet.Member_Table_Summary",
-- groupname,
-- configuration.getText("doclet.packages")));
-+ addIndexContents(list.toArray(new PackageDoc[list.size()]),
-+ groupname, configuration.getText("doclet.Member_Table_Summary",
-+ groupname, configuration.getText("doclet.packages")), body);
- }
- }
- }
-
- /**
-- * Print the overview summary comment for this documentation. Print one line
-- * summary at the top of the page and generate a link to the description,
-- * which is generated at the end of this page.
-+ * {@inheritDoc}
- */
-- protected void printOverviewHeader() {
-- if (root.inlineTags().length > 0) {
-- printSummaryComment(root);
-- p();
-- strong(configuration.getText("doclet.See"));
-- br();
-- printNbsps();
-- printHyperLink("", "overview_description",
-- configuration.getText("doclet.Description"), true);
-- p();
-+ protected void addPackagesList(PackageDoc[] packages, String text,
-+ String tableSummary, Content body) {
-+ Content table = HtmlTree.TABLE(HtmlStyle.overviewSummary, 0, 3, 0, tableSummary,
-+ getTableCaption(text));
-+ table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
-+ Content tbody = new HtmlTree(HtmlTag.TBODY);
-+ addPackagesList(packages, tbody);
-+ table.addContent(tbody);
-+ Content div = HtmlTree.DIV(HtmlStyle.contentContainer, table);
-+ body.addContent(div);
-+ }
-+
-+ /**
-+ * Adds list of packages in the index table. Generate link to each package.
-+ *
-+ * @param packages Packages to which link is to be generated
-+ * @param tbody the documentation tree to which the list will be added
-+ */
-+ protected void addPackagesList(PackageDoc[] packages, Content tbody) {
-+ for (int i = 0; i < packages.length; i++) {
-+ if (packages[i] != null && packages[i].name().length() > 0) {
-+ Content packageLinkContent = getPackageLink(packages[i],
-+ getPackageName(packages[i]));
-+ Content tdPackage = HtmlTree.TD(HtmlStyle.colFirst, packageLinkContent);
-+ HtmlTree tdSummary = new HtmlTree(HtmlTag.TD);
-+ tdSummary.addStyle(HtmlStyle.colLast);
-+ addSummaryComment(packages[i], tdSummary);
-+ HtmlTree tr = HtmlTree.TR(tdPackage);
-+ tr.addContent(tdSummary);
-+ if (i%2 == 0)
-+ tr.addStyle(HtmlStyle.altColor);
-+ else
-+ tr.addStyle(HtmlStyle.rowColor);
-+ tbody.addContent(tr);
-+ }
- }
- }
-
- /**
-- * Print Html tags for the table for this package index.
-+ * Adds the overview summary comment for this documentation. Add one line
-+ * summary at the top of the page and generate a link to the description,
-+ * which is added at the end of this page.
-+ *
-+ * @param body the documentation tree to which the overview header will be added
- */
-- protected void printIndexHeader(String text, String tableSummary) {
-- tableIndexSummary(tableSummary);
-- tableCaptionStart();
-- print(text);
-- tableCaptionEnd();
-- summaryTableHeader(packageTableHeader, "col");
-- }
--
-- /**
-- * Print Html closing tags for the table for this package index.
-- */
-- protected void printIndexFooter() {
-- tableEnd();
-- p();
-- space();
-- }
--
-- /**
-- * Print the overview comment as provided in the file specified by the
-- * "-overview" option on the command line.
-- */
-- protected void printOverviewComment() {
-+ protected void addOverviewHeader(Content body) {
- if (root.inlineTags().length > 0) {
-- anchor("overview_description");
-- p();
-- printInlineComment(root);
-- p();
-+ HtmlTree p = new HtmlTree(HtmlTag.P);
-+ p.addStyle(HtmlStyle.subTitle);
-+ addSummaryComment(root, p);
-+ Content div = HtmlTree.DIV(HtmlStyle.header, p);
-+ Content see = seeLabel;
-+ see.addContent(" ");
-+ Content descPara = HtmlTree.P(see);
-+ Content descLink = getHyperLink("", "overview_description",
-+ descriptionLabel, "", "");
-+ descPara.addContent(descLink);
-+ div.addContent(descPara);
-+ body.addContent(div);
- }
- }
-
- /**
-- * Call {@link #printOverviewComment()} and then genrate the tag information
-- * as provided in the file specified by the "-overview" option on the
-- * command line.
-+ * Adds the overview comment as provided in the file specified by the
-+ * "-overview" option on the command line.
-+ *
-+ * @param htmltree the documentation tree to which the overview comment will
-+ * be added
- */
-- protected void printOverview() throws IOException {
-- printOverviewComment();
-- printTags(root);
-+ protected void addOverviewComment(Content htmltree) {
-+ if (root.inlineTags().length > 0) {
-+ htmltree.addContent(getMarkerAnchor("overview_description"));
-+ HtmlTree p = new HtmlTree(HtmlTag.P);
-+ p.addStyle(HtmlStyle.subTitle);
-+ addInlineComment(root, p);
-+ htmltree.addContent(p);
-+ }
- }
-
- /**
-- * Print the top text (from the -top option), the upper
-- * navigation bar, and then the title (from the"-title"
-- * option), at the top of page.
-+ * Adds the tag information as provided in the file specified by the
-+ * "-overview" option on the command line.
-+ *
-+ * @param body the documentation tree to which the overview will be added
- */
-- protected void printNavigationBarHeader() {
-- printTop();
-- navLinks(true);
-- hr();
-- printConfigurationTitle();
-+ protected void addOverview(Content body) throws IOException {
-+ HtmlTree div = new HtmlTree(HtmlTag.DIV);
-+ div.addStyle(HtmlStyle.footer);
-+ addOverviewComment(div);
-+ addTagsInfo(root, div);
-+ body.addContent(div);
- }
-
- /**
-- * Print the lower navigation bar and the bottom text
-+ * Adds the top text (from the -top option), the upper
-+ * navigation bar, and then the title (from the"-title"
-+ * option), at the top of page.
-+ *
-+ * @body the documentation tree to which the navigation bar header will be added
-+ */
-+ protected void addNavigationBarHeader(Content body) {
-+ addTop(body);
-+ addNavLinks(true, body);
-+ addConfigurationTitle(body);
-+ }
-+
-+ /**
-+ * Adds the lower navigation bar and the bottom text
- * (from the -bottom option) at the bottom of page.
-- */
-- protected void printNavigationBarFooter() {
-- hr();
-- navLinks(false);
-- printBottom();
-+ *
-+ * @param the documentation tree to which the navigation bar footer will be a */
-+ protected void addNavigationBarFooter(Content body) {
-+ addNavLinks(false, body);
-+ addBottom(body);
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/PackageTreeWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/PackageTreeWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageTreeWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageTreeWriter.java
-@@ -29,12 +29,15 @@
-
- import com.sun.javadoc.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-
- /**
- * Class to generate Tree page for a package. The name of the file generated is
- * "package-tree.html" and it is generated in the respective package directory.
- *
- * @author Atul M Dambalkar
-+ * @author Bhavesh Patel (Modified)
- */
- public class PackageTreeWriter extends AbstractTreeWriter {
-
-@@ -107,94 +110,96 @@
- * Generate a separate tree file for each package.
- */
- protected void generatePackageTreeFile() throws IOException {
-- printHtmlHeader(packagedoc.name() + " "
-- + configuration.getText("doclet.Window_Class_Hierarchy"), null, true);
--
-- printPackageTreeHeader();
--
-+ Content body = getPackageTreeHeader();
-+ Content headContent = getResource("doclet.Hierarchy_For_Package",
-+ Util.getPackageName(packagedoc));
-+ Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, false,
-+ HtmlStyle.title, headContent);
-+ Content div = HtmlTree.DIV(HtmlStyle.header, heading);
- if (configuration.packages.length > 1) {
-- printLinkToMainTree();
-+ addLinkToMainTree(div);
- }
--
-- generateTree(classtree.baseclasses(), "doclet.Class_Hierarchy");
-- generateTree(classtree.baseinterfaces(), "doclet.Interface_Hierarchy");
-- generateTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy");
-- generateTree(classtree.baseEnums(), "doclet.Enum_Hierarchy");
--
-- printPackageTreeFooter();
-- printBottom();
-- printBodyHtmlEnd();
-+ body.addContent(div);
-+ HtmlTree divTree = new HtmlTree(HtmlTag.DIV);
-+ divTree.addStyle(HtmlStyle.contentContainer);
-+ addTree(classtree.baseclasses(), "doclet.Class_Hierarchy", divTree);
-+ addTree(classtree.baseinterfaces(), "doclet.Interface_Hierarchy", divTree);
-+ addTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy", divTree);
-+ addTree(classtree.baseEnums(), "doclet.Enum_Hierarchy", divTree);
-+ body.addContent(divTree);
-+ addNavLinks(false, body);
-+ addBottom(body);
-+ printHtmlDocument(null, true, body);
- }
-
- /**
-- * Print the navigation bar header for the package tree file.
-+ * Get the package tree header.
-+ *
-+ * @return a content tree for the header
- */
-- protected void printPackageTreeHeader() {
-- printTop();
-- navLinks(true);
-- hr();
-- center();
-- h2(configuration.getText("doclet.Hierarchy_For_Package",
-- Util.getPackageName(packagedoc)));
-- centerEnd();
-+ protected Content getPackageTreeHeader() {
-+ String title = packagedoc.name() + " " +
-+ configuration.getText("doclet.Window_Class_Hierarchy");
-+ Content bodyTree = getBody(true, getWindowTitle(title));
-+ addTop(bodyTree);
-+ addNavLinks(true, bodyTree);
-+ return bodyTree;
- }
-
- /**
-- * Generate a link to the tree for all the packages.
-+ * Add a link to the tree for all the packages.
-+ *
-+ * @param div the content tree to which the link will be added
- */
-- protected void printLinkToMainTree() {
-- dl();
-- dt();
-- strongText("doclet.Package_Hierarchies");
-- dtEnd();
-- dd();
-- navLinkMainTree(configuration.getText("doclet.All_Packages"));
-- ddEnd();
-- dlEnd();
-- hr();
-+ protected void addLinkToMainTree(Content div) {
-+ Content span = HtmlTree.SPAN(HtmlStyle.strong,
-+ getResource("doclet.Package_Hierarchies"));
-+ div.addContent(span);
-+ HtmlTree ul = new HtmlTree (HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.horizontal);
-+ ul.addContent(getNavLinkMainTree(configuration.getText("doclet.All_Packages")));
-+ div.addContent(ul);
- }
-
- /**
-- * Print the navigation bar footer for the package tree file.
-+ * Get link for the previous package tree file.
-+ *
-+ * @return a content tree for the link
- */
-- protected void printPackageTreeFooter() {
-- hr();
-- navLinks(false);
-- }
--
-- /**
-- * Link for the previous package tree file.
-- */
-- protected void navLinkPrevious() {
-+ protected Content getNavLinkPrevious() {
- if (prev == null) {
-- navLinkPrevious(null);
-+ return getNavLinkPrevious(null);
- } else {
- String path = DirectoryManager.getRelativePath(packagedoc.name(),
-- prev.name());
-- navLinkPrevious(path + "package-tree.html");
-+ prev.name());
-+ return getNavLinkPrevious(path + "package-tree.html");
- }
- }
-
- /**
-- * Link for the next package tree file.
-+ * Get link for the next package tree file.
-+ *
-+ * @return a content tree for the link
- */
-- protected void navLinkNext() {
-+ protected Content getNavLinkNext() {
- if (next == null) {
-- navLinkNext(null);
-+ return getNavLinkNext(null);
- } else {
- String path = DirectoryManager.getRelativePath(packagedoc.name(),
-- next.name());
-- navLinkNext(path + "package-tree.html");
-+ next.name());
-+ return getNavLinkNext(path + "package-tree.html");
- }
- }
-
- /**
-- * Link to the package summary page for the package of this tree.
-+ * Get link to the package summary page for the package of this tree.
-+ *
-+ * @return a content tree for the package link
- */
-- protected void navLinkPackage() {
-- navCellStart();
-- printHyperLink("package-summary.html", "", configuration.getText("doclet.Package"),
-- true, "NavBarFont1");
-- navCellEnd();
-+ protected Content getNavLinkPackage() {
-+ Content linkContent = getHyperLink("package-summary.html", "",
-+ packageLabel);
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/PackageUseWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/PackageUseWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageUseWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageUseWriter.java
-@@ -25,10 +25,12 @@
-
- package com.sun.tools.doclets.formats.html;
-
--import com.sun.tools.doclets.internal.toolkit.util.*;
--import com.sun.javadoc.*;
- import java.io.*;
- import java.util.*;
-+import com.sun.javadoc.*;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-
- /**
- * Generate package usage information.
-@@ -106,49 +108,74 @@
-
-
- /**
-- * Print the class use list.
-+ * Generate the package use list.
- */
- protected void generatePackageUseFile() throws IOException {
-- printPackageUseHeader();
--
-+ Content body = getPackageUseHeader();
-+ HtmlTree div = new HtmlTree(HtmlTag.DIV);
-+ div.addStyle(HtmlStyle.contentContainer);
- if (usingPackageToUsedClasses.isEmpty()) {
-- printText("doclet.ClassUse_No.usage.of.0", pkgdoc.name());
-- p();
-+ div.addContent(getResource(
-+ "doclet.ClassUse_No.usage.of.0", pkgdoc.name()));
- } else {
-- generatePackageUse();
-+ addPackageUse(div);
- }
--
-- printPackageUseFooter();
-+ body.addContent(div);
-+ addNavLinks(false, body);
-+ addBottom(body);
-+ printHtmlDocument(null, true, body);
- }
-
- /**
-- * Print the class use list.
-+ * Add the package use information.
-+ *
-+ * @param contentTree the content tree to which the package use information will be added
- */
-- protected void generatePackageUse() throws IOException {
-+ protected void addPackageUse(Content contentTree) throws IOException {
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.blockList);
- if (configuration.packages.length > 1) {
-- generatePackageList();
-+ addPackageList(ul);
- }
-- generateClassList();
-+ addClassList(ul);
-+ contentTree.addContent(ul);
- }
-
-- protected void generatePackageList() throws IOException {
-- tableIndexSummary(useTableSummary);
-- tableCaptionStart();
-- printText("doclet.ClassUse_Packages.that.use.0",
-- getPackageLink(pkgdoc, Util.getPackageName(pkgdoc), false));
-- tableCaptionEnd();
-- summaryTableHeader(packageTableHeader, "col");
-+ /**
-+ * Add the list of packages that use the given package.
-+ *
-+ * @param contentTree the content tree to which the package list will be added
-+ */
-+ protected void addPackageList(Content contentTree) throws IOException {
-+ Content table = HtmlTree.TABLE(0, 3, 0, useTableSummary,
-+ getTableCaption(configuration().getText(
-+ "doclet.ClassUse_Packages.that.use.0",
-+ getPackageLinkString(pkgdoc, Util.getPackageName(pkgdoc), false))));
-+ table.addContent(getSummaryTableHeader(packageTableHeader, "col"));
-+ Content tbody = new HtmlTree(HtmlTag.TBODY);
- Iterator it = usingPackageToUsedClasses.keySet().iterator();
-- while (it.hasNext()) {
-+ for (int i = 0; it.hasNext(); i++) {
- PackageDoc pkg = configuration.root.packageNamed((String)it.next());
-- generatePackageUse(pkg);
-+ HtmlTree tr = new HtmlTree(HtmlTag.TR);
-+ if (i % 2 == 0) {
-+ tr.addStyle(HtmlStyle.altColor);
-+ } else {
-+ tr.addStyle(HtmlStyle.rowColor);
-+ }
-+ addPackageUse(pkg, tr);
-+ tbody.addContent(tr);
- }
-- tableEnd();
-- space();
-- p();
-+ table.addContent(tbody);
-+ Content li = HtmlTree.LI(HtmlStyle.blockList, table);
-+ contentTree.addContent(li);
- }
-
-- protected void generateClassList() throws IOException {
-+ /**
-+ * Add the list of classes that use the given package.
-+ *
-+ * @param contentTree the content tree to which the class list will be added
-+ */
-+ protected void addClassList(Content contentTree) throws IOException {
- String[] classTableHeader = new String[] {
- configuration.getText("doclet.0_and_1",
- configuration.getText("doclet.Class"),
-@@ -158,118 +185,127 @@
- while (itp.hasNext()) {
- String packageName = (String)itp.next();
- PackageDoc usingPackage = configuration.root.packageNamed(packageName);
-+ HtmlTree li = new HtmlTree(HtmlTag.LI);
-+ li.addStyle(HtmlStyle.blockList);
- if (usingPackage != null) {
-- anchor(usingPackage.name());
-+ li.addContent(getMarkerAnchor(usingPackage.name()));
- }
-- tableIndexSummary(configuration.getText("doclet.Use_Table_Summary",
-- configuration.getText("doclet.classes")));
-- tableCaptionStart();
-- printText("doclet.ClassUse_Classes.in.0.used.by.1",
-- getPackageLink(pkgdoc, Util.getPackageName(pkgdoc), false),
-- getPackageLink(usingPackage,Util.getPackageName(usingPackage), false));
-- tableCaptionEnd();
-- summaryTableHeader(classTableHeader, "col");
-+ String tableSummary = configuration.getText("doclet.Use_Table_Summary",
-+ configuration.getText("doclet.classes"));
-+ Content table = HtmlTree.TABLE(0, 3, 0, tableSummary,
-+ getTableCaption(configuration().getText(
-+ "doclet.ClassUse_Classes.in.0.used.by.1",
-+ getPackageLinkString(pkgdoc, Util.getPackageName(pkgdoc), false),
-+ getPackageLinkString(usingPackage,Util.getPackageName(usingPackage), false))));
-+ table.addContent(getSummaryTableHeader(classTableHeader, "col"));
-+ Content tbody = new HtmlTree(HtmlTag.TBODY);
- Iterator itc =
- ((Collection)usingPackageToUsedClasses.get(packageName))
- .iterator();
-- while (itc.hasNext()) {
-- printClassRow((ClassDoc)itc.next(), packageName);
-+ for (int i = 0; itc.hasNext(); i++) {
-+ HtmlTree tr = new HtmlTree(HtmlTag.TR);
-+ if (i % 2 == 0) {
-+ tr.addStyle(HtmlStyle.altColor);
-+ } else {
-+ tr.addStyle(HtmlStyle.rowColor);
-+ }
-+ addClassRow(itc.next(), packageName, tr);
-+ tbody.addContent(tr);
- }
-- tableEnd();
-- space();
-- p();
-+ table.addContent(tbody);
-+ li.addContent(table);
-+ contentTree.addContent(li);
- }
- }
-
-- protected void printClassRow(ClassDoc usedClass, String packageName) {
-+ /**
-+ * Add a row for the class that uses the given package.
-+ *
-+ * @param usedClass the class that uses the given package
-+ * @param packageName the name of the package to which the class belongs
-+ * @param contentTree the content tree to which the row will be added
-+ */
-+ protected void addClassRow(ClassDoc usedClass, String packageName,
-+ Content contentTree) {
- String path = pathString(usedClass,
-- "class-use/" + usedClass.name() + ".html");
--
-- trBgcolorStyle("white", "TableRowColor");
-- summaryRow(0);
-- strong();
-- printHyperLink(path, packageName, usedClass.name(), true);
-- strongEnd();
-- println(); br();
-- printNbsps();
-- printIndexComment(usedClass);
-- summaryRowEnd();
-- trEnd();
-+ "class-use/" + usedClass.name() + ".html");
-+ Content td = HtmlTree.TD(HtmlStyle.colOne,
-+ getHyperLink(path, packageName, new StringContent(usedClass.name())));
-+ addIndexComment(usedClass, td);
-+ contentTree.addContent(td);
- }
-
- /**
-- * Print the package use list.
-+ * Add the package use information.
-+ *
-+ * @param pkg the package that used the given package
-+ * @param contentTree the content tree to which the information will be added
- */
-- protected void generatePackageUse(PackageDoc pkg) throws IOException {
-- trBgcolorStyle("white", "TableRowColor");
-- summaryRow(0);
-- //Just want an anchor here.
-- printHyperLink("", pkg.name(), Util.getPackageName(pkg), true);
-- summaryRowEnd();
-- summaryRow(0);
-- if (pkg != null) {
-- printSummaryComment(pkg);
-- }
-- space();
-- summaryRowEnd();
-- trEnd();
-+ protected void addPackageUse(PackageDoc pkg, Content contentTree) throws IOException {
-+ Content tdFirst = HtmlTree.TD(HtmlStyle.colFirst,
-+ getHyperLink("", pkg.name(), new StringContent(Util.getPackageName(pkg))));
-+ contentTree.addContent(tdFirst);
-+ HtmlTree tdLast = new HtmlTree(HtmlTag.TD);
-+ tdLast.addStyle(HtmlStyle.colLast);
-+ if (pkg != null)
-+ addSummaryComment(pkg, tdLast);
-+ else
-+ tdLast.addContent(getSpace());
-+ contentTree.addContent(tdLast);
- }
-
- /**
-- * Print the header for the class use Listing.
-+ * Get the header for the package use listing.
-+ *
-+ * @return a content tree representing the package use header
- */
-- protected void printPackageUseHeader() {
-- String packageLabel = configuration.getText("doclet.Package");
-+ protected Content getPackageUseHeader() {
-+ String packageText = configuration.getText("doclet.Package");
- String name = pkgdoc.name();
-- printHtmlHeader(configuration.getText("doclet.Window_ClassUse_Header",
-- packageLabel, name), null, true);
-- printTop();
-- navLinks(true);
-- hr();
-- center();
-- h2();
-- strongText("doclet.ClassUse_Title", packageLabel, name);
-- h2End();
-- centerEnd();
-+ String title = configuration.getText("doclet.Window_ClassUse_Header",
-+ packageText, name);
-+ Content bodyTree = getBody(true, getWindowTitle(title));
-+ addTop(bodyTree);
-+ addNavLinks(true, bodyTree);
-+ Content headContent = getResource("doclet.ClassUse_Title", packageText, name);
-+ Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
-+ HtmlStyle.title, headContent);
-+ Content div = HtmlTree.DIV(HtmlStyle.header, heading);
-+ bodyTree.addContent(div);
-+ return bodyTree;
- }
-
- /**
-- * Print the footer for the class use Listing.
-+ * Get this package link.
-+ *
-+ * @return a content tree for the package link
- */
-- protected void printPackageUseFooter() {
-- hr();
-- navLinks(false);
-- printBottom();
-- printBodyHtmlEnd();
-- }
--
--
-- /**
-- * Print this package link
-- */
-- protected void navLinkPackage() {
-- navCellStart();
-- printHyperLink("package-summary.html", "", configuration.getText("doclet.Package"),
-- true, "NavBarFont1");
-- navCellEnd();
-+ protected Content getNavLinkPackage() {
-+ Content linkContent = getHyperLink("package-summary.html", "",
-+ packageLabel);
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
- }
-
- /**
-- * Print class use link
-+ * Get the use link.
-+ *
-+ * @return a content tree for the use link
- */
-- protected void navLinkClassUse() {
-- navCellRevStart();
-- fontStyle("NavBarFont1Rev");
-- strongText("doclet.navClassUse");
-- fontEnd();
-- navCellEnd();
-+ protected Content getNavLinkClassUse() {
-+ Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, useLabel);
-+ return li;
- }
-
-- protected void navLinkTree() {
-- navCellStart();
-- printHyperLink("package-tree.html", "", configuration.getText("doclet.Tree"),
-- true, "NavBarFont1");
-- navCellEnd();
-+ /**
-+ * Get the tree link.
-+ *
-+ * @return a content tree for the tree link
-+ */
-+ protected Content getNavLinkTree() {
-+ Content linkContent = getHyperLink("package-tree.html", "",
-+ treeLabel);
-+ Content li = HtmlTree.LI(linkContent);
-+ return li;
- }
--
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/PackageWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/PackageWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageWriterImpl.java
-@@ -25,12 +25,12 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.io.*;
-+import java.util.*;
-+import com.sun.javadoc.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
--
--import com.sun.javadoc.*;
--import java.io.*;
--import java.util.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Class to generate file for each package contents in the right-hand
-@@ -98,189 +98,206 @@
- /**
- * {@inheritDoc}
- */
-- public void writeSummaryHeader() {}
--
-- /**
-- * {@inheritDoc}
-- */
-- public void writeSummaryFooter() {}
--
-- /**
-- * {@inheritDoc}
-- */
-- public void writeClassesSummary(ClassDoc[] classes, String label, String tableSummary, String[] tableHeader) {
-- if(classes.length > 0) {
-- Arrays.sort(classes);
-- tableIndexSummary(tableSummary);
-- boolean printedHeading = false;
-- for (int i = 0; i < classes.length; i++) {
-- if (!printedHeading) {
-- printTableCaption(label);
-- printFirstRow(tableHeader);
-- printedHeading = true;
-- }
-- if (!Util.isCoreClass(classes[i]) ||
-- !configuration.isGeneratedDoc(classes[i])) {
-- continue;
-- }
-- trBgcolorStyle("white", "TableRowColor");
-- summaryRow(15);
-- strong();
-- printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_PACKAGE,
-- classes[i], false));
-- strongEnd();
-- summaryRowEnd();
-- summaryRow(0);
-- if (Util.isDeprecated(classes[i])) {
-- strongText("doclet.Deprecated");
-- if (classes[i].tags("deprecated").length > 0) {
-- space();
-- printSummaryDeprecatedComment(classes[i],
-- classes[i].tags("deprecated")[0]);
-- }
-- } else {
-- printSummaryComment(classes[i]);
-- }
-- summaryRowEnd();
-- trEnd();
-- }
-- tableEnd();
-- println("&nbsp;");
-- p();
-+ public Content getPackageHeader(String heading) {
-+ String pkgName = packageDoc.name();
-+ Content bodyTree = getBody(true, getWindowTitle(pkgName));
-+ addTop(bodyTree);
-+ addNavLinks(true, bodyTree);
-+ HtmlTree div = new HtmlTree(HtmlTag.DIV);
-+ div.addStyle(HtmlStyle.header);
-+ Content annotationContent = new HtmlTree(HtmlTag.P);
-+ addAnnotationInfo(packageDoc, annotationContent);
-+ div.addContent(annotationContent);
-+ Content tHeading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
-+ HtmlStyle.title, packageLabel);
-+ tHeading.addContent(getSpace());
-+ Content packageHead = new RawHtml(heading);
-+ tHeading.addContent(packageHead);
-+ div.addContent(tHeading);
-+ if (packageDoc.inlineTags().length > 0 && ! configuration.nocomment) {
-+ HtmlTree p = new HtmlTree(HtmlTag.P);
-+ p.addStyle(HtmlStyle.subTitle);
-+ addSummaryComment(packageDoc, p);
-+ div.addContent(p);
-+ Content space = getSpace();
-+ Content descLink = getHyperLink("", "package_description",
-+ descriptionLabel, "", "");
-+ Content descPara = new HtmlTree(HtmlTag.P, seeLabel, space, descLink);
-+ div.addContent(descPara);
- }
-- }
--
-- /**
-- * Print the table caption for the class-listing.
-- *
-- * @param label label for the Class kind listing.
-- */
-- protected void printTableCaption(String label) {
-- tableCaptionStart();
-- print(label);
-- tableCaptionEnd();
-- }
--
-- /**
-- * Print the table heading for the class-listing.
-- *
-- * @param tableHeader table header string for the Class listing.
-- */
-- protected void printFirstRow(String[] tableHeader) {
-- summaryTableHeader(tableHeader, "col");
-+ bodyTree.addContent(div);
-+ return bodyTree;
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writePackageDescription() {
-- if (packageDoc.inlineTags().length > 0) {
-- anchor("package_description");
-- h2(configuration.getText("doclet.Package_Description", packageDoc.name()));
-- p();
-- printInlineComment(packageDoc);
-- p();
-+ public Content getContentHeader() {
-+ HtmlTree div = new HtmlTree(HtmlTag.DIV);
-+ div.addStyle(HtmlStyle.contentContainer);
-+ return div;
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public Content getSummaryHeader() {
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.blockList);
-+ return ul;
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void addClassesSummary(ClassDoc[] classes, String label,
-+ String tableSummary, String[] tableHeader, Content summaryContentTree) {
-+ if(classes.length > 0) {
-+ Arrays.sort(classes);
-+ Content caption = getTableCaption(label);
-+ Content table = HtmlTree.TABLE(HtmlStyle.packageSummary, 0, 3, 0,
-+ tableSummary, caption);
-+ table.addContent(getSummaryTableHeader(tableHeader, "col"));
-+ Content tbody = new HtmlTree(HtmlTag.TBODY);
-+ for (int i = 0; i < classes.length; i++) {
-+ if (!Util.isCoreClass(classes[i]) ||
-+ !configuration.isGeneratedDoc(classes[i])) {
-+ continue;
-+ }
-+ Content classContent = new RawHtml(getLink(new LinkInfoImpl(
-+ LinkInfoImpl.CONTEXT_PACKAGE, classes[i], false)));
-+ Content tdClass = HtmlTree.TD(HtmlStyle.colFirst, classContent);
-+ HtmlTree tr = HtmlTree.TR(tdClass);
-+ if (i%2 == 0)
-+ tr.addStyle(HtmlStyle.altColor);
-+ else
-+ tr.addStyle(HtmlStyle.rowColor);
-+ HtmlTree tdClassDescription = new HtmlTree(HtmlTag.TD);
-+ tdClassDescription.addStyle(HtmlStyle.colLast);
-+ if (Util.isDeprecated(classes[i])) {
-+ tdClassDescription.addContent(deprecatedLabel);
-+ if (classes[i].tags("deprecated").length > 0) {
-+ addSummaryDeprecatedComment(classes[i],
-+ classes[i].tags("deprecated")[0], tdClassDescription);
-+ }
-+ }
-+ else
-+ addSummaryComment(classes[i], tdClassDescription);
-+ tr.addContent(tdClassDescription);
-+ tbody.addContent(tr);
-+ }
-+ table.addContent(tbody);
-+ Content li = HtmlTree.LI(HtmlStyle.blockList, table);
-+ summaryContentTree.addContent(li);
- }
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writePackageTags() {
-- printTags(packageDoc);
-- }
--
-- /**
-- * {@inheritDoc}
-- */
-- public void writePackageHeader(String heading) {
-- String pkgName = packageDoc.name();
-- printHtmlHeader(pkgName,
-- configuration.metakeywords.getMetaKeywords(packageDoc), true);
-- printTop();
-- navLinks(true);
-- hr();
-- writeAnnotationInfo(packageDoc);
-- h2(configuration.getText("doclet.Package") + " " + heading);
-- if (packageDoc.inlineTags().length > 0 && ! configuration.nocomment) {
-- printSummaryComment(packageDoc);
-- p();
-- strong(configuration.getText("doclet.See"));
-- br();
-- printNbsps();
-- printHyperLink("", "package_description",
-- configuration.getText("doclet.Description"), true);
-- p();
-+ public void addPackageDescription(Content packageContentTree) {
-+ if (packageDoc.inlineTags().length > 0) {
-+ packageContentTree.addContent(getMarkerAnchor("package_description"));
-+ Content h2Content = new StringContent(
-+ configuration.getText("doclet.Package_Description",
-+ packageDoc.name()));
-+ packageContentTree.addContent(HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING,
-+ true, h2Content));
-+ addInlineComment(packageDoc, packageContentTree);
- }
- }
-
- /**
- * {@inheritDoc}
- */
-- public void writePackageFooter() {
-- hr();
-- navLinks(false);
-- printBottom();
-- printBodyHtmlEnd();
-+ public void addPackageTags(Content packageContentTree) {
-+ addTagsInfo(packageDoc, packageContentTree);
- }
-
- /**
-- * Print "Use" link for this pacakge in the navigation bar.
-+ * {@inheritDoc}
- */
-- protected void navLinkClassUse() {
-- navCellStart();
-- printHyperLink("package-use.html", "", configuration.getText("doclet.navClassUse"),
-- true, "NavBarFont1");
-- navCellEnd();
-+ public void addPackageFooter(Content contentTree) {
-+ addNavLinks(false, contentTree);
-+ addBottom(contentTree);
- }
-
- /**
-- * Print "PREV PACKAGE" link in the navigation bar.
-+ * {@inheritDoc}
- */
-- protected void navLinkPrevious() {
-+ public void printDocument(Content contentTree) {
-+ printHtmlDocument(configuration.metakeywords.getMetaKeywords(packageDoc),
-+ true, contentTree);
-+ }
-+
-+ /**
-+ * Get "Use" link for this pacakge in the navigation bar.
-+ *
-+ * @return a content tree for the class use link
-+ */
-+ protected Content getNavLinkClassUse() {
-+ Content useLink = getHyperLink("package-use.html", "",
-+ useLabel, "", "");
-+ Content li = HtmlTree.LI(useLink);
-+ return li;
-+ }
-+
-+ /**
-+ * Get "PREV PACKAGE" link in the navigation bar.
-+ *
-+ * @return a content tree for the previous link
-+ */
-+ public Content getNavLinkPrevious() {
-+ Content li;
- if (prev == null) {
-- printText("doclet.Prev_Package");
-+ li = HtmlTree.LI(prevpackageLabel);
- } else {
- String path = DirectoryManager.getRelativePath(packageDoc.name(),
- prev.name());
-- printHyperLink(path + "package-summary.html", "",
-- configuration.getText("doclet.Prev_Package"), true);
-+ li = HtmlTree.LI(getHyperLink(path + "package-summary.html", "",
-+ prevpackageLabel, "", ""));
- }
-+ return li;
- }
-
- /**
-- * Print "NEXT PACKAGE" link in the navigation bar.
-+ * Get "NEXT PACKAGE" link in the navigation bar.
-+ *
-+ * @return a content tree for the next link
- */
-- protected void navLinkNext() {
-+ public Content getNavLinkNext() {
-+ Content li;
- if (next == null) {
-- printText("doclet.Next_Package");
-+ li = HtmlTree.LI(nextpackageLabel);
- } else {
- String path = DirectoryManager.getRelativePath(packageDoc.name(),
- next.name());
-- printHyperLink(path + "package-summary.html", "",
-- configuration.getText("doclet.Next_Package"), true);
-+ li = HtmlTree.LI(getHyperLink(path + "package-summary.html", "",
-+ nextpackageLabel, "", ""));
- }
-+ return li;
- }
-
- /**
-- * Print "Tree" link in the navigation bar. This will be link to the package
-+ * Get "Tree" link in the navigation bar. This will be link to the package
- * tree file.
-+ *
-+ * @return a content tree for the tree link
- */
-- protected void navLinkTree() {
-- navCellStart();
-- printHyperLink("package-tree.html", "", configuration.getText("doclet.Tree"),
-- true, "NavBarFont1");
-- navCellEnd();
-+ protected Content getNavLinkTree() {
-+ Content useLink = getHyperLink("package-tree.html", "",
-+ treeLabel, "", "");
-+ Content li = HtmlTree.LI(useLink);
-+ return li;
- }
-
- /**
- * Highlight "Package" in the navigation bar, as this is the package page.
-+ *
-+ * @return a content tree for the package link
- */
-- protected void navLinkPackage() {
-- navCellRevStart();
-- fontStyle("NavBarFont1Rev");
-- strongText("doclet.Package");
-- fontEnd();
-- navCellEnd();
-+ protected Content getNavLinkPackage() {
-+ Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, packageLabel);
-+ return li;
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/SerializedFormWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/SerializedFormWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/SerializedFormWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/SerializedFormWriterImpl.java
-@@ -25,8 +25,10 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.io.*;
- import com.sun.javadoc.*;
--import java.io.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-
- /**
- * Generate the Serialized Form Information Page.
-@@ -64,76 +66,167 @@
- }
-
- /**
-- * Write the given package header.
-+ * Get the given header.
- *
-- * @param packageName the package header to write.
-+ * @param header the header to write
-+ * @return the body content tree
- */
-- public void writePackageHeader(String packageName) {
-- hr(4, "noshade");
-- tableHeader();
-- thAlign("center");
-- font("+2");
-- strongText("doclet.Package");
-- print(' ');
-- strong(packageName);
-- tableFooter();
-+ public Content getHeader(String header) {
-+ Content bodyTree = getBody(true, getWindowTitle(header));
-+ addTop(bodyTree);
-+ addNavLinks(true, bodyTree);
-+ Content h1Content = new StringContent(header);
-+ Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
-+ HtmlStyle.title, h1Content);
-+ Content div = HtmlTree.DIV(HtmlStyle.header, heading);
-+ bodyTree.addContent(div);
-+ return bodyTree;
- }
-
- /**
-- * Write the serial UID info.
-+ * Get the serialized form summaries header.
- *
-- * @param header the header that will show up before the UID.
-- * @param serialUID the serial UID to print.
-+ * @return the serialized form summary header tree
- */
-- public void writeSerialUIDInfo(String header, String serialUID) {
-- strong(header + "&nbsp;");
-- println(serialUID);
-- p();
-+ public Content getSerializedSummariesHeader() {
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.blockList);
-+ return ul;
- }
-
- /**
-- * Write the footer.
-+ * Get the package serialized form header.
-+ *
-+ * @return the package serialized form header tree
- */
-- public void writeFooter() {
-- p();
-- hr();
-- navLinks(false);
-- printBottom();
-- printBodyHtmlEnd();
-+ public Content getPackageSerializedHeader() {
-+ HtmlTree li = new HtmlTree(HtmlTag.LI);
-+ li.addStyle(HtmlStyle.blockList);
-+ return li;
- }
-
-+ /**
-+ * Get the given package header.
-+ *
-+ * @param packageName the package header to write
-+ * @return a content tree for the package header
-+ */
-+ public Content getPackageHeader(String packageName) {
-+ Content heading = HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING, true,
-+ packageLabel);
-+ heading.addContent(getSpace());
-+ heading.addContent(packageName);
-+ return heading;
-+ }
-
- /**
-- * Write the serializable class heading.
-+ * Get the serialized class header.
- *
-- * @param classDoc the class being processed.
-+ * @return a content tree for the serialized class header
- */
-- public void writeClassHeader(ClassDoc classDoc) {
-+ public Content getClassSerializedHeader() {
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.blockList);
-+ return ul;
-+ }
-+
-+ /**
-+ * Get the serializable class heading.
-+ *
-+ * @param classDoc the class being processed
-+ * @return a content tree for the class header
-+ */
-+ public Content getClassHeader(ClassDoc classDoc) {
- String classLink = (classDoc.isPublic() || classDoc.isProtected())?
- getLink(new LinkInfoImpl(classDoc,
-- configuration.getClassName(classDoc))):
-+ configuration.getClassName(classDoc))):
- classDoc.qualifiedName();
-- p();
-- anchor(classDoc.qualifiedName());
-+ Content li = HtmlTree.LI(HtmlStyle.blockList, getMarkerAnchor(
-+ classDoc.qualifiedName()));
- String superClassLink =
- classDoc.superclassType() != null ?
- getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_SERIALIZED_FORM,
-- classDoc.superclassType())) :
-+ classDoc.superclassType())) :
- null;
-
- //Print the heading.
- String className = superClassLink == null ?
- configuration.getText(
-- "doclet.Class_0_implements_serializable", classLink) :
-+ "doclet.Class_0_implements_serializable", classLink) :
- configuration.getText(
-- "doclet.Class_0_extends_implements_serializable", classLink,
-- superClassLink);
-- tableHeader();
-- thAlignColspan("left", 2);
-- font("+2");
-- strong(className);
-- tableFooter();
-- p();
-+ "doclet.Class_0_extends_implements_serializable", classLink,
-+ superClassLink);
-+ Content classNameContent = new RawHtml(className);
-+ li.addContent(HtmlTree.HEADING(HtmlConstants.SERIALIZED_MEMBER_HEADING,
-+ classNameContent));
-+ return li;
-+ }
-+
-+ /**
-+ * Get the serial UID info header.
-+ *
-+ * @return a content tree for the serial uid info header
-+ */
-+ public Content getSerialUIDInfoHeader() {
-+ HtmlTree dl = new HtmlTree(HtmlTag.DL);
-+ dl.addStyle(HtmlStyle.nameValue);
-+ return dl;
-+ }
-+
-+ /**
-+ * Adds the serial UID info.
-+ *
-+ * @param header the header that will show up before the UID.
-+ * @param serialUID the serial UID to print.
-+ * @param serialUidTree the serial UID content tree to which the serial UID
-+ * content will be added
-+ */
-+ public void addSerialUIDInfo(String header, String serialUID,
-+ Content serialUidTree) {
-+ Content headerContent = new StringContent(header);
-+ serialUidTree.addContent(HtmlTree.DT(headerContent));
-+ Content serialContent = new StringContent(serialUID);
-+ serialUidTree.addContent(HtmlTree.DD(serialContent));
-+ }
-+
-+ /**
-+ * Get the class serialize content header.
-+ *
-+ * @return a content tree for the class serialize content header
-+ */
-+ public Content getClassContentHeader() {
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.blockList);
-+ return ul;
-+ }
-+
-+ /**
-+ * Get the serialized content tree section.
-+ *
-+ * @param serializedTreeContent the serialized content tree to be added
-+ * @return a div content tree
-+ */
-+ public Content getSerializedContent(Content serializedTreeContent) {
-+ Content divContent = HtmlTree.DIV(HtmlStyle.serializedFormContainer,
-+ serializedTreeContent);
-+ return divContent;
-+ }
-+
-+ /**
-+ * Add the footer.
-+ *
-+ * @param serializedTree the serialized tree to be added
-+ */
-+ public void addFooter(Content serializedTree) {
-+ addNavLinks(false, serializedTree);
-+ addBottom(serializedTree);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void printDocument(Content serializedTree) {
-+ printHtmlDocument(null, true, serializedTree);
- }
-
- private void tableHeader() {
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/SingleIndexWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/SingleIndexWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/SingleIndexWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/SingleIndexWriter.java
-@@ -25,9 +25,10 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.io.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
--
--import java.io.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-
- /**
- * Generate only one index file for all the Member Names with Indexing in
-@@ -36,6 +37,7 @@
- *
- * @see java.lang.Character
- * @author Atul M Dambalkar
-+ * @author Bhavesh Patel (Modified)
- */
- public class SingleIndexWriter extends AbstractIndexWriter {
-
-@@ -82,34 +84,35 @@
- * Member Field, Method and Constructor Description.
- */
- protected void generateIndexFile() throws IOException {
-- printHtmlHeader(configuration.getText("doclet.Window_Single_Index"),
-- null, true);
-- printTop();
-- navLinks(true);
-- printLinksForIndexes();
--
-- hr();
--
-+ String title = configuration.getText("doclet.Window_Single_Index");
-+ Content body = getBody(true, getWindowTitle(title));
-+ addTop(body);
-+ addNavLinks(true, body);
-+ HtmlTree divTree = new HtmlTree(HtmlTag.DIV);
-+ divTree.addStyle(HtmlStyle.contentContainer);
-+ addLinksForIndexes(divTree);
- for (int i = 0; i < indexbuilder.elements().length; i++) {
- Character unicode = (Character)((indexbuilder.elements())[i]);
-- generateContents(unicode, indexbuilder.getMemberList(unicode));
-+ addContents(unicode, indexbuilder.getMemberList(unicode), divTree);
- }
--
-- printLinksForIndexes();
-- navLinks(false);
--
-- printBottom();
-- printBodyHtmlEnd();
-+ addLinksForIndexes(divTree);
-+ body.addContent(divTree);
-+ addNavLinks(false, body);
-+ addBottom(body);
-+ printHtmlDocument(null, true, body);
- }
-
- /**
-- * Print Links for all the Index Files per unicode character.
-+ * Add links for all the Index Files per unicode character.
-+ *
-+ * @param contentTree the content tree to which the links for indexes will be added
- */
-- protected void printLinksForIndexes() {
-+ protected void addLinksForIndexes(Content contentTree) {
- for (int i = 0; i < indexbuilder.elements().length; i++) {
- String unicode = (indexbuilder.elements())[i].toString();
-- printHyperLink("#_" + unicode + "_", unicode);
-- print(' ');
-+ contentTree.addContent(
-+ getHyperLink("#_" + unicode + "_", new StringContent(unicode)));
-+ contentTree.addContent(getSpace());
- }
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java b/src/share/classes/com/sun/tools/doclets/formats/html/SourceToHTMLConverter.java
-# most patch programs can not handle renames
-# rename from src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java
-# rename to src/share/classes/com/sun/tools/doclets/formats/html/SourceToHTMLConverter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/SourceToHTMLConverter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/SourceToHTMLConverter.java
-@@ -23,14 +23,14 @@
- * questions.
- */
-
--package com.sun.tools.doclets.internal.toolkit.util;
-+package com.sun.tools.doclets.formats.html;
-
- import java.io.*;
--import java.util.*;
- import javax.tools.FileObject;
--
- import com.sun.javadoc.*;
- import com.sun.tools.doclets.internal.toolkit.*;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * Converts Java Source Code to HTML.
-@@ -40,27 +40,28 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.4
- */
- public class SourceToHTMLConverter {
-
- /**
-- * The background color.
-- */
-- protected static final String BGCOLOR = "white";
--
-- /**
-- * The line number color.
-- */
-- protected static final String LINE_NO_COLOR = "green";
--
-- /**
- * The number of trailing blank lines at the end of the page.
- * This is inserted so that anchors at the bottom of small pages
- * can be reached.
- */
-- protected static final int NUM_BLANK_LINES = 60;
-+ private static final int NUM_BLANK_LINES = 60;
-
-+ /**
-+ * New line to be added to the documentation.
-+ */
-+ private static final Content NEW_LINE = new RawHtml(DocletConstants.NL);
-+
-+ /**
-+ * Relative path from the documentation root to the file that is being
-+ * generated.
-+ */
-+ private static String relativePath = "";
-
- /**
- * Source is converted to HTML using static methods below.
-@@ -69,11 +70,13 @@
-
- /**
- * Convert the Classes in the given RootDoc to an HTML.
-+ *
- * @param configuration the configuration.
- * @param rd the RootDoc to convert.
- * @param outputdir the name of the directory to output to.
- */
-- public static void convertRoot(Configuration configuration, RootDoc rd, String outputdir) {
-+ public static void convertRoot(ConfigurationImpl configuration, RootDoc rd,
-+ String outputdir) {
- if (rd == null || outputdir == null) {
- return;
- }
-@@ -84,17 +87,19 @@
- ClassDoc[] cds = rd.specifiedClasses();
- for (int i = 0; i < cds.length; i++) {
- convertClass(configuration, cds[i],
-- getPackageOutputDir(outputdir, cds[i].containingPackage()));
-+ getPackageOutputDir(outputdir, cds[i].containingPackage()));
- }
- }
-
- /**
- * Convert the Classes in the given Package to an HTML.
-+ *
- * @param configuration the configuration.
- * @param pd the Package to convert.
- * @param outputdir the name of the directory to output to.
- */
-- public static void convertPackage(Configuration configuration, PackageDoc pd, String outputdir) {
-+ public static void convertPackage(ConfigurationImpl configuration, PackageDoc pd,
-+ String outputdir) {
- if (pd == null || outputdir == null) {
- return;
- }
-@@ -107,8 +112,10 @@
-
- /**
- * Return the directory write output to for the given package.
-+ *
- * @param outputDir the directory to output to.
- * @param pd the Package to generate output for.
-+ * @return the package output directory as a String.
- */
- private static String getPackageOutputDir(String outputDir, PackageDoc pd) {
- return outputDir + File.separator +
-@@ -117,11 +124,13 @@
-
- /**
- * Convert the given Class to an HTML.
-+ *
- * @param configuration the configuration.
- * @param cd the class to convert.
- * @param outputdir the name of the directory to output to.
- */
-- public static void convertClass(Configuration configuration, ClassDoc cd, String outputdir) {
-+ public static void convertClass(ConfigurationImpl configuration, ClassDoc cd,
-+ String outputdir) {
- if (cd == null || outputdir == null) {
- return;
- }
-@@ -145,19 +154,23 @@
- LineNumberReader reader = new LineNumberReader(r);
- int lineno = 1;
- String line;
-- StringBuffer output = new StringBuffer();
-+ relativePath = DirectoryManager.getRelativePath(DocletConstants.SOURCE_OUTPUT_DIR_NAME) +
-+ DirectoryManager.getRelativePath(cd.containingPackage());
-+ Content body = getHeader();
-+ Content pre = new HtmlTree(HtmlTag.PRE);
- try {
- while ((line = reader.readLine()) != null) {
-- output.append(formatLine(line, configuration.sourcetab, lineno));
-+ addLineNo(pre, lineno);
-+ addLine(pre, line, configuration.sourcetab, lineno);
- lineno++;
- }
- } finally {
- reader.close();
- }
-- output = addLineNumbers(output.toString());
-- output.insert(0, getHeader(configuration));
-- output.append(getFooter());
-- writeToFile(output.toString(), outputdir, cd.name(), configuration);
-+ addBlankLines(pre);
-+ Content div = HtmlTree.DIV(HtmlStyle.sourceContainer, pre);
-+ body.addContent(div);
-+ writeToFile(body, outputdir, cd.name(), configuration);
- } catch (Exception e){
- e.printStackTrace();
- }
-@@ -165,135 +178,117 @@
-
- /**
- * Write the output to the file.
-- * @param output the string to output.
-+ *
-+ * @param body the documentation content to be written to the file.
- * @param outputDir the directory to output to.
- * @param className the name of the class that I am converting to HTML.
- * @param configuration the Doclet configuration to pass notices to.
- */
-- private static void writeToFile(String output, String outputDir, String className, Configuration configuration) throws IOException {
-+ private static void writeToFile(Content body, String outputDir,
-+ String className, ConfigurationImpl configuration) throws IOException {
-+ Content htmlDocType = DocType.Transitional();
-+ Content head = new HtmlTree(HtmlTag.HEAD);
-+ head.addContent(HtmlTree.TITLE(new StringContent(
-+ configuration.getText("doclet.Window_Source_title"))));
-+ head.addContent(getStyleSheetProperties(configuration));
-+ Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(),
-+ head, body);
-+ Content htmlDocument = new HtmlDocument(htmlDocType, htmlTree);
- File dir = new File(outputDir);
- dir.mkdirs();
- File newFile = new File(dir, className + ".html");
- configuration.message.notice("doclet.Generating_0", newFile.getPath());
- FileOutputStream fout = new FileOutputStream(newFile);
- BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fout));
-- bw.write(output);
-+ bw.write(htmlDocument.toString());
- bw.close();
- fout.close();
- }
-
- /**
-- * Given a <code>String</code>, add line numbers.
-- * @param s the text to add line numbers to.
-+ * Returns a link to the stylesheet file.
- *
-- * @return the string buffer with the line numbering for each line.
-+ * @param configuration the doclet configuration for the current run of javadoc
-+ * @return an HtmlTree for the lINK tag which provides the stylesheet location
- */
-- private static StringBuffer addLineNumbers(String s) {
-- StringBuffer sb = new StringBuffer();
-- StringTokenizer st = new StringTokenizer(s, "\n", true);
-- int lineno = 1;
-- String current;
-- while(st.hasMoreTokens()){
-- current = st.nextToken();
-- sb.append(current.equals("\n") ?
-- getHTMLLineNo(lineno) + current :
-- getHTMLLineNo(lineno) + current + st.nextToken());
-- lineno++;
-+ public static HtmlTree getStyleSheetProperties(ConfigurationImpl configuration) {
-+ String filename = configuration.stylesheetfile;
-+ if (filename.length() > 0) {
-+ File stylefile = new File(filename);
-+ String parent = stylefile.getParent();
-+ filename = (parent == null)?
-+ filename:
-+ filename.substring(parent.length() + 1);
-+ } else {
-+ filename = "stylesheet.css";
- }
-- return sb;
-+ filename = relativePath + filename;
-+ HtmlTree link = HtmlTree.LINK("stylesheet", "text/css", filename, "Style");
-+ return link;
- }
-
- /**
- * Get the header.
-- * @param configuration the Doclet configuration
-- * @return the header to the output file
-+ *
-+ * @return the header content for the HTML file
- */
-- protected static String getHeader(Configuration configuration) {
-- StringBuffer result = new StringBuffer("<HTML lang=\"" + configuration.getLocale().getLanguage() + "\">" + DocletConstants.NL);
-- result.append("<BODY BGCOLOR=\""+ BGCOLOR + "\">" + DocletConstants.NL);
-- result.append("<PRE>" + DocletConstants.NL);
-- return result.toString();
-+ private static Content getHeader() {
-+ return new HtmlTree(HtmlTag.BODY);
- }
-
- /**
-- * Get the footer
-- * @return the footer to the output file
-+ * Add the line numbers for the source code.
-+ *
-+ * @param pre the content tree to which the line number will be added
-+ * @param lineno The line number
- */
-- protected static String getFooter() {
-- StringBuffer footer = new StringBuffer();
-- for (int i = 0; i < NUM_BLANK_LINES; i++) {
-- footer.append(DocletConstants.NL);
-+ private static void addLineNo(Content pre, int lineno) {
-+ HtmlTree span = new HtmlTree(HtmlTag.SPAN);
-+ span.addStyle(HtmlStyle.sourceLineNo);
-+ if (lineno < 10) {
-+ span.addContent("00" + Integer.toString(lineno));
-+ } else if (lineno < 100) {
-+ span.addContent("0" + Integer.toString(lineno));
-+ } else {
-+ span.addContent(Integer.toString(lineno));
- }
-- footer.append("</PRE>" + DocletConstants.NL + "</BODY>" +
-- DocletConstants.NL + "</HTML>" + DocletConstants.NL);
-- return footer.toString();
-+ pre.addContent(span);
- }
-
- /**
-- * Get the HTML for the lines.
-- * @param lineno The line number
-- * @return the HTML code for the line
-- */
-- protected static String getHTMLLineNo(int lineno) {
-- StringBuffer result = new StringBuffer("<FONT color=\"" + LINE_NO_COLOR
-- + "\">");
-- if (lineno < 10) {
-- result.append("00" + ((new Integer(lineno)).toString()));
-- } else if (lineno < 100) {
-- result.append("0" + ((new Integer(lineno)).toString()));
-- } else {
-- result.append((new Integer(lineno)).toString());
-- }
-- result.append("</FONT> ");
-- return result.toString();
-- }
--
-- /**
-- * Format a given line of source. <br>
-- * Note: In the future, we will add special colors for constructs in the
-- * language.
-+ * Add a line from source to the HTML file that is generated.
-+ *
-+ * @param pre the content tree to which the line will be added.
- * @param line the string to format.
- * @param tabLength the number of spaces for each tab.
- * @param currentLineNo the current number.
- */
-- protected static String formatLine(String line, int tabLength, int currentLineNo) {
-- if (line == null) {
-- return null;
-- }
-- StringBuffer lineBuffer = new StringBuffer(Util.escapeHtmlChars(line));
-- //Insert an anchor for the line
-- lineBuffer.append("<a name=\"line." + Integer.toString(currentLineNo) + "\"></a>");
-- lineBuffer.append(DocletConstants.NL);
-- Util.replaceTabs(tabLength, lineBuffer);
-- return lineBuffer.toString();
-- }
--
-- /**
-- * Given an array of <code>Doc</code>s, add to the given <code>HashMap</code> the
-- * line numbers and anchors that should be inserted in the output at those lines.
-- * @param docs the array of <code>Doc</code>s to add anchors for.
-- * @param hash the <code>HashMap</code> to add to.
-- */
-- protected static void addToHash(Doc[] docs, HashMap<Integer,String> hash) {
-- if(docs == null) {
-- return;
-- }
-- for(int i = 0; i < docs.length; i++) {
-- hash.put(docs[i].position().line(), getAnchor(docs[i]));
-+ private static void addLine(Content pre, String line, int tabLength,
-+ int currentLineNo) {
-+ if (line != null) {
-+ StringBuffer lineBuffer = new StringBuffer(Util.escapeHtmlChars(line));
-+ Util.replaceTabs(tabLength, lineBuffer);
-+ pre.addContent(new RawHtml(lineBuffer.toString()));
-+ Content anchor = HtmlTree.A_NAME("line." + Integer.toString(currentLineNo));
-+ pre.addContent(anchor);
-+ pre.addContent(NEW_LINE);
- }
- }
-
- /**
-- * Given a <code>Doc</code>, return an anchor for it.
-- * @param d the <code>Doc</code> to check.
-- * @return an anchor of the form &lt;a name="my_name">&lt;/a>
-+ * Add trailing blank lines at the end of the page.
-+ *
-+ * @param pre the content tree to which the blank lines will be added.
- */
-- protected static String getAnchor(Doc d) {
-- return " <a name=\"" + getAnchorName(d) + "\"></a>";
-+ private static void addBlankLines(Content pre) {
-+ for (int i = 0; i < NUM_BLANK_LINES; i++) {
-+ pre.addContent(NEW_LINE);
-+ }
- }
-
- /**
- * Given a <code>Doc</code>, return an anchor name for it.
-+ *
- * @param d the <code>Doc</code> to check.
- * @return the name of the anchor.
- */
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/SplitIndexWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/SplitIndexWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/SplitIndexWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/SplitIndexWriter.java
-@@ -25,9 +25,10 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.io.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
--
--import java.io.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-
- /**
- * Generate Separate Index Files for all the member names with Indexing in
-@@ -36,6 +37,7 @@
- *
- * @see java.lang.Character
- * @author Atul M Dambalkar
-+ * @author Bhavesh Patel (Modified)
- */
- public class SplitIndexWriter extends AbstractIndexWriter {
-
-@@ -109,56 +111,68 @@
- * index.
- */
- protected void generateIndexFile(Character unicode) throws IOException {
-- printHtmlHeader(configuration.getText("doclet.Window_Split_Index",
-- unicode.toString()), null, true);
-- printTop();
-- navLinks(true);
-- printLinksForIndexes();
--
-- hr();
--
-- generateContents(unicode, indexbuilder.getMemberList(unicode));
--
-- navLinks(false);
-- printLinksForIndexes();
--
-- printBottom();
-- printBodyHtmlEnd();
-+ String title = configuration.getText("doclet.Window_Split_Index",
-+ unicode.toString());
-+ Content body = getBody(true, getWindowTitle(title));
-+ addTop(body);
-+ addNavLinks(true, body);
-+ HtmlTree divTree = new HtmlTree(HtmlTag.DIV);
-+ divTree.addStyle(HtmlStyle.contentContainer);
-+ addLinksForIndexes(divTree);
-+ addContents(unicode, indexbuilder.getMemberList(unicode), divTree);
-+ addLinksForIndexes(divTree);
-+ body.addContent(divTree);
-+ addNavLinks(false, body);
-+ addBottom(body);
-+ printHtmlDocument(null, true, body);
- }
-
- /**
-- * Print Links for all the Index Files per unicode character.
-+ * Add links for all the Index Files per unicode character.
-+ *
-+ * @param contentTree the content tree to which the links for indexes will be added
- */
-- protected void printLinksForIndexes() {
-- for (int i = 0; i < indexbuilder.elements().length; i++) {
-+ protected void addLinksForIndexes(Content contentTree) {
-+ Object[] unicodeChars = indexbuilder.elements();
-+ for (int i = 0; i < unicodeChars.length; i++) {
- int j = i + 1;
-- printHyperLink("index-" + j + ".html",
-- indexbuilder.elements()[i].toString());
-- print(' ');
-+ contentTree.addContent(getHyperLink("index-" + j + ".html",
-+ new StringContent(unicodeChars[i].toString())));
-+ contentTree.addContent(getSpace());
- }
- }
-
- /**
-- * Print the previous unicode character index link.
-+ * Get link to the previous unicode character.
-+ *
-+ * @return a content tree for the link
- */
-- protected void navLinkPrevious() {
-+ public Content getNavLinkPrevious() {
-+ Content prevletterLabel = getResource("doclet.Prev_Letter");
- if (prev == -1) {
-- printText("doclet.Prev_Letter");
-- } else {
-- printHyperLink("index-" + prev + ".html", "",
-- configuration.getText("doclet.Prev_Letter"), true);
-+ return HtmlTree.LI(prevletterLabel);
-+ }
-+ else {
-+ Content prevLink = getHyperLink("index-" + prev + ".html", "",
-+ prevletterLabel);
-+ return HtmlTree.LI(prevLink);
- }
- }
-
- /**
-- * Print the next unicode character index link.
-+ * Get link to the next unicode character.
-+ *
-+ * @return a content tree for the link
- */
-- protected void navLinkNext() {
-+ public Content getNavLinkNext() {
-+ Content nextletterLabel = getResource("doclet.Next_Letter");
- if (next == -1) {
-- printText("doclet.Next_Letter");
-- } else {
-- printHyperLink("index-" + next + ".html","",
-- configuration.getText("doclet.Next_Letter"), true);
-+ return HtmlTree.LI(nextletterLabel);
-+ }
-+ else {
-+ Content nextLink = getHyperLink("index-" + next + ".html","",
-+ nextletterLabel);
-+ return HtmlTree.LI(nextLink);
- }
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/StylesheetWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/StylesheetWriter.java
-deleted file mode 100644
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/StylesheetWriter.java
-+++ /dev/null
-@@ -1,130 +0,0 @@
--/*
-- * Copyright (c) 1998, 2005, 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 com.sun.tools.doclets.formats.html;
--
--import com.sun.tools.doclets.internal.toolkit.util.*;
--
--import java.io.*;
--
--/**
-- * Writes the style sheet for the doclet output.
-- *
-- * @author Atul M Dambalkar
-- * @author Bhavesh Patel (Modified)
-- */
--public class StylesheetWriter extends HtmlDocletWriter {
--
-- /**
-- * Constructor.
-- */
-- public StylesheetWriter(ConfigurationImpl configuration,
-- String filename) throws IOException {
-- super(configuration, filename);
-- }
--
-- /**
-- * Generate the style file contents.
-- * @throws DocletAbortException
-- */
-- public static void generate(ConfigurationImpl configuration) {
-- StylesheetWriter stylegen;
-- String filename = "";
-- try {
-- filename = "stylesheet.css";
-- stylegen = new StylesheetWriter(configuration, filename);
-- stylegen.generateStyleFile();
-- stylegen.close();
-- } catch (IOException exc) {
-- configuration.standardmessage.error(
-- "doclet.exception_encountered",
-- exc.toString(), filename);
-- throw new DocletAbortException();
-- }
-- }
--
-- /**
-- * Generate the style file contents.
-- */
-- protected void generateStyleFile() {
-- print("/* "); printText("doclet.Style_line_1"); println(" */");
-- println("");
--
-- print("/* "); printText("doclet.Style_line_2"); println(" */");
-- println("");
--
-- print("/* "); printText("doclet.Style_line_3"); println(" */");
-- println("body { background-color: #FFFFFF; color:#000000 }");
-- println("");
--
-- print("/* "); printText("doclet.Style_Headings"); println(" */");
-- println("h1 { font-size: 145% }");
-- println("");
--
-- print("/* "); printText("doclet.Style_line_4"); println(" */");
-- print(".TableHeadingColor { background: #CCCCFF; color:#000000 }");
-- print(" /* "); printText("doclet.Style_line_5"); println(" */");
-- print(".TableSubHeadingColor { background: #EEEEFF; color:#000000 }");
-- print(" /* "); printText("doclet.Style_line_6"); println(" */");
-- print(".TableRowColor { background: #FFFFFF; color:#000000 }");
-- print(" /* "); printText("doclet.Style_line_7"); println(" */");
-- println("");
--
-- print("/* "); printText("doclet.Style_line_8"); println(" */");
-- println(".FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 }");
-- println(".FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }");
-- println(".FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }");
-- println("");
--
-- // Removed doclet.Style_line_9 as no longer needed
--
-- print("/* "); printText("doclet.Style_line_10"); println(" */");
-- print(".NavBarCell1 { background-color:#EEEEFF; color:#000000}");
-- print(" /* "); printText("doclet.Style_line_6"); println(" */");
-- print(".NavBarCell1Rev { background-color:#00008B; color:#FFFFFF}");
-- print(" /* "); printText("doclet.Style_line_11"); println(" */");
--
-- print(".NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;");
-- println("color:#000000;}");
-- print(".NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;");
-- println("color:#FFFFFF;}");
-- println("");
--
-- print(".NavBarCell2 { font-family: Arial, Helvetica, sans-serif; ");
-- println("background-color:#FFFFFF; color:#000000}");
-- print(".NavBarCell3 { font-family: Arial, Helvetica, sans-serif; ");
-- println("background-color:#FFFFFF; color:#000000}");
--
-- print("/* "); printText("doclet.Style_line_12"); println(" */");
-- print(".TableCaption { background: #CCCCFF; color:#000000; text-align: left; font-size: 150%; font-weight: bold; border-left: 2px ridge; border-right: 2px ridge; border-top: 2px ridge; padding-left: 5px; }");
-- print(" /* "); printText("doclet.Style_line_5"); println(" */");
-- print(".TableSubCaption { background: #EEEEFF; color:#000000; text-align: left; font-weight: bold; border-left: 2px ridge; border-right: 2px ridge; border-top: 2px ridge; padding-left: 5px; }");
-- print(" /* "); printText("doclet.Style_line_6"); println(" */");
-- print(".TableHeader { text-align: center; font-size: 80%; font-weight: bold; }");
-- println("");
--
-- }
--
--}
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/SubWriterHolderWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/SubWriterHolderWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/SubWriterHolderWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/SubWriterHolderWriter.java
-@@ -25,10 +25,11 @@
-
- package com.sun.tools.doclets.formats.html;
-
-+import java.io.*;
- import com.sun.javadoc.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
--
--import java.io.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-
- /**
- * This abstract class exists to provide functionality needed in the
-@@ -71,13 +72,31 @@
- tdEnd();
- }
-
-- public void printSummaryHeader(AbstractMemberWriter mw, ClassDoc cd) {
-- mw.printSummaryAnchor(cd);
-- mw.printTableSummary();
-- tableCaptionStart();
-- mw.printSummaryLabel();
-- tableCaptionEnd();
-- mw.printSummaryTableHeader(cd);
-+ /**
-+ * Add the summary header.
-+ *
-+ * @param mw the writer for the member being documented
-+ * @param cd the classdoc to be documented
-+ * @param memberTree the content tree to which the summary header will be added
-+ */
-+ public void addSummaryHeader(AbstractMemberWriter mw, ClassDoc cd,
-+ Content memberTree) {
-+ mw.addSummaryAnchor(cd, memberTree);
-+ mw.addSummaryLabel(memberTree);
-+ }
-+
-+ /**
-+ * Get the summary table.
-+ *
-+ * @param mw the writer for the member being documented
-+ * @param cd the classdoc to be documented
-+ * @return the content tree for the summary table
-+ */
-+ public Content getSummaryTableTree(AbstractMemberWriter mw, ClassDoc cd) {
-+ Content table = HtmlTree.TABLE(HtmlStyle.overviewSummary, 0, 3, 0,
-+ mw.getTableSummary(), getTableCaption(mw.getCaption()));
-+ table.addContent(getSummaryTableHeader(mw.getSummaryTableHeader(cd), "col"));
-+ return table;
- }
-
- public void printTableHeadingBackground(String str) {
-@@ -88,15 +107,17 @@
- tableEnd();
- }
-
-- public void printInheritedSummaryHeader(AbstractMemberWriter mw, ClassDoc cd) {
-- mw.printInheritedSummaryAnchor(cd);
-- tableIndexSummary();
-- tableInheritedHeaderStart("#EEEEFF");
-- mw.printInheritedSummaryLabel(cd);
-- tableInheritedHeaderEnd();
-- trBgcolorStyle("white", "TableRowColor");
-- summaryRow(0);
-- code();
-+ /**
-+ * Add the inherited summary header.
-+ *
-+ * @param mw the writer for the member being documented
-+ * @param cd the classdoc to be documented
-+ * @param inheritedTree the content tree to which the inherited summary header will be added
-+ */
-+ public void addInheritedSummaryHeader(AbstractMemberWriter mw, ClassDoc cd,
-+ Content inheritedTree) {
-+ mw.addInheritedSummaryAnchor(cd, inheritedTree);
-+ mw.addInheritedSummaryLabel(cd, inheritedTree);
- }
-
- public void printSummaryFooter(AbstractMemberWriter mw, ClassDoc cd) {
-@@ -112,8 +133,14 @@
- space();
- }
-
-- protected void printIndexComment(Doc member) {
-- printIndexComment(member, member.firstSentenceTags());
-+ /**
-+ * Add the index comment.
-+ *
-+ * @param member the member being documented
-+ * @param contentTree the content tree to which the comment will be added
-+ */
-+ protected void addIndexComment(Doc member, Content contentTree) {
-+ addIndexComment(member, member.firstSentenceTags(), contentTree);
- }
-
- protected void printIndexComment(Doc member, Tag[] firstSentenceTags) {
-@@ -134,17 +161,60 @@
- printSummaryComment(member, firstSentenceTags);
- }
-
-- public void printSummaryLinkType(AbstractMemberWriter mw,
-- ProgramElementDoc member) {
-- trBgcolorStyle("white", "TableRowColor");
-- mw.printSummaryType(member);
-- summaryRow(0);
-- code();
-+ /**
-+ * Add the index comment.
-+ *
-+ * @param member the member being documented
-+ * @param firstSentenceTags the first sentence tags for the member to be documented
-+ * @param tdSummary the content tree to which the comment will be added
-+ */
-+ protected void addIndexComment(Doc member, Tag[] firstSentenceTags,
-+ Content tdSummary) {
-+ Tag[] deprs = member.tags("deprecated");
-+ Content div;
-+ if (Util.isDeprecated((ProgramElementDoc) member)) {
-+ Content strong = HtmlTree.STRONG(deprecatedPhrase);
-+ div = HtmlTree.DIV(HtmlStyle.block, strong);
-+ div.addContent(getSpace());
-+ if (deprs.length > 0) {
-+ addInlineDeprecatedComment(member, deprs[0], div);
-+ }
-+ tdSummary.addContent(div);
-+ return;
-+ } else {
-+ ClassDoc cd = ((ProgramElementDoc)member).containingClass();
-+ if (cd != null && Util.isDeprecated(cd)) {
-+ Content strong = HtmlTree.STRONG(deprecatedPhrase);
-+ div = HtmlTree.DIV(HtmlStyle.block, strong);
-+ div.addContent(getSpace());
-+ tdSummary.addContent(div);
-+ }
-+ }
-+ addSummaryComment(member, firstSentenceTags, tdSummary);
- }
-
-- public void printSummaryLinkComment(AbstractMemberWriter mw,
-- ProgramElementDoc member) {
-- printSummaryLinkComment(mw, member, member.firstSentenceTags());
-+ /**
-+ * Add the summary type for the member.
-+ *
-+ * @param mw the writer for the member being documented
-+ * @param member the member to be documented
-+ * @param tdSummaryType the content tree to which the type will be added
-+ */
-+ public void addSummaryType(AbstractMemberWriter mw, ProgramElementDoc member,
-+ Content tdSummaryType) {
-+ mw.addSummaryType(member, tdSummaryType);
-+ }
-+
-+ /**
-+ * Add the summary link for the member.
-+ *
-+ * @param mw the writer for the member being documented
-+ * @param member the member to be documented
-+ * @param contentTree the content tree to which the link will be added
-+ */
-+ public void addSummaryLinkComment(AbstractMemberWriter mw,
-+ ProgramElementDoc member, Content contentTree) {
-+ addSummaryLinkComment(mw, member, member.firstSentenceTags(), contentTree);
- }
-
- public void printSummaryLinkComment(AbstractMemberWriter mw,
-@@ -159,12 +229,34 @@
- trEnd();
- }
-
-- public void printInheritedSummaryMember(AbstractMemberWriter mw, ClassDoc cd,
-- ProgramElementDoc member, boolean isFirst) {
-+ /**
-+ * Add the summary link comment.
-+ *
-+ * @param mw the writer for the member being documented
-+ * @param member the member being documented
-+ * @param firstSentenceTags the first sentence tags for the member to be documented
-+ * @param tdSummary the content tree to which the comment will be added
-+ */
-+ public void addSummaryLinkComment(AbstractMemberWriter mw,
-+ ProgramElementDoc member, Tag[] firstSentenceTags, Content tdSummary) {
-+ addIndexComment(member, firstSentenceTags, tdSummary);
-+ }
-+
-+ /**
-+ * Add the inherited member summary.
-+ *
-+ * @param mw the writer for the member being documented
-+ * @param cd the class being documented
-+ * @param member the member being documented
-+ * @param isFirst true if its the first link being documented
-+ * @param linksTree the content tree to which the summary will be added
-+ */
-+ public void addInheritedMemberSummary(AbstractMemberWriter mw, ClassDoc cd,
-+ ProgramElementDoc member, boolean isFirst, Content linksTree) {
- if (! isFirst) {
-- mw.print(", ");
-+ linksTree.addContent(", ");
- }
-- mw.writeInheritedSummaryLink(cd, member);
-+ mw.addInheritedSummaryLink(cd, member, linksTree);
- }
-
- public void printMemberHeader() {
-@@ -174,4 +266,67 @@
- public void printMemberFooter() {
- }
-
-+ /**
-+ * Get the document content header tree
-+ *
-+ * @return a content tree the document content header
-+ */
-+ public Content getContentHeader() {
-+ HtmlTree div = new HtmlTree(HtmlTag.DIV);
-+ div.addStyle(HtmlStyle.contentContainer);
-+ return div;
-+ }
-+
-+ /**
-+ * Get the member header tree
-+ *
-+ * @return a content tree the member header
-+ */
-+ public Content getMemberTreeHeader() {
-+ HtmlTree li = new HtmlTree(HtmlTag.LI);
-+ li.addStyle(HtmlStyle.blockList);
-+ return li;
-+ }
-+
-+ /**
-+ * Get the member tree
-+ *
-+ * @param contentTree the tree used to generate the complete member tree
-+ * @return a content tree for the member
-+ */
-+ public Content getMemberTree(Content contentTree) {
-+ Content ul = HtmlTree.UL(HtmlStyle.blockList, contentTree);
-+ return ul;
-+ }
-+
-+ /**
-+ * Get the member summary tree
-+ *
-+ * @param contentTree the tree used to generate the member summary tree
-+ * @return a content tree for the member summary
-+ */
-+ public Content getMemberSummaryTree(Content contentTree) {
-+ return getMemberTree(HtmlStyle.summary, contentTree);
-+ }
-+
-+ /**
-+ * Get the member details tree
-+ *
-+ * @param contentTree the tree used to generate the member details tree
-+ * @return a content tree for the member details
-+ */
-+ public Content getMemberDetailsTree(Content contentTree) {
-+ return getMemberTree(HtmlStyle.details, contentTree);
-+ }
-+
-+ /**
-+ * Get the member tree
-+ *
-+ * @param style the style class to be added to the content tree
-+ * @param contentTree the tree used to generate the complete member tree
-+ */
-+ public Content getMemberTree(HtmlStyle style, Content contentTree) {
-+ Content div = HtmlTree.DIV(style, getMemberTree(contentTree));
-+ return div;
-+ }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java b/src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java
-@@ -70,9 +70,9 @@
- Tag[] deprs = doc.tags("deprecated");
- if (doc instanceof ClassDoc) {
- if (Util.isDeprecated((ProgramElementDoc) doc)) {
-- output.append("<STRONG>" +
-+ output.append("<span class=\"strong\">" +
- ConfigurationImpl.getInstance().
-- getText("doclet.Deprecated") + "</STRONG>&nbsp;");
-+ getText("doclet.Deprecated") + "</span>&nbsp;");
- if (deprs.length > 0) {
- Tag[] commentTags = deprs[0].inlineTags();
- if (commentTags.length > 0) {
-@@ -82,30 +82,24 @@
- );
- }
- }
-- output.append("<p>");
- }
- } else {
- MemberDoc member = (MemberDoc) doc;
- if (Util.isDeprecated((ProgramElementDoc) doc)) {
-- output.append("<DD><STRONG>" +
-+ output.append("<span class=\"strong\">" +
- ConfigurationImpl.getInstance().
-- getText("doclet.Deprecated") + "</STRONG>&nbsp;");
-+ getText("doclet.Deprecated") + "</span>&nbsp;");
- if (deprs.length > 0) {
-- output.append("<I>");
-+ output.append("<i>");
- output.append(commentTagsToOutput(null, doc,
- deprs[0].inlineTags(), false).toString());
-- output.append("</I>");
-+ output.append("</i>");
- }
-- if (member instanceof ExecutableMemberDoc) {
-- output.append(DocletConstants.NL + "<P>" +
-- DocletConstants.NL);
-- }
-- output.append("</DD>");
- } else {
- if (Util.isDeprecated(member.containingClass())) {
-- output.append("<DD><STRONG>" +
-+ output.append("<span class=\"strong\">" +
- ConfigurationImpl.getInstance().
-- getText("doclet.Deprecated") + "</STRONG>&nbsp;</DD>");
-+ getText("doclet.Deprecated") + "</span>&nbsp;");
- }
- }
- }
-@@ -124,8 +118,8 @@
- */
- public TagletOutput getParamHeader(String header) {
- StringBuffer result = new StringBuffer();
-- result.append("<DT>");
-- result.append("<STRONG>" + header + "</STRONG></DT>");
-+ result.append("<dt>");
-+ result.append("<span class=\"strong\">" + header + "</span></dt>");
- return new TagletOutputImpl(result.toString());
- }
-
-@@ -133,8 +127,8 @@
- * {@inheritDoc}
- */
- public TagletOutput paramTagOutput(ParamTag paramTag, String paramName) {
-- TagletOutput result = new TagletOutputImpl("<DD><CODE>" + paramName + "</CODE>"
-- + " - " + htmlWriter.commentTagsToString(paramTag, null, paramTag.inlineTags(), false) + "</DD>");
-+ TagletOutput result = new TagletOutputImpl("<dd><code>" + paramName + "</code>"
-+ + " - " + htmlWriter.commentTagsToString(paramTag, null, paramTag.inlineTags(), false) + "</dd>");
- return result;
- }
-
-@@ -142,11 +136,11 @@
- * {@inheritDoc}
- */
- public TagletOutput returnTagOutput(Tag returnTag) {
-- TagletOutput result = new TagletOutputImpl(DocletConstants.NL + "<DT>" +
-- "<STRONG>" + htmlWriter.configuration.getText("doclet.Returns") +
-- "</STRONG>" + "</DT>" + "<DD>" +
-+ TagletOutput result = new TagletOutputImpl(DocletConstants.NL + "<dt>" +
-+ "<span class=\"strong\">" + htmlWriter.configuration.getText("doclet.Returns") +
-+ "</span>" + "</dt>" + "<dd>" +
- htmlWriter.commentTagsToString(returnTag, null, returnTag.inlineTags(),
-- false) + "</DD>");
-+ false) + "</dd>");
- return result;
- }
-
-@@ -168,7 +162,7 @@
- htmlWriter instanceof ClassWriterImpl) {
- //Automatically add link to constant values page for constant fields.
- result = addSeeHeader(result);
-- result += htmlWriter.getHyperLink(htmlWriter.relativePath +
-+ result += htmlWriter.getHyperLinkString(htmlWriter.relativePath +
- ConfigurationImpl.CONSTANTS_FILE_NAME
- + "#" + ((ClassWriterImpl) htmlWriter).getClassDoc().qualifiedName()
- + "." + ((FieldDoc) holder).name(),
-@@ -179,18 +173,19 @@
- if ((SerializedFormBuilder.serialInclude(holder) &&
- SerializedFormBuilder.serialInclude(((ClassDoc)holder).containingPackage()))) {
- result = addSeeHeader(result);
-- result += htmlWriter.getHyperLink(htmlWriter.relativePath + "serialized-form.html",
-+ result += htmlWriter.getHyperLinkString(htmlWriter.relativePath + "serialized-form.html",
- ((ClassDoc)holder).qualifiedName(), htmlWriter.configuration.getText("doclet.Serialized_Form"), false);
- }
- }
-- return result.equals("") ? null : new TagletOutputImpl(result + "</DD>");
-+ return result.equals("") ? null : new TagletOutputImpl(result + "</dd>");
- }
-
- private String addSeeHeader(String result) {
- if (result != null && result.length() > 0) {
- return result + ", " + DocletConstants.NL;
- } else {
-- return "<DT><STRONG>" + htmlWriter.configuration().getText("doclet.See_Also") + "</STRONG></DT><DD>";
-+ return "<dt><span class=\"strong\">" +
-+ htmlWriter.configuration().getText("doclet.See_Also") + "</span></dt><dd>";
- }
- }
-
-@@ -198,15 +193,15 @@
- * {@inheritDoc}
- */
- public TagletOutput simpleTagOutput(Tag[] simpleTags, String header) {
-- String result = "<DT><STRONG>" + header + "</STRONG></DT>" + DocletConstants.NL +
-- " <DD>";
-+ String result = "<dt><span class=\"strong\">" + header + "</span></dt>" + DocletConstants.NL +
-+ " <dd>";
- for (int i = 0; i < simpleTags.length; i++) {
- if (i > 0) {
- result += ", ";
- }
- result += htmlWriter.commentTagsToString(simpleTags[i], null, simpleTags[i].inlineTags(), false);
- }
-- result += "</DD>" + DocletConstants.NL;
-+ result += "</dd>" + DocletConstants.NL;
- return new TagletOutputImpl(result);
- }
-
-@@ -214,24 +209,24 @@
- * {@inheritDoc}
- */
- public TagletOutput simpleTagOutput(Tag simpleTag, String header) {
-- return new TagletOutputImpl("<DT><STRONG>" + header + "</STRONG></DT>" + " <DD>"
-+ return new TagletOutputImpl("<dt><span class=\"strong\">" + header + "</span></dt>" + " <dd>"
- + htmlWriter.commentTagsToString(simpleTag, null, simpleTag.inlineTags(), false)
-- + "</DD>" + DocletConstants.NL);
-+ + "</dd>" + DocletConstants.NL);
- }
-
- /**
- * {@inheritDoc}
- */
- public TagletOutput getThrowsHeader() {
-- return new TagletOutputImpl(DocletConstants.NL + "<DT>" + "<STRONG>" +
-- htmlWriter.configuration().getText("doclet.Throws") + "</STRONG></DT>");
-+ return new TagletOutputImpl(DocletConstants.NL + "<dt>" + "<span class=\"strong\">" +
-+ htmlWriter.configuration().getText("doclet.Throws") + "</span></dt>");
- }
-
- /**
- * {@inheritDoc}
- */
- public TagletOutput throwsTagOutput(ThrowsTag throwsTag) {
-- String result = DocletConstants.NL + "<DD>";
-+ String result = DocletConstants.NL + "<dd>";
- result += throwsTag.exceptionType() == null ?
- htmlWriter.codeText(throwsTag.exceptionName()) :
- htmlWriter.codeText(
-@@ -243,7 +238,7 @@
- if (text != null && text.toString().length() > 0) {
- result += " - " + text;
- }
-- result += "</DD>";
-+ result += "</dd>";
- return new TagletOutputImpl(result);
- }
-
-@@ -251,9 +246,9 @@
- * {@inheritDoc}
- */
- public TagletOutput throwsTagOutput(Type throwsType) {
-- return new TagletOutputImpl(DocletConstants.NL + "<DD>" +
-+ return new TagletOutputImpl(DocletConstants.NL + "<dd>" +
- htmlWriter.codeText(htmlWriter.getLink(
-- new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER, throwsType))) + "</DD>");
-+ new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER, throwsType))) + "</dd>");
- }
-
- /**
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/TreeWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/TreeWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/TreeWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/TreeWriter.java
-@@ -29,6 +29,8 @@
-
- import com.sun.javadoc.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+import com.sun.tools.doclets.internal.toolkit.*;
-
- /**
- * Generate Class Hierarchy page for all the Classes in this run. Use
-@@ -37,6 +39,7 @@
- * current or the destination directory.
- *
- * @author Atul M Dambalkar
-+ * @author Bhavesh Patel (Modified)
- */
- public class TreeWriter extends AbstractTreeWriter {
-
-@@ -90,86 +93,70 @@
- }
-
- /**
-- * Print the interface hierarchy and class hierarchy in the file.
-+ * Generate the interface hierarchy and class hierarchy.
- */
- public void generateTreeFile() throws IOException {
-- printHtmlHeader(configuration.getText("doclet.Window_Class_Hierarchy"),
-- null, true);
--
-- printTreeHeader();
--
-- printPageHeading();
--
-- printPackageTreeLinks();
--
-- generateTree(classtree.baseclasses(), "doclet.Class_Hierarchy");
-- generateTree(classtree.baseinterfaces(), "doclet.Interface_Hierarchy");
-- generateTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy");
-- generateTree(classtree.baseEnums(), "doclet.Enum_Hierarchy");
--
-- printTreeFooter();
-+ Content body = getTreeHeader();
-+ Content headContent = getResource("doclet.Hierarchy_For_All_Packages");
-+ Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, false,
-+ HtmlStyle.title, headContent);
-+ Content div = HtmlTree.DIV(HtmlStyle.header, heading);
-+ addPackageTreeLinks(div);
-+ body.addContent(div);
-+ HtmlTree divTree = new HtmlTree(HtmlTag.DIV);
-+ divTree.addStyle(HtmlStyle.contentContainer);
-+ addTree(classtree.baseclasses(), "doclet.Class_Hierarchy", divTree);
-+ addTree(classtree.baseinterfaces(), "doclet.Interface_Hierarchy", divTree);
-+ addTree(classtree.baseAnnotationTypes(), "doclet.Annotation_Type_Hierarchy", divTree);
-+ addTree(classtree.baseEnums(), "doclet.Enum_Hierarchy", divTree);
-+ body.addContent(divTree);
-+ addNavLinks(false, body);
-+ addBottom(body);
-+ printHtmlDocument(null, true, body);
- }
-
- /**
-- * Generate the links to all the package tree files.
-+ * Add the links to all the package tree files.
-+ *
-+ * @param contentTree the content tree to which the links will be added
- */
-- protected void printPackageTreeLinks() {
-+ protected void addPackageTreeLinks(Content contentTree) {
- //Do nothing if only unnamed package is used
- if (packages.length == 1 && packages[0].name().length() == 0) {
- return;
- }
- if (!classesonly) {
-- dl();
-- dt();
-- strongText("doclet.Package_Hierarchies");
-- dtEnd();
-- dd();
-+ Content span = HtmlTree.SPAN(HtmlStyle.strong,
-+ getResource("doclet.Package_Hierarchies"));
-+ contentTree.addContent(span);
-+ HtmlTree ul = new HtmlTree(HtmlTag.UL);
-+ ul.addStyle(HtmlStyle.horizontal);
- for (int i = 0; i < packages.length; i++) {
- if (packages[i].name().length() == 0) {
- continue;
- }
-- String filename = pathString(packages[i], "package-tree.html");
-- printHyperLink(filename, "", packages[i].name());
-+ String link = pathString(packages[i], "package-tree.html");
-+ Content li = HtmlTree.LI(getHyperLink(
-+ link, "", new StringContent(packages[i].name())));
- if (i < packages.length - 1) {
-- print(", ");
-+ li.addContent(", ");
- }
-+ ul.addContent(li);
- }
-- ddEnd();
-- dlEnd();
-- hr();
-+ contentTree.addContent(ul);
- }
- }
-
- /**
-- * Print the top text (from the -top option) and
-- * navigation bar at the top of page.
-+ * Get the tree header.
-+ *
-+ * @return a content tree for the tree header
- */
-- protected void printTreeHeader() {
-- printTop();
-- navLinks(true);
-- hr();
-- }
--
-- /**
-- * Print the navigation bar and bottom text (from the -bottom option)
-- * at the bottom of page.
-- */
-- protected void printTreeFooter() {
-- hr();
-- navLinks(false);
-- printBottom();
-- printBodyHtmlEnd();
-- }
--
-- /**
-- * Print the page title "Hierarchy For All Packages" at the top of the tree
-- * page.
-- */
-- protected void printPageHeading() {
-- center();
-- h2();
-- printText("doclet.Hierarchy_For_All_Packages");
-- h2End();
-- centerEnd();
-+ protected Content getTreeHeader() {
-+ String title = configuration.getText("doclet.Window_Class_Hierarchy");
-+ Content bodyTree = getBody(true, getWindowTitle(title));
-+ addTop(bodyTree);
-+ addNavLinks(true, bodyTree);
-+ return bodyTree;
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/Comment.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/Comment.java
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/Comment.java
-@@ -0,0 +1,90 @@
-+/*
-+ * Copyright (c) 2010, 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 com.sun.tools.doclets.formats.html.markup;
-+
-+import com.sun.tools.doclets.internal.toolkit.Content;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+
-+/**
-+ * Class for generating a comment for HTML pages of javadoc output.
-+ *
-+ * @author Bhavesh Patel
-+ */
-+public class Comment extends Content{
-+
-+ private String commentText;
-+
-+ /**
-+ * Constructor to construct a Comment object.
-+ *
-+ * @param comment comment text for the comment
-+ */
-+ public Comment(String comment) {
-+ commentText = nullCheck(comment);
-+ }
-+
-+ /**
-+ * This method is not supported by the class.
-+ *
-+ * @param content content that needs to be added
-+ * @throws DocletAbortException this method will always throw a
-+ * DocletAbortException because it
-+ * is not supported.
-+ */
-+ public void addContent(Content content) {
-+ throw new DocletAbortException();
-+ }
-+
-+ /**
-+ * This method is not supported by the class.
-+ *
-+ * @param stringContent string content that needs to be added
-+ * @throws DocletAbortException this method will always throw a
-+ * DocletAbortException because it
-+ * is not supported.
-+ */
-+ public void addContent(String stringContent) {
-+ throw new DocletAbortException();
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public boolean isEmpty() {
-+ return commentText.isEmpty();
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void write(StringBuilder contentBuilder) {
-+ if (!endsWithNewLine(contentBuilder))
-+ contentBuilder.append("\n");
-+ contentBuilder.append("<!-- ");
-+ contentBuilder.append(commentText);
-+ contentBuilder.append(" -->\n");
-+ }
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/DocType.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/DocType.java
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/DocType.java
-@@ -0,0 +1,113 @@
-+/*
-+ * Copyright (c) 2010, 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 com.sun.tools.doclets.formats.html.markup;
-+
-+import com.sun.tools.doclets.internal.toolkit.Content;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+
-+/**
-+ * Class for generating document type for HTML pages of javadoc output.
-+ *
-+ * @author Bhavesh Patel
-+ */
-+public class DocType extends Content{
-+
-+ private String docType;
-+
-+ private static DocType transitional;
-+
-+ private static DocType frameset;
-+
-+ /**
-+ * Constructor to construct a DocType object.
-+ *
-+ * @param type the doctype to be added
-+ */
-+ private DocType(String type, String dtd) {
-+ docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 " + type +
-+ "//EN\" \"" + dtd + "\">\n";
-+ }
-+
-+ /**
-+ * Construct and return a HTML 4.01 transitional DocType content
-+ *
-+ * @return a content tree for transitional DocType
-+ */
-+ public static DocType Transitional() {
-+ if (transitional == null)
-+ transitional = new DocType("Transitional", "http://www.w3.org/TR/html4/loose.dtd");
-+ return transitional;
-+ }
-+
-+ /**
-+ * Construct and return a HTML 4.01 frameset DocType content
-+ *
-+ * @return a content tree for frameset DocType
-+ */
-+ public static DocType Frameset() {
-+ if (frameset == null)
-+ frameset = new DocType("Frameset", "http://www.w3.org/TR/html4/frameset.dtd");
-+ return frameset;
-+ }
-+
-+ /**
-+ * This method is not supported by the class.
-+ *
-+ * @param content content that needs to be added
-+ * @throws DocletAbortException this method will always throw a
-+ * DocletAbortException because it
-+ * is not supported.
-+ */
-+ public void addContent(Content content) {
-+ throw new DocletAbortException();
-+ }
-+
-+ /**
-+ * This method is not supported by the class.
-+ *
-+ * @param stringContent string content that needs to be added
-+ * @throws DocletAbortException this method will always throw a
-+ * DocletAbortException because it
-+ * is not supported.
-+ */
-+ public void addContent(String stringContent) {
-+ throw new DocletAbortException();
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public boolean isEmpty() {
-+ return (docType.length() == 0);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void write(StringBuilder contentBuilder) {
-+ contentBuilder.append(docType);
-+ }
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlAttr.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlAttr.java
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlAttr.java
-@@ -0,0 +1,73 @@
-+/*
-+ * Copyright (c) 2010, 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 com.sun.tools.doclets.formats.html.markup;
-+
-+/**
-+ * Enum representing HTML tag attributes.
-+ *
-+ * @author Bhavesh Patel
-+ */
-+public enum HtmlAttr {
-+ ALT,
-+ BORDER,
-+ CELLPADDING,
-+ CELLSPACING,
-+ CHARSET,
-+ CLASS,
-+ CLEAR,
-+ COLS,
-+ CONTENT,
-+ HREF,
-+ HTTP_EQUIV("http-equiv"),
-+ ID,
-+ LANG,
-+ NAME,
-+ ONLOAD,
-+ REL,
-+ ROWS,
-+ SCOPE,
-+ SCROLLING,
-+ SRC,
-+ SUMMARY,
-+ TARGET,
-+ TITLE,
-+ TYPE,
-+ WIDTH;
-+
-+ private final String value;
-+
-+ HtmlAttr() {
-+ this.value = name().toLowerCase();
-+ }
-+
-+ HtmlAttr(String name) {
-+ this.value = name;
-+ }
-+
-+ public String toString() {
-+ return value;
-+ }
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlConstants.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlConstants.java
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlConstants.java
-@@ -0,0 +1,189 @@
-+/*
-+ * Copyright (c) 2010, 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 com.sun.tools.doclets.formats.html.markup;
-+
-+import com.sun.tools.doclets.internal.toolkit.Content;
-+
-+/**
-+ * Stores constants for Html Doclet.
-+ *
-+ * @author Bhavesh Patel
-+ */
-+public class HtmlConstants {
-+
-+ /**
-+ * Marker to identify start of top navigation bar.
-+ */
-+ public static final Content START_OF_TOP_NAVBAR =
-+ new Comment("========= START OF TOP NAVBAR =======");
-+
-+ /**
-+ * Marker to identify start of bottom navigation bar.
-+ */
-+ public static final Content START_OF_BOTTOM_NAVBAR =
-+ new Comment("======= START OF BOTTOM NAVBAR ======");
-+
-+ /**
-+ * Marker to identify end of top navigation bar.
-+ */
-+ public static final Content END_OF_TOP_NAVBAR =
-+ new Comment("========= END OF TOP NAVBAR =========");
-+
-+ /**
-+ * Marker to identify end of bottom navigation bar.
-+ */
-+ public static final Content END_OF_BOTTOM_NAVBAR =
-+ new Comment("======== END OF BOTTOM NAVBAR =======");
-+
-+ /**
-+ * Marker to identify start of class data.
-+ */
-+ public static final Content START_OF_CLASS_DATA =
-+ new Comment("======== START OF CLASS DATA ========");
-+
-+ /**
-+ * Marker to identify end of class data.
-+ */
-+ public static final Content END_OF_CLASS_DATA =
-+ new Comment("========= END OF CLASS DATA =========");
-+
-+ /**
-+ * Marker to identify start of nested class summary.
-+ */
-+ public static final Content START_OF_NESTED_CLASS_SUMMARY =
-+ new Comment("======== NESTED CLASS SUMMARY ========");
-+
-+ /**
-+ * Marker to identify start of annotation type optional member summary.
-+ */
-+ public static final Content START_OF_ANNOTATION_TYPE_OPTIONAL_MEMBER_SUMMARY =
-+ new Comment("=========== ANNOTATION TYPE OPTIONAL MEMBER SUMMARY ===========");
-+
-+ /**
-+ * Marker to identify start of annotation type required member summary.
-+ */
-+ public static final Content START_OF_ANNOTATION_TYPE_REQUIRED_MEMBER_SUMMARY =
-+ new Comment("=========== ANNOTATION TYPE REQUIRED MEMBER SUMMARY ===========");
-+
-+ /**
-+ * Marker to identify start of constructor summary.
-+ */
-+ public static final Content START_OF_CONSTRUCTOR_SUMMARY =
-+ new Comment("======== CONSTRUCTOR SUMMARY ========");
-+
-+ /**
-+ * Marker to identify start of enum constants summary.
-+ */
-+ public static final Content START_OF_ENUM_CONSTANT_SUMMARY =
-+ new Comment("=========== ENUM CONSTANT SUMMARY ===========");
-+
-+ /**
-+ * Marker to identify start of field summary.
-+ */
-+ public static final Content START_OF_FIELD_SUMMARY =
-+ new Comment("=========== FIELD SUMMARY ===========");
-+
-+ /**
-+ * Marker to identify start of method summary.
-+ */
-+ public static final Content START_OF_METHOD_SUMMARY =
-+ new Comment("========== METHOD SUMMARY ===========");
-+
-+ /**
-+ * Marker to identify start of annotation type details.
-+ */
-+ public static final Content START_OF_ANNOTATION_TYPE_DETAILS =
-+ new Comment("============ ANNOTATION TYPE MEMBER DETAIL ===========");
-+
-+ /**
-+ * Marker to identify start of method details.
-+ */
-+ public static final Content START_OF_METHOD_DETAILS =
-+ new Comment("============ METHOD DETAIL ==========");
-+
-+ /**
-+ * Marker to identify start of field details.
-+ */
-+ public static final Content START_OF_FIELD_DETAILS =
-+ new Comment("============ FIELD DETAIL ===========");
-+
-+ /**
-+ * Marker to identify start of constructor details.
-+ */
-+ public static final Content START_OF_CONSTRUCTOR_DETAILS =
-+ new Comment("========= CONSTRUCTOR DETAIL ========");
-+
-+ /**
-+ * Marker to identify start of enum constants details.
-+ */
-+ public static final Content START_OF_ENUM_CONSTANT_DETAILS =
-+ new Comment("============ ENUM CONSTANT DETAIL ===========");
-+
-+ /**
-+ * Html tag for the page title heading.
-+ */
-+ public static final HtmlTag TITLE_HEADING = HtmlTag.H1;
-+
-+ /**
-+ * Html tag for the class page title heading.
-+ */
-+ public static final HtmlTag CLASS_PAGE_HEADING = HtmlTag.H2;
-+
-+ /**
-+ * Html tag for the content heading.
-+ */
-+ public static final HtmlTag CONTENT_HEADING = HtmlTag.H2;
-+
-+ /**
-+ * Html tag for the package name heading.
-+ */
-+ public static final HtmlTag PACKAGE_HEADING = HtmlTag.H2;
-+
-+ /**
-+ * Html tag for the member summary heading.
-+ */
-+ public static final HtmlTag SUMMARY_HEADING = HtmlTag.H3;
-+
-+ /**
-+ * Html tag for the inherited member summary heading.
-+ */
-+ public static final HtmlTag INHERITED_SUMMARY_HEADING = HtmlTag.H3;
-+
-+ /**
-+ * Html tag for the member details heading.
-+ */
-+ public static final HtmlTag DETAILS_HEADING = HtmlTag.H3;
-+
-+ /**
-+ * Html tag for the serialized member heading.
-+ */
-+ public static final HtmlTag SERIALIZED_MEMBER_HEADING = HtmlTag.H3;
-+
-+ /**
-+ * Html tag for the member heading.
-+ */
-+ public static final HtmlTag MEMBER_HEADING = HtmlTag.H4;
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java
-@@ -87,7 +87,7 @@
- */
- public void printHyperLink(String link, String where,
- String label, boolean strong) {
-- print(getHyperLink(link, where, label, strong, "", "", ""));
-+ print(getHyperLinkString(link, where, label, strong, "", "", ""));
- }
-
- /**
-@@ -115,7 +115,7 @@
- public void printHyperLink(String link, String where,
- String label, boolean strong,
- String stylename) {
-- print(getHyperLink(link, where, label, strong, stylename, "", ""));
-+ print(getHyperLinkString(link, where, label, strong, stylename, "", ""));
- }
-
- /**
-@@ -128,9 +128,9 @@
- * @param strong Boolean that sets label to strong.
- * @return String Hyper Link.
- */
-- public String getHyperLink(String link, String where,
-+ public String getHyperLinkString(String link, String where,
- String label, boolean strong) {
-- return getHyperLink(link, where, label, strong, "", "", "");
-+ return getHyperLinkString(link, where, label, strong, "", "", "");
- }
-
- /**
-@@ -144,10 +144,24 @@
- * @param stylename String style of text defined in style sheet.
- * @return String Hyper Link.
- */
-- public String getHyperLink(String link, String where,
-+ public String getHyperLinkString(String link, String where,
- String label, boolean strong,
- String stylename) {
-- return getHyperLink(link, where, label, strong, stylename, "", "");
-+ return getHyperLinkString(link, where, label, strong, stylename, "", "");
-+ }
-+
-+ /**
-+ * Get Html Hyper Link string.
-+ *
-+ * @param link String name of the file.
-+ * @param where Position of the link in the file. Character '#' is not
-+ * needed.
-+ * @param label Tag for the link.
-+ * @return a content tree for the hyper link
-+ */
-+ public Content getHyperLink(String link, String where,
-+ Content label) {
-+ return getHyperLink(link, where, label, "", "");
- }
-
- /**
-@@ -163,11 +177,11 @@
- * @param target Target frame.
- * @return String Hyper Link.
- */
-- public String getHyperLink(String link, String where,
-+ public String getHyperLinkString(String link, String where,
- String label, boolean strong,
- String stylename, String title, String target) {
- StringBuffer retlink = new StringBuffer();
-- retlink.append("<A HREF=\"");
-+ retlink.append("<a href=\"");
- retlink.append(link);
- if (where != null && where.length() != 0) {
- retlink.append("#");
-@@ -187,27 +201,54 @@
- retlink.append("\">");
- }
- if (strong) {
-- retlink.append("<STRONG>");
-+ retlink.append("<span class=\"strong\">");
- }
- retlink.append(label);
- if (strong) {
-- retlink.append("</STRONG>");
-+ retlink.append("</span>");
- }
- if (stylename != null && stylename.length() != 0) {
- retlink.append("</FONT>");
- }
-- retlink.append("</A>");
-+ retlink.append("</a>");
- return retlink.toString();
- }
-
- /**
-- * Print link without positioning in the file.
-+ * Get Html Hyper Link.
- *
- * @param link String name of the file.
-+ * @param where Position of the link in the file. Character '#' is not
-+ * needed.
- * @param label Tag for the link.
-+ * @param title String that describes the link's content for accessibility.
-+ * @param target Target frame.
-+ * @return a content tree for the hyper link.
- */
-- public void printHyperLink(String link, String label) {
-- print(getHyperLink(link, "", label, false));
-+ public Content getHyperLink(String link, String where,
-+ Content label, String title, String target) {
-+ if (where != null && where.length() != 0) {
-+ link += "#" + where;
-+ }
-+ HtmlTree anchor = HtmlTree.A(link, label);
-+ if (title != null && title.length() != 0) {
-+ anchor.addAttr(HtmlAttr.TITLE, title);
-+ }
-+ if (target != null && target.length() != 0) {
-+ anchor.addAttr(HtmlAttr.TARGET, target);
-+ }
-+ return anchor;
-+ }
-+
-+ /**
-+ * Get a hyperlink to a file.
-+ *
-+ * @param link String name of the file
-+ * @param label Label for the link
-+ * @return a content for the hyperlink to the file
-+ */
-+ public Content getHyperLink(String link, Content label) {
-+ return getHyperLink(link, "", label);
- }
-
- /**
-@@ -217,8 +258,8 @@
- * @param label Tag for the link.
- * @return Strign Hyper link.
- */
-- public String getHyperLink(String link, String label) {
-- return getHyperLink(link, "", label, false);
-+ public String getHyperLinkString(String link, String label) {
-+ return getHyperLinkString(link, "", label, false);
- }
-
- /**
-@@ -273,54 +314,32 @@
- * Print the frameset version of the Html file header.
- * Called only when generating an HTML frameset file.
- *
-- * @param title Title of this HTML document.
-+ * @param title Title of this HTML document
-+ * @param noTimeStamp If true, don't print time stamp in header
-+ * @param frameset the frameset to be added to the HTML document
- */
-- public void printFramesetHeader(String title) {
-- printFramesetHeader(title, false);
-- }
--
-- /**
-- * Print the frameset version of the Html file header.
-- * Called only when generating an HTML frameset file.
-- *
-- * @param title Title of this HTML document.
-- * @param noTimeStamp If true, don't print time stamp in header.
-- */
-- public void printFramesetHeader(String title, boolean noTimeStamp) {
-- println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 " +
-- "Frameset//EN\" " +
-- "\"http://www.w3.org/TR/html4/frameset.dtd\">");
-- println("<!--NewPage-->");
-- html();
-- head();
-+ public void printFramesetDocument(String title, boolean noTimeStamp,
-+ Content frameset) {
-+ Content htmlDocType = DocType.Frameset();
-+ Content htmlComment = new Comment(configuration.getText("doclet.New_Page"));
-+ Content head = new HtmlTree(HtmlTag.HEAD);
- if (! noTimeStamp) {
-- print("<!-- Generated by javadoc on ");
-- print(today());
-- println("-->");
-+ Content headComment = new Comment("Generated by javadoc on " + today());
-+ head.addContent(headComment);
- }
- if (configuration.charset.length() > 0) {
-- println("<META http-equiv=\"Content-Type\" content=\"text/html; "
-- + "charset=" + configuration.charset + "\">");
-+ Content meta = HtmlTree.META("Content-Type", "text/html",
-+ configuration.charset);
-+ head.addContent(meta);
- }
-- title();
-- println(title);
-- titleEnd();
-- //Script to set the classFrame if necessary.
-- script();
-- println(" targetPage = \"\" + window.location.search;");
-- println(" if (targetPage != \"\" && targetPage != \"undefined\")");
-- println(" targetPage = targetPage.substring(1);");
-- println(" if (targetPage.indexOf(\":\") != -1)");
-- println(" targetPage = \"undefined\";");
--
-- println(" function loadFrames() {");
-- println(" if (targetPage != \"\" && targetPage != \"undefined\")");
-- println(" top.classFrame.location = top.targetPage;");
-- println(" }");
-- scriptEnd();
-- noScript();
-- noScriptEnd();
-- headEnd();
-+ Content windowTitle = HtmlTree.TITLE(new StringContent(title));
-+ head.addContent(windowTitle);
-+ head.addContent(getFramesetJavaScript());
-+ Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(),
-+ head, frameset);
-+ Content htmlDocument = new HtmlDocument(htmlDocType,
-+ htmlComment, htmlTree);
-+ print(htmlDocument.toString());
- }
-
- /**
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocument.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocument.java
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocument.java
-@@ -0,0 +1,103 @@
-+/*
-+ * Copyright (c) 2010, 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 com.sun.tools.doclets.formats.html.markup;
-+
-+import java.util.*;
-+import com.sun.tools.doclets.internal.toolkit.Content;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+
-+/**
-+ * Class for generating an HTML document for javadoc output.
-+ *
-+ * @author Bhavesh Patel
-+ */
-+public class HtmlDocument extends Content {
-+
-+ private List<Content> docContent = Collections.<Content>emptyList();
-+
-+ /**
-+ * Constructor to construct an HTML document.
-+ *
-+ * @param docType document type for the HTML document
-+ * @param docComment comment for the document
-+ * @param htmlTree HTML tree of the document
-+ */
-+ public HtmlDocument(Content docType, Content docComment, Content htmlTree) {
-+ docContent = new ArrayList<Content>();
-+ addContent(nullCheck(docType));
-+ addContent(nullCheck(docComment));
-+ addContent(nullCheck(htmlTree));
-+ }
-+
-+ /**
-+ * Constructor to construct an HTML document.
-+ *
-+ * @param docType document type for the HTML document
-+ * @param htmlTree HTML tree of the document
-+ */
-+ public HtmlDocument(Content docType, Content htmlTree) {
-+ docContent = new ArrayList<Content>();
-+ addContent(nullCheck(docType));
-+ addContent(nullCheck(htmlTree));
-+ }
-+
-+ /**
-+ * Adds content for the HTML document.
-+ *
-+ * @param htmlContent html content to be added
-+ */
-+ public void addContent(Content htmlContent) {
-+ if (htmlContent.isValid())
-+ docContent.add(htmlContent);
-+ }
-+
-+ /**
-+ * This method is not supported by the class.
-+ *
-+ * @param stringContent string content that needs to be added
-+ * @throws DocletAbortException this method will always throw a
-+ * DocletAbortException because it
-+ * is not supported.
-+ */
-+ public void addContent(String stringContent) {
-+ throw new DocletAbortException();
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public boolean isEmpty() {
-+ return (docContent.isEmpty());
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void write(StringBuilder contentBuilder) {
-+ for (Content c : docContent)
-+ c.write(contentBuilder);
-+ }
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlStyle.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlStyle.java
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlStyle.java
-@@ -0,0 +1,73 @@
-+/*
-+ * Copyright (c) 2010, 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 com.sun.tools.doclets.formats.html.markup;
-+
-+/**
-+ * Enum representing HTML styles. The name map to values in the CSS file.
-+ *
-+ * @author Bhavesh Patel
-+ */
-+public enum HtmlStyle {
-+ aboutLanguage,
-+ altColor,
-+ bar,
-+ block,
-+ blockList,
-+ blockListLast,
-+ bottomNav,
-+ classUseContainer,
-+ colFirst,
-+ colLast,
-+ colOne,
-+ constantValuesContainer,
-+ contentContainer,
-+ description,
-+ details,
-+ header,
-+ horizontal,
-+ footer,
-+ indexContainer,
-+ indexHeader,
-+ inheritance,
-+ legalCopy,
-+ nameValue,
-+ navBarCell1Rev,
-+ navList,
-+ overviewSummary,
-+ packageSummary,
-+ rowColor,
-+ serializedFormContainer,
-+ sourceContainer,
-+ sourceLineNo,
-+ strong,
-+ subNav,
-+ subNavList,
-+ subTitle,
-+ summary,
-+ tabEnd,
-+ title,
-+ topNav;
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTag.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTag.java
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTag.java
-@@ -0,0 +1,126 @@
-+/*
-+ * Copyright (c) 2010, 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 com.sun.tools.doclets.formats.html.markup;
-+
-+/**
-+ * Enum representing HTML tags.
-+ *
-+ * @author Bhavesh Patel
-+ */
-+public enum HtmlTag {
-+ A(BlockType.INLINE, EndTag.END),
-+ BLOCKQUOTE,
-+ BODY(BlockType.OTHER, EndTag.END),
-+ BR(BlockType.INLINE, EndTag.NOEND),
-+ CAPTION,
-+ CENTER,
-+ CODE(BlockType.INLINE, EndTag.END),
-+ DD,
-+ DIV,
-+ DL,
-+ DT,
-+ EM(BlockType.INLINE, EndTag.END),
-+ FONT(BlockType.INLINE, EndTag.END),
-+ FRAME(BlockType.OTHER, EndTag.NOEND),
-+ FRAMESET(BlockType.OTHER, EndTag.END),
-+ H1,
-+ H2,
-+ H3,
-+ H4,
-+ H5,
-+ H6,
-+ HEAD(BlockType.OTHER, EndTag.END),
-+ HR(BlockType.BLOCK, EndTag.NOEND),
-+ HTML(BlockType.OTHER, EndTag.END),
-+ I(BlockType.INLINE, EndTag.END),
-+ IMG(BlockType.INLINE, EndTag.NOEND),
-+ LI,
-+ LINK(BlockType.OTHER, EndTag.NOEND),
-+ MENU,
-+ META(BlockType.OTHER, EndTag.NOEND),
-+ NOFRAMES(BlockType.OTHER, EndTag.END),
-+ NOSCRIPT(BlockType.OTHER, EndTag.END),
-+ OL,
-+ P,
-+ PRE,
-+ SCRIPT(BlockType.OTHER, EndTag.END),
-+ SMALL(BlockType.INLINE, EndTag.END),
-+ SPAN(BlockType.INLINE, EndTag.END),
-+ STRONG(BlockType.INLINE, EndTag.END),
-+ TABLE,
-+ TBODY,
-+ TD,
-+ TH,
-+ TITLE(BlockType.OTHER, EndTag.END),
-+ TR,
-+ TT(BlockType.INLINE, EndTag.END),
-+ UL;
-+
-+ protected final BlockType blockType;
-+ protected final EndTag endTag;
-+ private final String value;
-+
-+ /**
-+ * Enum representing the type of HTML element.
-+ */
-+ protected static enum BlockType {
-+ BLOCK,
-+ INLINE,
-+ OTHER;
-+ }
-+
-+ /**
-+ * Enum representing HTML end tag requirement.
-+ */
-+ protected static enum EndTag {
-+ END,
-+ NOEND;
-+ }
-+
-+ HtmlTag() {
-+ this(BlockType.BLOCK, EndTag.END);
-+ }
-+
-+ HtmlTag(BlockType blockType, EndTag endTag ) {
-+ this.blockType = blockType;
-+ this.endTag = endTag;
-+ this.value = name().toLowerCase();
-+ }
-+
-+ /**
-+ * Returns true if the end tag is required. This is specific to the standard
-+ * doclet and does not exactly resemble the W3C specifications.
-+ *
-+ * @return true if end tag needs to be displayed else return false
-+ */
-+ public boolean endTagRequired() {
-+ return (endTag == EndTag.END);
-+ }
-+
-+ public String toString() {
-+ return value;
-+ }
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTree.java
-@@ -0,0 +1,777 @@
-+/*
-+ * Copyright (c) 2010, 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 com.sun.tools.doclets.formats.html.markup;
-+
-+import java.util.*;
-+import com.sun.tools.doclets.internal.toolkit.Content;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+
-+/**
-+ * Class for generating HTML tree for javadoc output.
-+ *
-+ * @author Bhavesh Patel
-+ */
-+public class HtmlTree extends Content {
-+
-+ private HtmlTag htmlTag;
-+ private Map<HtmlAttr,String> attrs = Collections.<HtmlAttr,String>emptyMap();
-+ private List<Content> content = Collections.<Content>emptyList();
-+ public static final Content EMPTY = new StringContent("");
-+
-+ /**
-+ * Constructor to construct HtmlTree object.
-+ *
-+ * @param tag HTML tag for the HtmlTree object
-+ */
-+ public HtmlTree(HtmlTag tag) {
-+ htmlTag = nullCheck(tag);
-+ }
-+
-+ /**
-+ * Constructor to construct HtmlTree object.
-+ *
-+ * @param tag HTML tag for the HtmlTree object
-+ * @param contents contents to be added to the tree
-+ */
-+ public HtmlTree(HtmlTag tag, Content... contents) {
-+ this(tag);
-+ for (Content content: contents)
-+ addContent(content);
-+ }
-+
-+ /**
-+ * Adds an attribute for the HTML tag.
-+ *
-+ * @param attrName name of the attribute
-+ * @param attrValue value of the attribute
-+ */
-+ public void addAttr(HtmlAttr attrName, String attrValue) {
-+ if (attrs.isEmpty())
-+ attrs = new LinkedHashMap<HtmlAttr,String>();
-+ attrs.put(nullCheck(attrName), nullCheck(attrValue));
-+ }
-+
-+ /**
-+ * Adds a style for the HTML tag.
-+ *
-+ * @param style style to be added
-+ */
-+ public void addStyle(HtmlStyle style) {
-+ addAttr(HtmlAttr.CLASS, style.toString());
-+ }
-+
-+ /**
-+ * Adds content for the HTML tag.
-+ *
-+ * @param tagContent tag content to be added
-+ */
-+ public void addContent(Content tagContent) {
-+ if (tagContent == HtmlTree.EMPTY || tagContent.isValid()) {
-+ if (content.isEmpty())
-+ content = new ArrayList<Content>();
-+ content.add(tagContent);
-+ }
-+ }
-+
-+ /**
-+ * This method adds a string content to the htmltree. If the last content member
-+ * added is a StringContent, append the string to that StringContent or else
-+ * create a new StringContent and add it to the html tree.
-+ *
-+ * @param stringContent string content that needs to be added
-+ */
-+ public void addContent(String stringContent) {
-+ if (!content.isEmpty()) {
-+ Content lastContent = content.get(content.size() - 1);
-+ if (lastContent instanceof StringContent)
-+ lastContent.addContent(stringContent);
-+ else
-+ addContent(new StringContent(stringContent));
-+ }
-+ else
-+ addContent(new StringContent(stringContent));
-+ }
-+
-+ /**
-+ * Generates an HTML anchor tag.
-+ *
-+ * @param ref reference url for the anchor tag
-+ * @param body content for the anchor tag
-+ * @return an HtmlTree object
-+ */
-+ public static HtmlTree A(String ref, Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.A, nullCheck(body));
-+ htmltree.addAttr(HtmlAttr.HREF, nullCheck(ref));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates an HTML anchor tag with name attribute and content.
-+ *
-+ * @param name name for the anchor tag
-+ * @param body content for the anchor tag
-+ * @return an HtmlTree object
-+ */
-+ public static HtmlTree A_NAME(String name, Content body) {
-+ HtmlTree htmltree = HtmlTree.A_NAME(name);
-+ htmltree.addContent(nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates an HTML anchor tag with name attribute.
-+ *
-+ * @param name name for the anchor tag
-+ * @return an HtmlTree object
-+ */
-+ public static HtmlTree A_NAME(String name) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.A);
-+ htmltree.addAttr(HtmlAttr.NAME, nullCheck(name));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a CAPTION tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the CAPTION tag
-+ */
-+ public static HtmlTree CAPTION(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.CAPTION, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a CODE tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the CODE tag
-+ */
-+ public static HtmlTree CODE(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.CODE, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a DD tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the DD tag
-+ */
-+ public static HtmlTree DD(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.DD, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a DL tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the DL tag
-+ */
-+ public static HtmlTree DL(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.DL, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a DIV tag with the style class attributes. It also encloses
-+ * a content.
-+ *
-+ * @param styleClass stylesheet class for the tag
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the DIV tag
-+ */
-+ public static HtmlTree DIV(HtmlStyle styleClass, Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.DIV, nullCheck(body));
-+ if (styleClass != null)
-+ htmltree.addStyle(styleClass);
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a DIV tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the DIV tag
-+ */
-+ public static HtmlTree DIV(Content body) {
-+ return DIV(null, body);
-+ }
-+
-+ /**
-+ * Generates a DT tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the DT tag
-+ */
-+ public static HtmlTree DT(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.DT, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a EM tag with some content.
-+ *
-+ * @param body content to be added to the tag
-+ * @return an HtmlTree object for the EM tag
-+ */
-+ public static HtmlTree EM(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.EM, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a FRAME tag.
-+ *
-+ * @param src the url of the document to be shown in the frame
-+ * @param name specifies the name of the frame
-+ * @param title the title for the frame
-+ * @param scrolling specifies whether to display scrollbars in the frame
-+ * @return an HtmlTree object for the FRAME tag
-+ */
-+ public static HtmlTree FRAME(String src, String name, String title, String scrolling) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.FRAME);
-+ htmltree.addAttr(HtmlAttr.SRC, nullCheck(src));
-+ htmltree.addAttr(HtmlAttr.NAME, nullCheck(name));
-+ htmltree.addAttr(HtmlAttr.TITLE, nullCheck(title));
-+ if (scrolling != null)
-+ htmltree.addAttr(HtmlAttr.SCROLLING, scrolling);
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a Frame tag.
-+ *
-+ * @param src the url of the document to be shown in the frame
-+ * @param name specifies the name of the frame
-+ * @param title the title for the frame
-+ * @return an HtmlTree object for the SPAN tag
-+ */
-+ public static HtmlTree FRAME(String src, String name, String title) {
-+ return FRAME(src, name, title, null);
-+ }
-+
-+ /**
-+ * Generates a FRAMESET tag.
-+ *
-+ * @param cols the size of columns in the frameset
-+ * @param rows the size of rows in the frameset
-+ * @param title the title for the frameset
-+ * @param onload the script to run when the document loads
-+ * @return an HtmlTree object for the FRAMESET tag
-+ */
-+ public static HtmlTree FRAMESET(String cols, String rows, String title, String onload) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.FRAMESET);
-+ if (cols != null)
-+ htmltree.addAttr(HtmlAttr.COLS, cols);
-+ if (rows != null)
-+ htmltree.addAttr(HtmlAttr.ROWS, rows);
-+ htmltree.addAttr(HtmlAttr.TITLE, nullCheck(title));
-+ htmltree.addAttr(HtmlAttr.ONLOAD, nullCheck(onload));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a heading tag (h1 to h6) with the title and style class attributes. It also encloses
-+ * a content.
-+ *
-+ * @param headingTag the heading tag to be generated
-+ * @param printTitle true if title for the tag needs to be printed else false
-+ * @param styleClass stylesheet class for the tag
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the tag
-+ */
-+ public static HtmlTree HEADING(HtmlTag headingTag, boolean printTitle,
-+ HtmlStyle styleClass, Content body) {
-+ HtmlTree htmltree = new HtmlTree(headingTag, nullCheck(body));
-+ if (printTitle)
-+ htmltree.addAttr(HtmlAttr.TITLE, Util.stripHtml(body.toString()));
-+ if (styleClass != null)
-+ htmltree.addStyle(styleClass);
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a heading tag (h1 to h6) with style class attribute. It also encloses
-+ * a content.
-+ *
-+ * @param headingTag the heading tag to be generated
-+ * @param styleClass stylesheet class for the tag
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the tag
-+ */
-+ public static HtmlTree HEADING(HtmlTag headingTag, HtmlStyle styleClass, Content body) {
-+ return HEADING(headingTag, false, styleClass, body);
-+ }
-+
-+ /**
-+ * Generates a heading tag (h1 to h6) with the title attribute. It also encloses
-+ * a content.
-+ *
-+ * @param headingTag the heading tag to be generated
-+ * @param printTitle true if the title for the tag needs to be printed else false
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the tag
-+ */
-+ public static HtmlTree HEADING(HtmlTag headingTag, boolean printTitle, Content body) {
-+ return HEADING(headingTag, printTitle, null, body);
-+ }
-+
-+ /**
-+ * Generates a heading tag (h1 to h6) with some content.
-+ *
-+ * @param headingTag the heading tag to be generated
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the tag
-+ */
-+ public static HtmlTree HEADING(HtmlTag headingTag, Content body) {
-+ return HEADING(headingTag, false, null, body);
-+ }
-+
-+ /**
-+ * Generates an HTML tag with lang attribute. It also adds head and body
-+ * content to the HTML tree.
-+ *
-+ * @param lang language for the HTML document
-+ * @param head head for the HTML tag
-+ * @param body body for the HTML tag
-+ * @return an HtmlTree object for the HTML tag
-+ */
-+ public static HtmlTree HTML(String lang, Content head, Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.HTML, nullCheck(head), nullCheck(body));
-+ htmltree.addAttr(HtmlAttr.LANG, nullCheck(lang));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a I tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the I tag
-+ */
-+ public static HtmlTree I(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.I, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a LI tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the LI tag
-+ */
-+ public static HtmlTree LI(Content body) {
-+ return LI(null, body);
-+ }
-+
-+ /**
-+ * Generates a LI tag with some content.
-+ *
-+ * @param styleClass style for the tag
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the LI tag
-+ */
-+ public static HtmlTree LI(HtmlStyle styleClass, Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.LI, nullCheck(body));
-+ if (styleClass != null)
-+ htmltree.addStyle(styleClass);
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a LINK tag with the rel, type, href and title attributes.
-+ *
-+ * @param rel relevance of the link
-+ * @param type type of link
-+ * @param href the path for the link
-+ * @param title title for the link
-+ * @return an HtmlTree object for the LINK tag
-+ */
-+ public static HtmlTree LINK(String rel, String type, String href, String title) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.LINK);
-+ htmltree.addAttr(HtmlAttr.REL, nullCheck(rel));
-+ htmltree.addAttr(HtmlAttr.TYPE, nullCheck(type));
-+ htmltree.addAttr(HtmlAttr.HREF, nullCheck(href));
-+ htmltree.addAttr(HtmlAttr.TITLE, nullCheck(title));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a META tag with the http-equiv, content and charset attributes.
-+ *
-+ * @param http-equiv http equiv attribute for the META tag
-+ * @param content type of content
-+ * @param charset character set used
-+ * @return an HtmlTree object for the META tag
-+ */
-+ public static HtmlTree META(String httpEquiv, String content, String charSet) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.META);
-+ htmltree.addAttr(HtmlAttr.HTTP_EQUIV, nullCheck(httpEquiv));
-+ htmltree.addAttr(HtmlAttr.CONTENT, nullCheck(content));
-+ htmltree.addAttr(HtmlAttr.CHARSET, nullCheck(charSet));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a META tag with the name and content attributes.
-+ *
-+ * @param name name attribute
-+ * @param content type of content
-+ * @return an HtmlTree object for the META tag
-+ */
-+ public static HtmlTree META(String name, String content) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.META);
-+ htmltree.addAttr(HtmlAttr.NAME, nullCheck(name));
-+ htmltree.addAttr(HtmlAttr.CONTENT, nullCheck(content));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a NOSCRIPT tag with some content.
-+ *
-+ * @param body content of the noscript tag
-+ * @return an HtmlTree object for the NOSCRIPT tag
-+ */
-+ public static HtmlTree NOSCRIPT(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.NOSCRIPT, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a P tag with some content.
-+ *
-+ * @param body content of the Paragraph tag
-+ * @return an HtmlTree object for the P tag
-+ */
-+ public static HtmlTree P(Content body) {
-+ return P(null, body);
-+ }
-+
-+ /**
-+ * Generates a P tag with some content.
-+ *
-+ * @param styleClass style of the Paragraph tag
-+ * @param body content of the Paragraph tag
-+ * @return an HtmlTree object for the P tag
-+ */
-+ public static HtmlTree P(HtmlStyle styleClass, Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.P, nullCheck(body));
-+ if (styleClass != null)
-+ htmltree.addStyle(styleClass);
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a SMALL tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the SMALL tag
-+ */
-+ public static HtmlTree SMALL(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.SMALL, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a STRONG tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the STRONG tag
-+ */
-+ public static HtmlTree STRONG(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.STRONG, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a SPAN tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the SPAN tag
-+ */
-+ public static HtmlTree SPAN(Content body) {
-+ return SPAN(null, body);
-+ }
-+
-+ /**
-+ * Generates a SPAN tag with style class attribute and some content.
-+ *
-+ * @param styleClass style class for the tag
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the SPAN tag
-+ */
-+ public static HtmlTree SPAN(HtmlStyle styleClass, Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.SPAN, nullCheck(body));
-+ if (styleClass != null)
-+ htmltree.addStyle(styleClass);
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a Table tag with border, width and summary attributes and
-+ * some content.
-+ *
-+ * @param border border for the table
-+ * @param width width of the table
-+ * @param summary summary for the table
-+ * @param body content for the table
-+ * @return an HtmlTree object for the TABLE tag
-+ */
-+ public static HtmlTree TABLE(int border, int width, String summary,
-+ Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.TABLE, nullCheck(body));
-+ htmltree.addAttr(HtmlAttr.BORDER, Integer.toString(border));
-+ htmltree.addAttr(HtmlAttr.WIDTH, Integer.toString(width));
-+ htmltree.addAttr(HtmlAttr.SUMMARY, nullCheck(summary));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a Table tag with style class, border, cell padding,
-+ * cellspacing and summary attributes and some content.
-+ *
-+ * @param styleClass style of the table
-+ * @param border border for the table
-+ * @param cellPadding cell padding for the table
-+ * @param cellSpacing cell spacing for the table
-+ * @param summary summary for the table
-+ * @param body content for the table
-+ * @return an HtmlTree object for the TABLE tag
-+ */
-+ public static HtmlTree TABLE(HtmlStyle styleClass, int border, int cellPadding,
-+ int cellSpacing, String summary, Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.TABLE, nullCheck(body));
-+ if (styleClass != null)
-+ htmltree.addStyle(styleClass);
-+ htmltree.addAttr(HtmlAttr.BORDER, Integer.toString(border));
-+ htmltree.addAttr(HtmlAttr.CELLPADDING, Integer.toString(cellPadding));
-+ htmltree.addAttr(HtmlAttr.CELLSPACING, Integer.toString(cellSpacing));
-+ htmltree.addAttr(HtmlAttr.SUMMARY, nullCheck(summary));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a Table tag with border, cell padding,
-+ * cellspacing and summary attributes and some content.
-+ *
-+ * @param border border for the table
-+ * @param cellPadding cell padding for the table
-+ * @param cellSpacing cell spacing for the table
-+ * @param summary summary for the table
-+ * @param body content for the table
-+ * @return an HtmlTree object for the TABLE tag
-+ */
-+ public static HtmlTree TABLE(int border, int cellPadding,
-+ int cellSpacing, String summary, Content body) {
-+ return TABLE(null, border, cellPadding, cellSpacing, summary, body);
-+ }
-+
-+ /**
-+ * Generates a TD tag with style class attribute and some content.
-+ *
-+ * @param styleClass style for the tag
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the TD tag
-+ */
-+ public static HtmlTree TD(HtmlStyle styleClass, Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.TD, nullCheck(body));
-+ if (styleClass != null)
-+ htmltree.addStyle(styleClass);
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a TD tag for an HTML table with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the TD tag
-+ */
-+ public static HtmlTree TD(Content body) {
-+ return TD(null, body);
-+ }
-+
-+ /**
-+ * Generates a TH tag with style class and scope attributes and some content.
-+ *
-+ * @param styleClass style for the tag
-+ * @param scope scope of the tag
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the TH tag
-+ */
-+ public static HtmlTree TH(HtmlStyle styleClass, String scope, Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.TH, nullCheck(body));
-+ if (styleClass != null)
-+ htmltree.addStyle(styleClass);
-+ htmltree.addAttr(HtmlAttr.SCOPE, nullCheck(scope));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a TH tag with scope attribute and some content.
-+ *
-+ * @param scope scope of the tag
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the TH tag
-+ */
-+ public static HtmlTree TH(String scope, Content body) {
-+ return TH(null, scope, body);
-+ }
-+
-+ /**
-+ * Generates a TITLE tag with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the TITLE tag
-+ */
-+ public static HtmlTree TITLE(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.TITLE, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a TR tag for an HTML table with some content.
-+ *
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the TR tag
-+ */
-+ public static HtmlTree TR(Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.TR, nullCheck(body));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * Generates a UL tag with the style class attribute and some content.
-+ *
-+ * @param styleClass style for the tag
-+ * @param body content for the tag
-+ * @return an HtmlTree object for the UL tag
-+ */
-+ public static HtmlTree UL(HtmlStyle styleClass, Content body) {
-+ HtmlTree htmltree = new HtmlTree(HtmlTag.UL, nullCheck(body));
-+ htmltree.addStyle(nullCheck(styleClass));
-+ return htmltree;
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public boolean isEmpty() {
-+ return (!hasContent() && !hasAttrs());
-+ }
-+
-+ /**
-+ * Returns true if the HTML tree has content.
-+ *
-+ * @return true if the HTML tree has content else return false
-+ */
-+ public boolean hasContent() {
-+ return (!content.isEmpty());
-+ }
-+
-+ /**
-+ * Returns true if the HTML tree has attributes.
-+ *
-+ * @return true if the HTML tree has attributes else return false
-+ */
-+ public boolean hasAttrs() {
-+ return (!attrs.isEmpty());
-+ }
-+
-+ /**
-+ * Returns true if the HTML tree has a specific attribute.
-+ *
-+ * @param attrName name of the attribute to check within the HTML tree
-+ * @return true if the HTML tree has the specified attribute else return false
-+ */
-+ public boolean hasAttr(HtmlAttr attrName) {
-+ return (attrs.containsKey(attrName));
-+ }
-+
-+ /**
-+ * Returns true if the HTML tree is valid. This check is more specific to
-+ * standard doclet and not exactly similar to W3C specifications. But it
-+ * ensures HTML validation.
-+ *
-+ * @return true if the HTML tree is valid
-+ */
-+ public boolean isValid() {
-+ switch (htmlTag) {
-+ case A :
-+ return (hasAttr(HtmlAttr.NAME) || (hasAttr(HtmlAttr.HREF) && hasContent()));
-+ case BR :
-+ return (!hasContent() && (!hasAttrs() || hasAttr(HtmlAttr.CLEAR)));
-+ case FRAME :
-+ return (hasAttr(HtmlAttr.SRC) && !hasContent());
-+ case HR :
-+ return (!hasContent());
-+ case IMG :
-+ return (hasAttr(HtmlAttr.SRC) && hasAttr(HtmlAttr.ALT) && !hasContent());
-+ case LINK :
-+ return (hasAttr(HtmlAttr.HREF) && !hasContent());
-+ case META :
-+ return (hasAttr(HtmlAttr.CONTENT) && !hasContent());
-+ default :
-+ return hasContent();
-+ }
-+ }
-+
-+ /**
-+ * Returns true if the element is an inline element.
-+ *
-+ * @return true if the HTML tag is an inline element
-+ */
-+ public boolean isInline() {
-+ return (htmlTag.blockType == HtmlTag.BlockType.INLINE);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void write(StringBuilder contentBuilder) {
-+ if (!isInline() && !endsWithNewLine(contentBuilder))
-+ contentBuilder.append("\n");
-+ String tagString = htmlTag.toString();
-+ contentBuilder.append("<" + tagString);
-+ Iterator<HtmlAttr> iterator = attrs.keySet().iterator();
-+ HtmlAttr key;
-+ String value = "";
-+ while (iterator.hasNext()) {
-+ key = iterator.next();
-+ value = attrs.get(key);
-+ contentBuilder.append(" " + key.toString());
-+ if (!value.isEmpty())
-+ contentBuilder.append("=\"" + value + "\"");
-+ }
-+ contentBuilder.append(">");
-+ for (Content c : content)
-+ c.write(contentBuilder);
-+ if (htmlTag.endTagRequired())
-+ contentBuilder.append("</" + tagString + ">");
-+ if (!isInline())
-+ contentBuilder.append("\n");
-+ }
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlWriter.java
-@@ -55,7 +55,7 @@
- * URL file separator string("/").
- */
- public static final String fileseparator =
-- DirectoryManager.URL_FILE_SEPERATOR;
-+ DirectoryManager.URL_FILE_SEPARATOR;
-
- /**
- * The configuration
-@@ -82,6 +82,72 @@
- */
- protected final String modifierTypeHeader;
-
-+ public final Content overviewLabel;
-+
-+ public final Content defaultPackageLabel;
-+
-+ public final Content packageLabel;
-+
-+ public final Content useLabel;
-+
-+ public final Content prevLabel;
-+
-+ public final Content nextLabel;
-+
-+ public final Content prevclassLabel;
-+
-+ public final Content nextclassLabel;
-+
-+ public final Content summaryLabel;
-+
-+ public final Content detailLabel;
-+
-+ public final Content framesLabel;
-+
-+ public final Content noframesLabel;
-+
-+ public final Content treeLabel;
-+
-+ public final Content classLabel;
-+
-+ public final Content deprecatedLabel;
-+
-+ public final Content deprecatedPhrase;
-+
-+ public final Content allclassesLabel;
-+
-+ public final Content indexLabel;
-+
-+ public final Content helpLabel;
-+
-+ public final Content seeLabel;
-+
-+ public final Content descriptionLabel;
-+
-+ public final Content prevpackageLabel;
-+
-+ public final Content nextpackageLabel;
-+
-+ public final Content packagesLabel;
-+
-+ public final Content methodDetailsLabel;
-+
-+ public final Content annotationTypeDetailsLabel;
-+
-+ public final Content fieldDetailsLabel;
-+
-+ public final Content constructorDetailsLabel;
-+
-+ public final Content enumConstantsDetailsLabel;
-+
-+ public final Content specifiedByLabel;
-+
-+ public final Content overridesLabel;
-+
-+ public final Content descfrmClassLabel;
-+
-+ public final Content descfrmInterfaceLabel;
-+
- /**
- * Constructor.
- *
-@@ -111,6 +177,73 @@
- modifierTypeHeader = configuration.getText("doclet.0_and_1",
- configuration.getText("doclet.Modifier"),
- configuration.getText("doclet.Type"));
-+ overviewLabel = getResource("doclet.Overview");
-+ defaultPackageLabel = new RawHtml(
-+ DocletConstants.DEFAULT_PACKAGE_NAME);
-+ packageLabel = getResource("doclet.Package");
-+ useLabel = getResource("doclet.navClassUse");
-+ prevLabel = getResource("doclet.Prev");
-+ nextLabel = getResource("doclet.Next");
-+ prevclassLabel = getResource("doclet.Prev_Class");
-+ nextclassLabel = getResource("doclet.Next_Class");
-+ summaryLabel = getResource("doclet.Summary");
-+ detailLabel = getResource("doclet.Detail");
-+ framesLabel = getResource("doclet.FRAMES");
-+ noframesLabel = getResource("doclet.NO_FRAMES");
-+ treeLabel = getResource("doclet.Tree");
-+ classLabel = getResource("doclet.Class");
-+ deprecatedLabel = getResource("doclet.navDeprecated");
-+ deprecatedPhrase = getResource("doclet.Deprecated");
-+ allclassesLabel = getResource("doclet.All_Classes");
-+ indexLabel = getResource("doclet.Index");
-+ helpLabel = getResource("doclet.Help");
-+ seeLabel = getResource("doclet.See");
-+ descriptionLabel = getResource("doclet.Description");
-+ prevpackageLabel = getResource("doclet.Prev_Package");
-+ nextpackageLabel = getResource("doclet.Next_Package");
-+ packagesLabel = getResource("doclet.Packages");
-+ methodDetailsLabel = getResource("doclet.Method_Detail");
-+ annotationTypeDetailsLabel = getResource("doclet.Annotation_Type_Member_Detail");
-+ fieldDetailsLabel = getResource("doclet.Field_Detail");
-+ constructorDetailsLabel = getResource("doclet.Constructor_Detail");
-+ enumConstantsDetailsLabel = getResource("doclet.Enum_Constant_Detail");
-+ specifiedByLabel = getResource("doclet.Specified_By");
-+ overridesLabel = getResource("doclet.Overrides");
-+ descfrmClassLabel = getResource("doclet.Description_From_Class");
-+ descfrmInterfaceLabel = getResource("doclet.Description_From_Interface");
-+ }
-+
-+ /**
-+ * Get the configuration string as a content.
-+ *
-+ * @param key the key to look for in the configuration file
-+ * @return a content tree for the text
-+ */
-+ public Content getResource(String key) {
-+ return new StringContent(configuration.getText(key));
-+ }
-+
-+ /**
-+ * Get the configuration string as a content.
-+ *
-+ * @param key the key to look for in the configuration file
-+ * @param a1 string argument added to configuration text
-+ * @return a content tree for the text
-+ */
-+ public Content getResource(String key, String a1) {
-+ return new RawHtml(configuration.getText(key, a1));
-+ }
-+
-+ /**
-+ * Get the configuration string as a content.
-+ *
-+ * @param key the key to look for in the configuration file
-+ * @param a1 string argument added to configuration text
-+ * @param a2 string argument added to configuration text
-+ * @return a content tree for the text
-+ */
-+ public Content getResource(String key, String a1, String a2) {
-+ return new RawHtml(configuration.getText(key, a1, a2));
- }
-
- /**
-@@ -146,6 +279,48 @@
- }
-
- /**
-+ * Returns an HtmlTree for the SCRIPT tag.
-+ *
-+ * @return an HtmlTree for the SCRIPT tag
-+ */
-+ protected HtmlTree getWinTitleScript(){
-+ HtmlTree script = new HtmlTree(HtmlTag.SCRIPT);
-+ if(winTitle != null && winTitle.length() > 0) {
-+ script.addAttr(HtmlAttr.TYPE, "text/javascript");
-+ String scriptCode = "<!--\n" +
-+ " if (location.href.indexOf('is-external=true') == -1) {\n" +
-+ " parent.document.title=\"" + winTitle + "\";\n" +
-+ " }\n" +
-+ "//-->\n";
-+ RawHtml scriptContent = new RawHtml(scriptCode);
-+ script.addContent(scriptContent);
-+ }
-+ return script;
-+ }
-+
-+ /**
-+ * Returns a content tree for the SCRIPT tag for the main page(index.html).
-+ *
-+ * @return a content for the SCRIPT tag
-+ */
-+ protected Content getFramesetJavaScript(){
-+ HtmlTree script = new HtmlTree(HtmlTag.SCRIPT);
-+ script.addAttr(HtmlAttr.TYPE, "text/javascript");
-+ String scriptCode = "\n targetPage = \"\" + window.location.search;\n" +
-+ " if (targetPage != \"\" && targetPage != \"undefined\")\n" +
-+ " targetPage = targetPage.substring(1);\n" +
-+ " if (targetPage.indexOf(\":\") != -1)\n" +
-+ " targetPage = \"undefined\";\n" +
-+ " function loadFrames() {\n" +
-+ " if (targetPage != \"\" && targetPage != \"undefined\")\n" +
-+ " top.classFrame.location = top.targetPage;\n" +
-+ " }\n";
-+ RawHtml scriptContent = new RawHtml(scriptCode);
-+ script.addContent(scriptContent);
-+ return script;
-+ }
-+
-+ /**
- * Print the Javascript &lt;SCRIPT&gt; start tag with its type
- * attribute.
- */
-@@ -204,6 +379,28 @@
- }
-
- /**
-+ * Returns an HtmlTree for the BODY tag.
-+ *
-+ * @param includeScript set true if printing windowtitle script
-+ * @param title title for the window
-+ * @return an HtmlTree for the BODY tag
-+ */
-+ public HtmlTree getBody(boolean includeScript, String title) {
-+ HtmlTree body = new HtmlTree(HtmlTag.BODY);
-+ // Set window title string which is later printed
-+ this.winTitle = title;
-+ // Don't print windowtitle script for overview-frame, allclasses-frame
-+ // and package-frame
-+ if (includeScript) {
-+ body.addContent(getWinTitleScript());
-+ Content noScript = HtmlTree.NOSCRIPT(
-+ HtmlTree.DIV(getResource("doclet.No_Script_Message")));
-+ body.addContent(noScript);
-+ }
-+ return body;
-+ }
-+
-+ /**
- * Print &lt;/BODY&gt; tag. Add a newline character at the end.
- */
- public void bodyEnd() {
-@@ -228,6 +425,15 @@
- title();
- }
-
-+ /**
-+ * Returns an HtmlTree for the TITLE tag.
-+ *
-+ * @return an HtmlTree for the TITLE tag
-+ */
-+ public HtmlTree getTitle() {
-+ HtmlTree title = HtmlTree.TITLE(new StringContent(winTitle));
-+ return title;
-+ }
-
- /**
- * Print &lt;/TITLE&gt; tag. Add a newline character at the end.
-@@ -519,17 +725,17 @@
- }
-
- /**
-- * Return, text passed, with Italics &lt;I&gt; and &lt;/I&gt; tags, surrounding it.
-- * So if the text passed is "Hi", then string returned will be "&lt;I&gt;Hi&lt;/I&gt;".
-+ * Return, text passed, with Italics &lt;i&gt; and &lt;/i&gt; tags, surrounding it.
-+ * So if the text passed is "Hi", then string returned will be "&lt;i&gt;Hi&lt;/i&gt;".
- *
- * @param text String to be printed in between &lt;I&gt; and &lt;/I&gt; tags.
- */
- public String italicsText(String text) {
-- return "<I>" + text + "</I>";
-+ return "<i>" + text + "</i>";
- }
-
- public String codeText(String text) {
-- return "<CODE>" + text + "</CODE>";
-+ return "<code>" + text + "</code>";
- }
-
- /**
-@@ -540,6 +746,13 @@
- }
-
- /**
-+ * Return "&#38;nbsp;", non-breaking space.
-+ */
-+ public Content getSpace() {
-+ return RawHtml.nbsp;
-+ }
-+
-+ /**
- * Print &lt;DL&gt; tag. Add a newline character at the end.
- */
- public void dl() {
-@@ -1182,21 +1395,21 @@
- }
-
- /**
-- * Get the "&lt;CODE&gt;" string.
-+ * Get the "&lt;code&gt;" string.
- *
-- * @return String Return String "&lt;CODE>";
-+ * @return String Return String "&lt;code&gt;";
- */
- public String getCode() {
-- return "<CODE>";
-+ return "<code>";
- }
-
- /**
-- * Get the "&lt;/CODE&gt;" string.
-+ * Get the "&lt;/code&gt;" string.
- *
-- * @return String Return String "&lt;/CODE&gt;";
-+ * @return String Return String "&lt;/code&gt;";
- */
- public String getCodeEnd() {
-- return "</CODE>";
-+ return "</code>";
- }
-
- /**
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/RawHtml.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/RawHtml.java
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/RawHtml.java
-@@ -0,0 +1,88 @@
-+/*
-+ * Copyright (c) 2010, 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 com.sun.tools.doclets.formats.html.markup;
-+
-+import com.sun.tools.doclets.internal.toolkit.Content;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+
-+/**
-+ * Class for generating raw HTML content to be added to HTML pages of javadoc output.
-+ *
-+ * @author Bhavesh Patel
-+ */
-+public class RawHtml extends Content{
-+
-+ private String rawHtmlContent;
-+
-+ public static final Content nbsp = new RawHtml("&nbsp;");
-+
-+ /**
-+ * Constructor to construct a RawHtml object.
-+ *
-+ * @param rawHtml raw HTML text to be added
-+ */
-+ public RawHtml(String rawHtml) {
-+ rawHtmlContent = nullCheck(rawHtml);
-+ }
-+
-+ /**
-+ * This method is not supported by the class.
-+ *
-+ * @param content content that needs to be added
-+ * @throws DocletAbortException this method will always throw a
-+ * DocletAbortException because it
-+ * is not supported.
-+ */
-+ public void addContent(Content content) {
-+ throw new DocletAbortException();
-+ }
-+
-+ /**
-+ * This method is not supported by the class.
-+ *
-+ * @param stringContent string content that needs to be added
-+ * @throws DocletAbortException this method will always throw a
-+ * DocletAbortException because it
-+ * is not supported.
-+ */
-+ public void addContent(String stringContent) {
-+ throw new DocletAbortException();
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public boolean isEmpty() {
-+ return rawHtmlContent.isEmpty();
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void write(StringBuilder contentBuilder) {
-+ contentBuilder.append(rawHtmlContent);
-+ }
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/markup/StringContent.java b/src/share/classes/com/sun/tools/doclets/formats/html/markup/StringContent.java
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/markup/StringContent.java
-@@ -0,0 +1,99 @@
-+/*
-+ * Copyright (c) 2010, 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 com.sun.tools.doclets.formats.html.markup;
-+
-+import com.sun.tools.doclets.internal.toolkit.Content;
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+
-+/**
-+ * Class for generating string content for HTML tags of javadoc output.
-+ *
-+ * @author Bhavesh Patel
-+ */
-+public class StringContent extends Content{
-+
-+ private StringBuilder stringContent;
-+
-+ /**
-+ * Constructor to construct StringContent object.
-+ */
-+ public StringContent() {
-+ stringContent = new StringBuilder();
-+ }
-+
-+ /**
-+ * Constructor to construct StringContent object with some initial content.
-+ *
-+ * @param initialContent initial content for the object
-+ */
-+ public StringContent(String initialContent) {
-+ stringContent = new StringBuilder(
-+ Util.escapeHtmlChars(nullCheck(initialContent)));
-+ }
-+
-+ /**
-+ * This method is not supported by the class.
-+ *
-+ * @param content content that needs to be added
-+ * @throws DocletAbortException this method will always throw a
-+ * DocletAbortException because it
-+ * is not supported.
-+ */
-+ public void addContent(Content content) {
-+ throw new DocletAbortException();
-+ }
-+
-+ /**
-+ * Adds content for the StringContent object. The method escapes
-+ * HTML characters for the string content that is added.
-+ *
-+ * @param strContent string content to be added
-+ */
-+ public void addContent(String strContent) {
-+ stringContent.append(Util.escapeHtmlChars(nullCheck(strContent)));
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public boolean isEmpty() {
-+ return (stringContent.length() == 0);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String toString() {
-+ return stringContent.toString();
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public void write(StringBuilder contentBuilder) {
-+ contentBuilder.append(stringContent);
-+ }
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties b/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties
---- langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties
-+++ langtools/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard.properties
-@@ -43,6 +43,7 @@
- doclet.Window_Split_Index={0}-Index
- doclet.Help=Help
- doclet.Skip_navigation_links=Skip navigation links
-+doclet.New_Page=NewPage
- doclet.None=None
- doclet.CLASSES=CLASSES
- doclet.MEMBERS=MEMBERS
-@@ -53,7 +54,7 @@
- doclet.Window_Deprecated_List=Deprecated List
- doclet.Note_0_is_deprecated=Note: {0} is deprecated.
- doclet.Overrides=Overrides:
--doclet.in_class={0} in class {1}
-+doclet.in_class=in class
- doclet.0_Fields_and_Methods=&quot;{0}&quot; Fields and Methods
- doclet.Index_of_Fields_and_Methods=Index of Fields and Methods
- doclet.Static_variable_in=Static variable in {0}
-@@ -102,7 +103,7 @@
- doclet.Package_Description=Package {0} Description
- doclet.Description=Description
- doclet.Specified_By=Specified by:
--doclet.in_interface={0} in interface {1}
-+doclet.in_interface=in interface
- doclet.Subclasses=Direct Known Subclasses:
- doclet.Subinterfaces=All Known Subinterfaces:
- doclet.Implementing_Classes=All Known Implementing Classes:
-@@ -120,18 +121,20 @@
- doclet.Frame_Alert=Frame Alert
- doclet.Overview-Member-Frame=Overview Member Frame
- doclet.Frame_Warning_Message=This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
-+doclet.No_Script_Message=JavaScript is disabled on your browser.
- doclet.Non_Frame_Version=Non-frame version.
- doclet.Frame_Version=Frame version
- doclet.Link_To=Link to
- doclet.Following_From_Class=Following copied from class: {0}
- doclet.Following_From_Interface=Following copied from interface: {0}
--doclet.Description_From_Interface=Description copied from interface: {0}
--doclet.Description_From_Class=Description copied from class: {0}
-+doclet.Description_From_Interface=Description copied from interface:
-+doclet.Description_From_Class=Description copied from class:
- doclet.Standard_doclet_invoked=Standard doclet invoked...
- doclet.No_Non_Deprecated_Classes_To_Document=No non-deprecated classes found to document.
- doclet.Interfaces_Italic=Interfaces (italic)
- doclet.Enclosing_Class=Enclosing class:
- doclet.Enclosing_Interface=Enclosing interface:
-+doclet.Window_Source_title=Source code
- doclet.Help_title=API Help
- doclet.Window_Help_title=API Help
- doclet.Help_line_1=How This API Document Is Organized
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeOptionalMemberWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeOptionalMemberWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeOptionalMemberWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeOptionalMemberWriter.java
-@@ -35,14 +35,18 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
- public interface AnnotationTypeOptionalMemberWriter extends
-- AnnotationTypeRequiredMemberWriter {
-+ AnnotationTypeRequiredMemberWriter {
-
- /**
-- * Write the default value documentation.
-+ * Add the the default value documentation.
-+ *
-+ * @param member the member being documented
-+ * @param annotationDocTree content tree to which the default value will be added
- */
-- public void writeDefaultValueInfo(MemberDoc member);
-+ public void addDefaultValueInfo(MemberDoc member, Content annotationDocTree);
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeRequiredMemberWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeRequiredMemberWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeRequiredMemberWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeRequiredMemberWriter.java
-@@ -36,67 +36,79 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
- public interface AnnotationTypeRequiredMemberWriter {
-
- /**
-- * Write the header for the member documentation.
-+ * Add the annotation type details tree header.
- *
-- * @param classDoc the annotation type that the members belong to.
-- * @param header the header to write.
-+ * @param classDoc the annotation type being documented
-+ * @param memberDetailsTree the content tree representing member details
- */
-- public void writeHeader(ClassDoc classDoc, String header);
-+ public void addAnnotationDetailsTreeHeader(ClassDoc classDoc,
-+ Content memberDetailsTree);
-
- /**
-- * Write the member header for the given member.
-+ * Get the annotation type documentation tree header.
- *
-- * @param member the member being documented.
-- * @param isFirst the flag to indicate whether or not the member is
-- * the first to be documented.
-+ * @param member the annotation type being documented
-+ * @param annotationDetailsTree the content tree representing annotation type details
-+ * @return content tree for the annotation type documentation header
- */
-- public void writeMemberHeader(MemberDoc member, boolean isFirst);
-+ public Content getAnnotationDocTreeHeader(MemberDoc member,
-+ Content annotationDetailsTree);
-
- /**
-- * Write the signature for the given member.
-+ * Get the annotation type details tree.
- *
-- * @param member the member being documented.
-+ * @param annotationDetailsTree the content tree representing annotation type details
-+ * @return content tree for the annotation type details
- */
-- public void writeSignature(MemberDoc member);
-+ public Content getAnnotationDetails(Content annotationDetailsTree);
-
- /**
-- * Write the deprecated output for the given member.
-+ * Get the annotation type documentation.
- *
-- * @param member the member being documented.
-+ * @param annotationDocTree the content tree representing annotation type documentation
-+ * @param isLastContent true if the content to be added is the last content
-+ * @return content tree for the annotation type documentation
- */
-- public void writeDeprecated(MemberDoc member);
-+ public Content getAnnotationDoc(Content annotationDocTree, boolean isLastContent);
-
- /**
-- * Write the comments for the given member.
-+ * Get the signature for the given member.
- *
-- * @param member the member being documented.
-+ * @param member the member being documented
-+ * @return content tree for the annotation type signature
- */
-- public void writeComments(MemberDoc member);
-+ public Content getSignature(MemberDoc member);
-
- /**
-- * Write the tag output for the given member.
-+ * Add the deprecated output for the given member.
- *
-- * @param member the member being documented.
-+ * @param member the member being documented
-+ * @param annotationDocTree content tree to which the deprecated information will be added
- */
-- public void writeTags(MemberDoc member);
-+ public void addDeprecated(MemberDoc member, Content annotationDocTree);
-
- /**
-- * Write the member footer.
-+ * Add the comments for the given member.
-+ *
-+ * @param member the member being documented
-+ * @param annotationDocTree the content tree to which the comments will be added
- */
-- public void writeMemberFooter();
-+ public void addComments(MemberDoc member, Content annotationDocTree);
-
- /**
-- * Write the footer for the member documentation.
-+ * Add the tags for the given member.
- *
-- * @param classDoc the class that the member belong to.
-+ * @param member the member being documented
-+ * @param annotationDocTree the content tree to which the tags will be added
- */
-- public void writeFooter(ClassDoc classDoc);
-+ public void addTags(MemberDoc member, Content annotationDocTree);
-
- /**
- * Close the writer.
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/AnnotationTypeWriter.java
-@@ -37,43 +37,122 @@
- * Do not use it as an API.
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
- public interface AnnotationTypeWriter {
-
- /**
-- * Write the header of the page.
-- * @param header the header to write.
-+ * Get the header of the page.
-+ *
-+ * @param header the header string to write
-+ * @return a content tree for the header documentation
- */
-- public void writeHeader(String header);
-+ public Content getHeader(String header);
-
- /**
-- * Write the signature of the current annotation type.
-+ * Get the annotation content header.
- *
-- * @param modifiers the modifiers for the signature.
-+ * @return annotation content header that needs to be added to the documentation
- */
-- public void writeAnnotationTypeSignature(String modifiers);
-+ public Content getAnnotationContentHeader();
-+
-+ /**
-+ * Get the annotation information tree header.
-+ *
-+ * @return annotation information tree header that needs to be added to the documentation
-+ */
-+ public Content getAnnotationInfoTreeHeader();
-+
-+ /**
-+ * Get the annotation information.
-+ *
-+ * @param annotationInfoTree content tree containing the annotation information
-+ * @return a content tree for the annotation
-+ */
-+ public Content getAnnotationInfo(Content annotationInfoTree);
-+
-+ /**
-+ * Add the signature of the current annotation type.
-+ *
-+ * @param modifiers the modifiers for the signature
-+ * @param annotationInfoTree the annotation content tree to which the signature will be added
-+ */
-+ public void addAnnotationTypeSignature(String modifiers, Content annotationInfoTree);
-
- /**
- * Build the annotation type description.
-+ *
-+ * @param annotationInfoTree content tree to which the description will be added
- */
-- public void writeAnnotationTypeDescription();
-+ public void addAnnotationTypeDescription(Content annotationInfoTree);
-
- /**
-- * Write the tag information for the current annotation type.
-+ * Add the tag information for the current annotation type.
-+ *
-+ * @param annotationInfoTree content tree to which the tag information will be added
- */
-- public void writeAnnotationTypeTagInfo();
-+ public void addAnnotationTypeTagInfo(Content annotationInfoTree);
-
- /**
-- * If this annotation type is deprecated, write the appropriate information.
-+ * If this annotation is deprecated, add the appropriate information.
-+ *
-+ * @param annotationInfoTree content tree to which the deprecated information will be added
- */
-- public void writeAnnotationTypeDeprecationInfo();
-+ public void addAnnotationTypeDeprecationInfo (Content annotationInfoTree);
-
- /**
-- * Write the footer of the page.
-+ * Add the annotation type details marker.
-+ *
-+ * @param memberDetails the content tree representing member details marker
- */
-- public void writeFooter();
-+ public void addAnnotationDetailsMarker(Content memberDetails);
-+
-+ /**
-+ * Get the member tree header for the annotation type.
-+ *
-+ * @return a content tree for the member tree header
-+ */
-+ public Content getMemberTreeHeader();
-+
-+ /**
-+ * Get the member tree.
-+ *
-+ * @param memberTree the content tree that will be modified and returned
-+ * @return a content tree for the member
-+ */
-+ public Content getMemberTree(Content memberTree);
-+
-+ /**
-+ * Get the member summary tree.
-+ *
-+ * @param memberTree the content tree that will be used to build the summary tree
-+ * @return a content tree for the member summary
-+ */
-+ public Content getMemberSummaryTree(Content memberTree);
-+
-+ /**
-+ * Get the member details tree.
-+ *
-+ * @param memberTree the content tree that will be used to build the details tree
-+ * @return a content tree for the member details
-+ */
-+ public Content getMemberDetailsTree(Content memberTree);
-+
-+ /**
-+ * Add the footer of the page.
-+ *
-+ * @param contentTree content tree to which the footer will be added
-+ */
-+ public void addFooter(Content contentTree);
-+
-+ /**
-+ * Print the document.
-+ *
-+ * @param contentTree content tree that will be printed as a document
-+ */
-+ public void printDocument(Content contentTree);
-
- /**
- * Close the writer.
-@@ -86,10 +165,4 @@
- * @return the AnnotationTypeDoc being documented.
- */
- public AnnotationTypeDoc getAnnotationTypeDoc();
--
-- /**
-- * Perform any operations that are necessary when the member summary
-- * finished building.
-- */
-- public void completeMemberSummaryBuild();
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/ClassWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/ClassWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ClassWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ClassWriter.java
-@@ -37,85 +37,149 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
- public interface ClassWriter {
-
- /**
-- * Write the header of the page.
-- * @param header the header to write.
-+ * Get the header of the page.
-+ *
-+ * @param header the header string to write
-+ * @return header content that needs to be added to the documentation
- */
-- public void writeHeader(String header);
-+ public Content getHeader(String header);
-
- /**
-- * Write the class tree documentation.
-+ * Get the class content header.
-+ *
-+ * @return class content header that needs to be added to the documentation
- */
-- public void writeClassTree();
-+ public Content getClassContentHeader();
-
- /**
-- * Write all implemented interfaces if this is a class.
-+ * Add the class tree documentation.
-+ *
-+ * @param classContentTree class content tree to which the documentation will be added
- */
-- public void writeImplementedInterfacesInfo();
-+ public void addClassTree(Content classContentTree);
-
- /**
-- * Write all super interfaces if this is an interface.
-+ * Get the class information tree header.
-+ *
-+ * @return class informaion tree header that needs to be added to the documentation
- */
-- public void writeSuperInterfacesInfo();
-+ public Content getClassInfoTreeHeader();
-
- /**
-- * Write the type parameter information.
-+ * Add the type parameter information.
-+ *
-+ * @param classInfoTree content tree to which the documentation will be added
- */
-- public void writeTypeParamInfo();
-+ public void addTypeParamInfo(Content classInfoTree);
-
- /**
-- * Write all the classes that extend this one.
-+ * Add all super interfaces if this is an interface.
-+ *
-+ * @param classInfoTree content tree to which the documentation will be added
- */
-- public void writeSubClassInfo();
-+ public void addSuperInterfacesInfo(Content classInfoTree);
-
- /**
-- * Write all the interfaces that extend this one.
-+ * Add all implemented interfaces if this is a class.
-+ *
-+ * @param classInfoTree content tree to which the documentation will be added
- */
-- public void writeSubInterfacesInfo();
-+ public void addImplementedInterfacesInfo(Content classInfoTree);
-
- /**
-- * If this is an interface, write all classes that implement this
-- * interface.
-+ * Add all the classes that extend this one.
-+ *
-+ * @param classInfoTree content tree to which the documentation will be added
- */
-- public void writeInterfaceUsageInfo ();
-+ public void addSubClassInfo(Content classInfoTree);
-
- /**
-- * If this is an inner class or interface, write the enclosing class or
-- * interface.
-+ * Add all the interfaces that extend this one.
-+ *
-+ * @param classInfoTree content tree to which the documentation will be added
- */
-- public void writeNestedClassInfo ();
-+ public void addSubInterfacesInfo(Content classInfoTree);
-
- /**
-- * If this class is deprecated, write the appropriate information.
-+ * If this is an interface, add all classes that implement this
-+ * interface.
-+ *
-+ * @param classInfoTree content tree to which the documentation will be added
- */
-- public void writeClassDeprecationInfo ();
-+ public void addInterfaceUsageInfo(Content classInfoTree);
-
- /**
-- * Write the signature of the current class.
-+ * If this is an inner class or interface, add the enclosing class or
-+ * interface.
- *
-- * @param modifiers the modifiers for the signature.
-+ * @param classInfoTree content tree to which the documentation will be added
- */
-- public void writeClassSignature(String modifiers);
-+ public void addNestedClassInfo (Content classInfoTree);
-+
-+ /**
-+ * Get the class information.
-+ *
-+ * @param classInfoTree content tree conatining the class information
-+ * @return a content tree for the class
-+ */
-+ public Content getClassInfo(Content classInfoTree);
-+
-+ /**
-+ * If this class is deprecated, add the appropriate information.
-+ *
-+ * @param classInfoTree content tree to which the documentation will be added
-+ */
-+ public void addClassDeprecationInfo (Content classInfoTree);
-+
-+ /**
-+ * Add the signature of the current class content tree.
-+ *
-+ * @param modifiers the modifiers for the signature
-+ * @param classInfoTree the class content tree to which the signature will be added
-+ */
-+ public void addClassSignature(String modifiers, Content classInfoTree);
-
- /**
- * Build the class description.
-+ *
-+ * @param classInfoTree content tree to which the documentation will be added
- */
-- public void writeClassDescription();
-+ public void addClassDescription(Content classInfoTree);
-
- /**
-- * Write the tag information for the current class.
-+ * Add the tag information for the current class.
-+ *
-+ * @param classInfoTree content tree to which the tag information will be added
- */
-- public void writeClassTagInfo();
-+ public void addClassTagInfo(Content classInfoTree);
-
- /**
-- * Write the footer of the page.
-+ * Get the member tree header for the class.
-+ *
-+ * @return a content tree for the member tree header
- */
-- public void writeFooter();
-+ public Content getMemberTreeHeader();
-+
-+ /**
-+ * Add the footer of the page.
-+ *
-+ * @param contentTree content tree to which the footer will be added
-+ */
-+ public void addFooter(Content contentTree);
-+
-+ /**
-+ * Print the document.
-+ *
-+ * @param contentTree content tree that will be printed as a document
-+ */
-+ public void printDocument(Content contentTree);
-
- /**
- * Close the writer.
-@@ -130,8 +194,18 @@
- public ClassDoc getClassDoc();
-
- /**
-- * Perform any operations that are necessary when the member summary
-- * finished building.
-+ * Get the member summary tree.
-+ *
-+ * @param memberTree the content tree used to build the summary tree
-+ * @return a content tree for the member summary
- */
-- public void completeMemberSummaryBuild();
-+ public Content getMemberSummaryTree(Content memberTree);
-+
-+ /**
-+ * Get the member details tree.
-+ *
-+ * @param memberTree the content tree used to build the details tree
-+ * @return a content tree for the member details
-+ */
-+ public Content getMemberDetailsTree(Content memberTree);
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstantsSummaryWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstantsSummaryWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstantsSummaryWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstantsSummaryWriter.java
-@@ -25,9 +25,9 @@
-
- package com.sun.tools.doclets.internal.toolkit;
-
--import com.sun.javadoc.*;
- import java.util.*;
- import java.io.*;
-+import com.sun.javadoc.*;
-
- /**
- * The interface for writing constants summary output.
-@@ -37,38 +37,34 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
- public interface ConstantsSummaryWriter {
-
- /**
-- * Write the header for the summary.
-- */
-- public abstract void writeHeader();
--
-- /**
-- * Write the footer for the summary.
-- */
-- public abstract void writeFooter();
--
-- /**
- * Close the writer.
- */
- public abstract void close() throws IOException;
-
- /**
-- * Write the header for the index.
-+ * Get the header for the constant summary documentation.
-+ *
-+ * @return header that needs to be added to the documentation
- */
-- public abstract void writeContentsHeader();
-+ public abstract Content getHeader();
-
- /**
-- * Write the footer for the index.
-+ * Get the header for the constant content list.
-+ *
-+ * @return content header that needs to be added to the documentation
- */
-- public abstract void writeContentsFooter();
-+ public abstract Content getContentsHeader();
-
- /**
-- * Add the given package name to the index.
-+ * Adds the given package name link to the constant content list tree.
-+ *
- * @param pkg the {@link PackageDoc} to index.
- * @param parsedPackageName the parsed package name. We only Write the
- * first 2 directory levels of the package
-@@ -77,38 +73,70 @@
- * @param WriteedPackageHeaders the set of package headers that have already
- * been indexed. We don't want to index
- * something more than once.
-+ * @param contentListTree the content tree to which the link will be added
- */
-- public abstract void writeLinkToPackageContent(PackageDoc pkg, String parsedPackageName,
-- Set WriteedPackageHeaders);
-+ public abstract void addLinkToPackageContent(PackageDoc pkg, String parsedPackageName,
-+ Set<String> WriteedPackageHeaders, Content contentListTree);
-
- /**
-- * Write the given package name.
-- * @param pkg the {@link PackageDoc} to index.
-- * @param parsedPackageName the parsed package name. We only Write the
-- * first 2 directory levels of the package
-- * name. For example, java.lang.ref would be
-- * indexed as java.lang.*.
-+ * Get the content list to be added to the documentation tree.
-+ *
-+ * @param contentListTree the content that will be added to the list
-+ * @return content list that will be added to the documentation tree
- */
-- public abstract void writePackageName(PackageDoc pkg,
-- String parsedPackageName);
-+ public abstract Content getContentsList(Content contentListTree);
-
- /**
-- * Write the heading for the current table of constants for a given class.
-- * @param cd the class whose constants are being documented.
-+ * Get the constant summaries for the document.
-+ *
-+ * @return constant summaries header to be added to the documentation tree
- */
-- public abstract void writeConstantMembersHeader(ClassDoc cd);
-+ public abstract Content getConstantSummaries();
-
- /**
-- * Document the given constants.
-+ * Adds the given package name.
-+ *
-+ * @param pkg the {@link PackageDoc} to index.
-+ * @param parsedPackageName the parsed package name. We only Write the
-+ * first 2 directory levels of the package
-+ * name. For example, java.lang.ref would be
-+ * indexed as java.lang.*.
-+ * @param summariesTree the documentation tree to which the package name will
-+ * be written
-+ */
-+ public abstract void addPackageName(PackageDoc pkg,
-+ String parsedPackageName, Content summariesTree);
-+
-+ /**
-+ * Get the class summary header for the constants summary.
-+ *
-+ * @return the header content for the class constants summary
-+ */
-+ public abstract Content getClassConstantHeader();
-+
-+ /**
-+ * Adds the constant member table to the documentation tree.
-+ *
- * @param cd the class whose constants are being documented.
- * @param fields the constants being documented.
-+ * @param classConstantTree the documentation tree to which theconstant member
-+ * table content will be added
- */
-- public abstract void writeConstantMembers(ClassDoc cd, List fields);
-+ public abstract void addConstantMembers(ClassDoc cd, List<FieldDoc> fields,
-+ Content classConstantTree);
-
- /**
-- * Document the given constants.
-- * @param cd the class whose constants are being documented.
-+ * Adds the footer for the summary documentation.
-+ *
-+ * @param contentTree content tree to which the footer will be added
- */
-- public abstract void writeConstantMembersFooter(ClassDoc cd);
-+ public abstract void addFooter(Content contentTree);
-+
-+ /**
-+ * Print the constants summary document.
-+ *
-+ * @param contentTree content tree which should be printed
-+ */
-+ public abstract void printDocument(Content contentTree);
-
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstructorWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstructorWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstructorWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/ConstructorWriter.java
-@@ -36,67 +36,80 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
- public interface ConstructorWriter {
-
- /**
-- * Write the header for the constructor documentation.
-+ * Get the constructor details tree header.
- *
-- * @param classDoc the class that the constructors belong to.
-- * @param header the header to write.
-+ * @param classDoc the class being documented
-+ * @param memberDetailsTree the content tree representing member details
-+ * @return content tree for the constructor details header
- */
-- public void writeHeader(ClassDoc classDoc, String header);
-+ public Content getConstructorDetailsTreeHeader(ClassDoc classDoc,
-+ Content memberDetailsTree);
-
- /**
-- * Write the constructor header for the given constructor.
-+ * Get the constructor documentation tree header.
- *
-- * @param constructor the constructor being documented.
-- * @param isFirst the flag to indicate whether or not the constructor is the
-- * first to be documented.
-+ * @param constructor the constructor being documented
-+ * @param constructorDetailsTree the content tree representing constructor details
-+ * @return content tree for the constructor documentation header
- */
-- public void writeConstructorHeader(ConstructorDoc constructor, boolean isFirst);
-+ public Content getConstructorDocTreeHeader(ConstructorDoc constructor,
-+ Content constructorDetailsTree);
-
- /**
-- * Write the signature for the given constructor.
-+ * Get the signature for the given constructor.
- *
-- * @param constructor the constructor being documented.
-+ * @param constructor the constructor being documented
-+ * @return content tree for the constructor signature
- */
-- public void writeSignature(ConstructorDoc constructor);
-+ public Content getSignature(ConstructorDoc constructor);
-
- /**
-- * Write the deprecated output for the given constructor.
-+ * Add the deprecated output for the given constructor.
- *
-- * @param constructor the constructor being documented.
-+ * @param constructor the constructor being documented
-+ * @param constructorDocTree content tree to which the deprecated information will be added
- */
-- public void writeDeprecated(ConstructorDoc constructor);
-+ public void addDeprecated(ConstructorDoc constructor, Content constructorDocTree);
-
- /**
-- * Write the comments for the given constructor.
-+ * Add the comments for the given constructor.
- *
-- * @param constructor the constructor being documented.
-+ * @param constructor the constructor being documented
-+ * @param constructorDocTree the content tree to which the comments will be added
- */
-- public void writeComments(ConstructorDoc constructor);
-+ public void addComments(ConstructorDoc constructor, Content constructorDocTree);
-
- /**
-- * Write the tag output for the given constructor.
-+ * Add the tags for the given constructor.
- *
-- * @param constructor the constructor being documented.
-+ * @param constructor the constructor being documented
-+ * @param constructorDocTree the content tree to which the tags will be added
- */
-- public void writeTags(ConstructorDoc constructor);
-+ public void addTags(ConstructorDoc constructor, Content constructorDocTree);
-
- /**
-- * Write the constructor footer.
-+ * Get the constructor details tree.
-+ *
-+ * @param memberDetailsTree the content tree representing member details
-+ * @return content tree for the constructor details
- */
-- public void writeConstructorFooter();
-+ public Content getConstructorDetails(Content memberDetailsTree);
-
- /**
-- * Write the footer for the constructor documentation.
-+ * Get the constructor documentation.
- *
-- * @param classDoc the class that the constructors belong to.
-+ * @param constructorDocTree the content tree representing constructor documentation
-+ * @param isLastContent true if the content to be added is the last content
-+ * @return content tree for the constructor documentation
- */
-- public void writeFooter(ClassDoc classDoc);
-+ public Content getConstructorDoc(Content constructorDocTree, boolean isLastContent);
-
- /**
- * Let the writer know whether a non public constructor was found.
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/Content.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/Content.java
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/Content.java
-@@ -0,0 +1,106 @@
-+/*
-+ * Copyright (c) 2010, 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 com.sun.tools.doclets.internal.toolkit;
-+
-+import com.sun.tools.doclets.internal.toolkit.util.*;
-+
-+/**
-+ * A class to create content for javadoc output pages.
-+ *
-+ * @author Bhavesh Patel
-+ */
-+public abstract class Content {
-+
-+ /**
-+ * Returns a string representation of the content.
-+ *
-+ * @return string representation of the content
-+ */
-+ public String toString() {
-+ StringBuilder contentBuilder = new StringBuilder();
-+ write(contentBuilder);
-+ return contentBuilder.toString();
-+ }
-+
-+ /**
-+ * Adds content to the existing content.
-+ *
-+ * @param content content that needs to be added
-+ */
-+ public abstract void addContent(Content content);
-+
-+ /**
-+ * Adds a string content to the existing content.
-+ *
-+ * @param stringContent the string content to be added
-+ */
-+ public abstract void addContent(String stringContent);
-+
-+ /**
-+ * Writes content to a StringBuilder.
-+ *
-+ */
-+ public abstract void write(StringBuilder contentBuilder);
-+
-+ /**
-+ * Returns true if the content is empty.
-+ *
-+ * @return true if no content to be displayed else return false
-+ */
-+ public abstract boolean isEmpty();
-+
-+ /**
-+ * Returns true if the content is valid.
-+ *
-+ * @return true if the content is valid else return false
-+ */
-+ public boolean isValid() {
-+ return !isEmpty();
-+ }
-+
-+ /**
-+ * Checks for null values.
-+ *
-+ * @param t reference type to check for null values
-+ * @return the reference type if not null or else throws a null pointer exception
-+ */
-+ protected static <T> T nullCheck(T t) {
-+ t.getClass();
-+ return t;
-+ }
-+
-+ /**
-+ * Returns true if the content ends with a newline character. Empty content
-+ * is considered as ending with new line.
-+ *
-+ * @param contentBuilder content to test for newline character at the end
-+ * @return true if the content ends with newline.
-+ */
-+ public boolean endsWithNewLine(StringBuilder contentBuilder) {
-+ return ((contentBuilder.length() == 0) ||
-+ (contentBuilder.substring(contentBuilder.length() - 1).equals("\n")));
-+ }
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/EnumConstantWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/EnumConstantWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/EnumConstantWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/EnumConstantWriter.java
-@@ -36,67 +36,80 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
- public interface EnumConstantWriter {
-
- /**
-- * Write the header for the enum constant documentation.
-+ * Get the enum constants details tree header.
- *
-- * @param classDoc the class that the enum constants belong to.
-- * @param header the header to write.
-+ * @param classDoc the class being documented
-+ * @param memberDetailsTree the content tree representing member details
-+ * @return content tree for the enum constants details header
- */
-- public void writeHeader(ClassDoc classDoc, String header);
-+ public Content getEnumConstantsDetailsTreeHeader(ClassDoc classDoc,
-+ Content memberDetailsTree);
-
- /**
-- * Write the enum constant header for the given enum constant.
-+ * Get the enum constants documentation tree header.
- *
-- * @param enumConstant the enum constant being documented.
-- * @param isFirst the flag to indicate whether or not the enum constant is
-- * the first to be documented.
-+ * @param enumConstant the enum constant being documented
-+ * @param enumConstantDetailsTree the content tree representing enum constant details
-+ * @return content tree for the enum constant documentation header
- */
-- public void writeEnumConstantHeader(FieldDoc enumConstant, boolean isFirst);
-+ public Content getEnumConstantsTreeHeader(FieldDoc enumConstant,
-+ Content enumConstantsDetailsTree);
-
- /**
-- * Write the signature for the given enum constant.
-+ * Get the signature for the given enum constant.
- *
-- * @param enumConstant the enum constant being documented.
-+ * @param enumConstant the enum constant being documented
-+ * @return content tree for the enum constant signature
- */
-- public void writeSignature(FieldDoc enumConstant);
-+ public Content getSignature(FieldDoc enumConstant);
-
- /**
-- * Write the deprecated output for the given enum constant.
-+ * Add the deprecated output for the given enum constant.
- *
-- * @param enumConstant the enum constant being documented.
-+ * @param enumConstant the enum constant being documented
-+ * @param enumConstantsTree content tree to which the deprecated information will be added
- */
-- public void writeDeprecated(FieldDoc enumConstant);
-+ public void addDeprecated(FieldDoc enumConstant, Content enumConstantsTree);
-
- /**
-- * Write the comments for the given enum constant.
-+ * Add the comments for the given enum constant.
- *
-- * @param enumConstant the enum constant being documented.
-+ * @param enumConstant the enum constant being documented
-+ * @param enumConstantsTree the content tree to which the comments will be added
- */
-- public void writeComments(FieldDoc enumConstant);
-+ public void addComments(FieldDoc enumConstant, Content enumConstantsTree);
-
- /**
-- * Write the tag output for the given enum constant.
-+ * Add the tags for the given enum constant.
- *
-- * @param enumConstant the enum constant being documented.
-+ * @param enumConstant the enum constant being documented
-+ * @param enumConstantsTree the content tree to which the tags will be added
- */
-- public void writeTags(FieldDoc enumConstant);
-+ public void addTags(FieldDoc enumConstant, Content enumConstantsTree);
-
- /**
-- * Write the enum constant footer.
-+ * Get the enum constants details tree.
-+ *
-+ * @param memberDetailsTree the content tree representing member details
-+ * @return content tree for the enum constant details
- */
-- public void writeEnumConstantFooter();
-+ public Content getEnumConstantsDetails(Content memberDetailsTree);
-
- /**
-- * Write the footer for the enum constant documentation.
-+ * Get the enum constants documentation.
- *
-- * @param classDoc the class that the enum constant belong to.
-+ * @param enumConstantsTree the content tree representing enum constants documentation
-+ * @param isLastContent true if the content to be added is the last content
-+ * @return content tree for the enum constants documentation
- */
-- public void writeFooter(ClassDoc classDoc);
-+ public Content getEnumConstants(Content enumConstantsTree, boolean isLastContent);
-
- /**
- * Close the writer.
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/FieldWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/FieldWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/FieldWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/FieldWriter.java
-@@ -36,67 +36,80 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
- public interface FieldWriter {
-
- /**
-- * Write the header for the field documentation.
-+ * Get the field details tree header.
- *
-- * @param classDoc the class that the fields belong to.
-- * @param header the header to write.
-+ * @param classDoc the class being documented
-+ * @param memberDetailsTree the content tree representing member details
-+ * @return content tree for the field details header
- */
-- public void writeHeader(ClassDoc classDoc, String header);
-+ public Content getFieldDetailsTreeHeader(ClassDoc classDoc,
-+ Content memberDetailsTree);
-
- /**
-- * Write the field header for the given field.
-+ * Get the field documentation tree header.
- *
-- * @param field the field being documented.
-- * @param isFirst the flag to indicate whether or not the field is the
-- * first to be documented.
-+ * @param field the constructor being documented
-+ * @param fieldDetailsTree the content tree representing field details
-+ * @return content tree for the field documentation header
- */
-- public void writeFieldHeader(FieldDoc field, boolean isFirst);
-+ public Content getFieldDocTreeHeader(FieldDoc field,
-+ Content fieldDetailsTree);
-
- /**
-- * Write the signature for the given field.
-+ * Get the signature for the given field.
- *
-- * @param field the field being documented.
-+ * @param field the field being documented
-+ * @return content tree for the field signature
- */
-- public void writeSignature(FieldDoc field);
-+ public Content getSignature(FieldDoc field);
-
- /**
-- * Write the deprecated output for the given field.
-+ * Add the deprecated output for the given field.
- *
-- * @param field the field being documented.
-+ * @param field the field being documented
-+ * @param fieldDocTree content tree to which the deprecated information will be added
- */
-- public void writeDeprecated(FieldDoc field);
-+ public void addDeprecated(FieldDoc field, Content fieldDocTree);
-
- /**
-- * Write the comments for the given field.
-+ * Add the comments for the given field.
- *
-- * @param field the field being documented.
-+ * @param field the field being documented
-+ * @param fieldDocTree the content tree to which the comments will be added
- */
-- public void writeComments(FieldDoc field);
-+ public void addComments(FieldDoc field, Content fieldDocTree);
-
- /**
-- * Write the tag output for the given field.
-+ * Add the tags for the given field.
- *
-- * @param field the field being documented.
-+ * @param field the field being documented
-+ * @param fieldDocTree the content tree to which the tags will be added
- */
-- public void writeTags(FieldDoc field);
-+ public void addTags(FieldDoc field, Content fieldDocTree);
-
- /**
-- * Write the field footer.
-+ * Get the field details tree.
-+ *
-+ * @param memberDetailsTree the content tree representing member details
-+ * @return content tree for the field details
- */
-- public void writeFieldFooter();
-+ public Content getFieldDetails(Content memberDetailsTree);
-
- /**
-- * Write the footer for the field documentation.
-+ * Get the field documentation.
- *
-- * @param classDoc the class that the fields belong to.
-+ * @param fieldDocTree the content tree representing field documentation
-+ * @param isLastContent true if the content to be added is the last content
-+ * @return content tree for the field documentation
- */
-- public void writeFooter(ClassDoc classDoc);
-+ public Content getFieldDoc(Content fieldDocTree, boolean isLastContent);
-
- /**
- * Close the writer.
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/MemberSummaryWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/MemberSummaryWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/MemberSummaryWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/MemberSummaryWriter.java
-@@ -26,6 +26,7 @@
- package com.sun.tools.doclets.internal.toolkit;
-
- import java.io.*;
-+import java.util.*;
- import com.sun.javadoc.*;
-
- /**
-@@ -36,61 +37,77 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
- public interface MemberSummaryWriter {
-
- /**
-- * Write the member summary header for the given class.
-+ * Get the member summary header for the given class.
- *
-- * @param classDoc the class the summary belongs to.
-+ * @param classDoc the class the summary belongs to
-+ * @param memberSummaryTree the content tree to which the member summary will be added
-+ * @return a content tree for the member summary header
- */
-- public void writeMemberSummaryHeader(ClassDoc classDoc);
-+ public Content getMemberSummaryHeader(ClassDoc classDoc,
-+ Content memberSummaryTree);
-
- /**
-- * Write the member summary for the given class and member.
-+ * Get the summary table for the given class.
- *
-- * @param classDoc the class the summary belongs to.
-- * @param member the member that I am summarizing.
-- * @param firstSentenceTags the tags for the sentence being documented.
-- * @param isFirst true if this is the first member in the list.
-- * @param isLast true if this the last member being documented.
-+ * @param classDoc the class the summary table belongs to
-+ * @return a content tree for the member summary table
- */
-- public void writeMemberSummary(ClassDoc classDoc, ProgramElementDoc member,
-- Tag[] firstSentenceTags, boolean isFirst, boolean isLast);
-+ public Content getSummaryTableTree(ClassDoc classDoc);
-
- /**
-- * Write the member summary footer for the given class.
-+ * Add the member summary for the given class and member.
- *
-- * @param classDoc the class the summary belongs to.
-+ * @param classDoc the class the summary belongs to
-+ * @param member the member that is documented
-+ * @param firstSentenceTags the tags for the sentence being documented
-+ * @param tableTree the content treeto which the information will be added
-+ * @param counter the counter for determing style for the table row
- */
-- public void writeMemberSummaryFooter(ClassDoc classDoc);
-+ public void addMemberSummary(ClassDoc classDoc, ProgramElementDoc member,
-+ Tag[] firstSentenceTags, Content tableTree, int counter);
-
- /**
-- * Write the inherited member summary header for the given class.
-+ * Get the inherited member summary header for the given class.
- *
-- * @param classDoc the class the summary belongs to.
-+ * @param classDoc the class the summary belongs to
-+ * @return a content tree containing the inherited summary header
- */
-- public void writeInheritedMemberSummaryHeader(ClassDoc classDoc);
-+ public Content getInheritedSummaryHeader(ClassDoc classDoc);
-
- /**
-- * Write the inherited member summary for the given class and member.
-+ * Add the inherited member summary for the given class and member.
- *
-- * @param classDoc the class the inherited member belongs to.
-- * @param member the inherited member that I am summarizing.
-- * @param isFirst true if this is the first member in the list.
-- * @param isLast true if this is the last member in the list.
-+ * @param classDoc the class the inherited member belongs to
-+ * @param member the inherited member that is being documented
-+ * @param isFirst true if this is the first member in the list
-+ * @param isLast true if this is the last member in the list
-+ * @param linksTree the content tree to which the links will be added
- */
-- public void writeInheritedMemberSummary(ClassDoc classDoc,
-- ProgramElementDoc member, boolean isFirst, boolean isLast);
-+ public void addInheritedMemberSummary(ClassDoc classDoc,
-+ ProgramElementDoc member, boolean isFirst, boolean isLast,
-+ Content linksTree);
-
- /**
-- * Write the inherited member summary footer for the given class.
-+ * Get inherited summary links.
- *
-- * @param classDoc the class the summary belongs to.
-+ * @return a content tree conatining the inherited summary links
- */
-- public void writeInheritedMemberSummaryFooter(ClassDoc classDoc);
-+ public Content getInheritedSummaryLinksTree();
-+
-+ /**
-+ * Get the member tree.
-+ *
-+ * @param memberTree the content tree representating the member
-+ * @return a content tree for the member
-+ */
-+ public Content getMemberTree(Content memberTree);
-
- /**
- * Close the writer.
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/MethodWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/MethodWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/MethodWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/MethodWriter.java
-@@ -36,68 +36,81 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
- public interface MethodWriter {
-
- /**
-- * Write the header for the method documentation.
-+ * Get the method details tree header.
- *
-- * @param classDoc the class that the methods belong to.
-- * @param header the header to write.
-+ * @param classDoc the class being documented
-+ * @param memberDetailsTree the content tree representing member details
-+ * @return content tree for the method details header
- */
-- public void writeHeader(ClassDoc classDoc, String header);
-+ public Content getMethodDetailsTreeHeader(ClassDoc classDoc,
-+ Content memberDetailsTree);
-
- /**
-- * Write the method header for the given method.
-+ * Get the method documentation tree header.
- *
-- * @param method the method being documented.
-- * @param isFirst the flag to indicate whether or not the method is the
-- * first to be documented.
-+ * @param method the method being documented
-+ * @param methodDetailsTree the content tree representing method details
-+ * @return content tree for the method documentation header
- */
-- public void writeMethodHeader(MethodDoc method, boolean isFirst);
-+ public Content getMethodDocTreeHeader(MethodDoc method,
-+ Content methodDetailsTree);
-
- /**
-- * Write the signature for the given method.
-+ * Get the signature for the given method.
- *
-- * @param method the method being documented.
-+ * @param method the method being documented
-+ * @return content tree for the method signature
- */
-- public void writeSignature(MethodDoc method);
-+ public Content getSignature(MethodDoc method);
-
- /**
-- * Write the deprecated output for the given method.
-+ * Add the deprecated output for the given method.
- *
-- * @param method the method being documented.
-+ * @param method the method being documented
-+ * @param methodDocTree content tree to which the deprecated information will be added
- */
-- public void writeDeprecated(MethodDoc method);
-+ public void addDeprecated(MethodDoc method, Content methodDocTree);
-
- /**
-- * Write the comments for the given method.
-+ * Add the comments for the given method.
- *
-- * @param holder the holder type (not erasure) of the method.
-- * @param method the method being documented.
-+ * @param holder the holder type (not erasure) of the method
-+ * @param method the method being documented
-+ * @param methodDocTree the content tree to which the comments will be added
- */
-- public void writeComments(Type holder, MethodDoc method);
-+ public void addComments(Type holder, MethodDoc method, Content methodDocTree);
-
- /**
-- * Write the tag output for the given method.
-+ * Add the tags for the given method.
- *
-- * @param method the method being documented.
-+ * @param method the method being documented
-+ * @param methodDocTree the content tree to which the tags will be added
- */
-- public void writeTags(MethodDoc method);
-+ public void addTags(MethodDoc method, Content methodDocTree);
-
- /**
-- * Write the method footer.
-+ * Get the method details tree.
-+ *
-+ * @param methodDetailsTree the content tree representing method details
-+ * @return content tree for the method details
- */
-- public void writeMethodFooter();
-+ public Content getMethodDetails(Content methodDetailsTree);
-
- /**
-- * Write the footer for the method documentation.
-+ * Get the method documentation.
- *
-- * @param classDoc the class that the methods belong to.
-+ * @param methodDocTree the content tree representing method documentation
-+ * @param isLastContent true if the content to be added is the last content
-+ * @return content tree for the method documentation
- */
-- public void writeFooter(ClassDoc classDoc);
-+ public Content getMethodDoc(Content methodDocTree, boolean isLastContent);
-
- /**
- * Close the writer.
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/NestedClassWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/NestedClassWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/NestedClassWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/NestedClassWriter.java
-@@ -26,7 +26,6 @@
- package com.sun.tools.doclets.internal.toolkit;
-
- import java.io.*;
--import com.sun.javadoc.*;
-
- /**
- * The interface for writing class output.
-@@ -36,59 +35,13 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
- public interface NestedClassWriter {
-
- /**
-- * Write the classes summary header for the given class.
-- *
-- * @param nestedClass the class the summary belongs to.
-- */
-- public void writeNestedClassSummaryHeader(ClassDoc nestedClass);
--
-- /**
-- * Write the class summary for the given class and class.
-- *
-- * @param classDoc the class the summary belongs to.
-- * @param nestedClass the nested class that I am summarizing.
-- */
-- public void writeNestedClassSummary(ClassDoc classDoc, ClassDoc nestedClass);
--
-- /**
-- * Write the classes summary footer for the given class.
-- *
-- * @param nestedClass the class the summary belongs to.
-- */
-- public void writeNestedClassSummaryFooter(ClassDoc nestedClass);
--
-- /**
-- * Write the inherited classes summary header for the given class.
-- *
-- * @param nestedClass the class the summary belongs to.
-- */
-- public void writeInheritedNestedClassSummaryHeader(ClassDoc nestedClass);
--
-- /**
-- * Write the inherited nested class summary for the given class and nested
-- * class.
-- *
-- * @param classDoc the class the inherited nested class belongs to.
-- * @param nestedClass the inherited nested class that I am summarizing.
-- * @param isFirst true if this is the first member in the list.
-- */
-- public void writeInheritedNestedClassSummary(ClassDoc classDoc,
-- ClassDoc nestedClass, boolean isFirst);
--
-- /**
-- * Write the inherited classes summary footer for the given class.
-- *
-- * @param nestedClass the class the summary belongs to.
-- */
-- public void writeInheritedNestedClassSummaryFooter(ClassDoc nestedClass);
--
-- /**
- * Close the writer.
- */
- public void close() throws IOException;
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/PackageSummaryWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/PackageSummaryWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/PackageSummaryWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/PackageSummaryWriter.java
-@@ -36,6 +36,7 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
-
-@@ -49,45 +50,70 @@
- public abstract String getOutputFileName();
-
- /**
-- * Write the header for the package summary.
-+ * Get the header for the summary.
-+ *
-+ * @param heading Package name.
-+ * @return the header to be added to the content tree
- */
-- public abstract void writeSummaryHeader();
-+ public abstract Content getPackageHeader(String heading);
-
- /**
-- * Write the footer for the package summary.
-+ * Get the header for the package content.
-+ *
-+ * @return a content tree for the package content header
- */
-- public abstract void writeSummaryFooter();
-+ public abstract Content getContentHeader();
-
- /**
-- * Write the table of classes in this package.
-+ * Get the header for the package summary.
-+ *
-+ * @return a content tree with the package summary header
-+ */
-+ public abstract Content getSummaryHeader();
-+
-+ /**
-+ * Adds the table of classes 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 summaryContentTree the content tree to which the summaries will be added
- */
-- public abstract void writeClassesSummary(ClassDoc[] classes, String label, String tableSummary, String[] tableHeader);
-+ public abstract void addClassesSummary(ClassDoc[] classes, String label,
-+ String tableSummary, String[] tableHeader, Content summaryContentTree);
-
- /**
-- * Write the header for the summary.
-+ * Adds the package description from the "packages.html" file to the documentation
-+ * tree.
- *
-- * @param heading Package name.
-+ * @param packageContentTree the content tree to which the package description
-+ * will be added
- */
-- public abstract void writePackageHeader(String heading);
-+ public abstract void addPackageDescription(Content packageContentTree);
-
- /**
-- * Print the package description from the "packages.html" file.
-+ * Adds the tag information from the "packages.html" file to the documentation
-+ * tree.
-+ *
-+ * @param packageContentTree the content tree to which the package tags will
-+ * be added
- */
-- public abstract void writePackageDescription();
-+ public abstract void addPackageTags(Content packageContentTree);
-
- /**
-- * Print the tag information from the "packages.html" file.
-+ * Adds the footer to the documentation tree.
-+ *
-+ * @param contentTree the tree to which the footer will be added
- */
-- public abstract void writePackageTags();
-+ public abstract void addPackageFooter(Content contentTree);
-
- /**
-- * Write the footer for the summary.
-+ * Print the package summary document.
- *
-+ * @param contentTree the content tree that will be printed
- */
-- public abstract void writePackageFooter();
-+ public abstract void printDocument(Content contentTree);
-
- /**
- * Close the writer.
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/SerializedFormWriter.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/SerializedFormWriter.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/SerializedFormWriter.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/SerializedFormWriter.java
-@@ -43,33 +43,73 @@
- public interface SerializedFormWriter {
-
- /**
-- * Write the given header.
-+ * Get the header.
- *
- * @param header the header to write.
-+ * @return the header content tree
- */
-- public void writeHeader(String header);
-+ public Content getHeader(String header);
-
- /**
-- * Write the given package header.
-+ * Get the serialized form summaries header.
- *
-- * @param packageName the package header to write.
-+ * @return the serialized form summary header tree
- */
-- public void writePackageHeader(String packageName);
-+ public Content getSerializedSummariesHeader();
-
- /**
-- * Write the heading for the serializable class.
-+ * Get the package serialized form header.
- *
-- * @param classDoc the class being processed.
-+ * @return the package serialized form header tree
- */
-- public void writeClassHeader(ClassDoc classDoc);
-+ public Content getPackageSerializedHeader();
-
- /**
-- * Write the serial UID info.
-+ * Get the given package header.
-+ *
-+ * @param packageName the package header to write
-+ * @return a content tree for the package header
-+ */
-+ public Content getPackageHeader(String packageName);
-+
-+ /**
-+ * Get the serialized class header.
-+ *
-+ * @return a content tree for the serialized class header
-+ */
-+ public Content getClassSerializedHeader();
-+
-+ /**
-+ * Get the heading for the serializable class.
-+ *
-+ * @param classDoc the class being processed
-+ * @return a content tree for the class heading
-+ */
-+ public Content getClassHeader(ClassDoc classDoc);
-+
-+ /**
-+ * Get the serial UID info header.
-+ *
-+ * @return a content tree for the serial uid info header
-+ */
-+ public Content getSerialUIDInfoHeader();
-+
-+ /**
-+ * Adds the serial UID info.
- *
- * @param header the header that will show up before the UID.
- * @param serialUID the serial UID to print.
-+ * @param serialUidTree the serial UID tree to which the content will be added.
- */
-- public void writeSerialUIDInfo(String header, String serialUID);
-+ public void addSerialUIDInfo(String header, String serialUID,
-+ Content serialUidTree);
-+
-+ /**
-+ * Get the class serialize content header.
-+ *
-+ * @return a content tree for the class serialize content header
-+ */
-+ public Content getClassContentHeader();
-
- /**
- * Return an instance of a SerialFieldWriter.
-@@ -91,9 +131,26 @@
- public abstract void close() throws IOException;
-
- /**
-- * Write the footer.
-+ * Get the serialized content.
-+ *
-+ * @param serializedTreeContent content for serialized data
-+ * @return a content tree for serialized information
- */
-- public void writeFooter();
-+ public Content getSerializedContent(Content serializedTreeContent);
-+
-+ /**
-+ * Add the footer.
-+ *
-+ * @param serializedTree the serialized tree to be added
-+ */
-+ public void addFooter(Content serializedTree);
-+
-+ /**
-+ * Print the serialized form document.
-+ *
-+ * @param serializedTree the content tree that will be printed
-+ */
-+ public abstract void printDocument(Content serializedTree);
-
- /**
- * Write the serialized form for a given field.
-@@ -101,56 +158,73 @@
- public interface SerialFieldWriter {
-
- /**
-- * Write the given heading.
-+ * Get the serializable field header.
-+ *
-+ * @return serialized fields header content tree
-+ */
-+ public Content getSerializableFieldsHeader();
-+
-+ /**
-+ * Get the field content header.
-+ *
-+ * @param isLastContent true if this is the last content to be documented
-+ * @return fields header content tree
-+ */
-+ public Content getFieldsContentHeader(boolean isLastContent);
-+
-+ /**
-+ * Get the fields content.
- *
- * @param heading the heading to write.
-+ * @param contentTree content tree to which the heading will be added
-+ * @return serializable fields content tree
- */
-- public void writeHeader(String heading);
-+ public Content getSerializableFields(String heading, Content contentTree);
-
- /**
-- * Write the deprecated information for this member.
-+ * Adds the deprecated information for this member.
- *
- * @param field the field to document.
-+ * @param contentTree content tree to which the deprecated information will be added
- */
-- public void writeMemberDeprecatedInfo(FieldDoc field);
-+ public void addMemberDeprecatedInfo(FieldDoc field, Content contentTree);
-
- /**
-- * Write the description text for this member.
-+ * Adds the description text for this member.
- *
- * @param field the field to document.
-+ * @param contentTree content tree to which the member description will be added
- */
-- public void writeMemberDescription(FieldDoc field);
-+ public void addMemberDescription(FieldDoc field, Content contentTree);
-
- /**
-- * Write the description text for this member represented by the tag.
-+ * Adds the description text for this member represented by the tag.
- *
- * @param serialFieldTag the field to document (represented by tag).
-+ * @param contentTree content tree to which the member description will be added
- */
-- public void writeMemberDescription(SerialFieldTag serialFieldTag);
-+ public void addMemberDescription(SerialFieldTag serialFieldTag, Content contentTree);
-
- /**
-- * Write the tag information for this member.
-+ * Adds the tag information for this member.
- *
- * @param field the field to document.
-+ * @param contentTree content tree to which the member tags will be added
- */
-- public void writeMemberTags(FieldDoc field);
-+ public void addMemberTags(FieldDoc field, Content contentTree);
-
- /**
-- * Write the member header.
-+ * Adds the member header.
- *
- * @param fieldType the type of the field.
- * @param fieldTypeStr the type of the field in string format. We will
- * print this out if we can't link to the type.
- * @param fieldDimensions the dimensions of the field.
- * @param fieldName the name of the field.
-+ * @param contentTree content tree to which the member header will be added
- */
-- public void writeMemberHeader(ClassDoc fieldType, String fieldTypeStr,
-- String fieldDimensions, String fieldName);
--
-- /**
-- * Write the member footer.
-- */
-- public void writeMemberFooter();
-+ public void addMemberHeader(ClassDoc fieldType, String fieldTypeStr,
-+ String fieldDimensions, String fieldName, Content contentTree);
-
- /**
- * Check to see if overview details should be printed. If
-@@ -162,13 +236,6 @@
- * @return true if overview details need to be printed
- */
- public boolean shouldPrintOverview(FieldDoc field);
--
-- /**
-- * Write the footer.
-- *
-- * @param heading the heading that was written.
-- */
-- public void writeFooter (String heading);
- }
-
- /**
-@@ -177,44 +244,70 @@
- public interface SerialMethodWriter {
-
- /**
-+ * Get the serializable method header.
-+ *
-+ * @return serializable methods content tree
-+ */
-+ public Content getSerializableMethodsHeader();
-+
-+ /**
-+ * Get the method content header.
-+ *
-+ * @param isLastContent true if this is the last content to be documented
-+ * @return methods content tree
-+ */
-+ public Content getMethodsContentHeader(boolean isLastContent);
-+
-+ /**
- * Write the given heading.
- *
-- * @param heading the heading to write.
-+ * @param heading the heading to write
-+ * @param serializableMethodTree content tree which will be added
-+ * @return serializable methods content tree
- */
-- public void writeHeader(String heading);
-+ public Content getSerializableMethods(String heading, Content serializableMethodTree);
-
- /**
- * Write a warning that no serializable methods exist.
- *
-- * @param msg the warning to print.
-+ * @param msg the warning to print
-+ * @return no customization message tree
- */
-- public void writeNoCustomizationMsg(String msg);
-+ public Content getNoCustomizationMsg(String msg);
-
- /**
-- * Write the header.
-+ * Adds the header.
- *
-- * @param member the member to write the header for.
-+ * @param member the member to write the header for
-+ * @param methodsContentTree content tree to which the header will be added
- */
-- public void writeMemberHeader(MethodDoc member);
-+ public void addMemberHeader(MethodDoc member, Content methodsContentTree);
-
- /**
-- * Write the footer.
-+ * Adds the deprecated information for this member.
-+ *
-+ * @param member the member to write the deprecated information for
-+ * @param methodsContentTree content tree to which the deprecated
-+ * information will be added
- */
-- public void writeMemberFooter();
-+ public void addDeprecatedMemberInfo(MethodDoc member, Content methodsContentTree);
-
- /**
-- * Write the deprecated information for this member.
-+ * Adds the description for this member.
-+ *
-+ * @param member the member to write the information for
-+ * @param methodsContentTree content tree to which the member
-+ * information will be added
- */
-- public void writeDeprecatedMemberInfo(MethodDoc member);
-+ public void addMemberDescription(MethodDoc member, Content methodsContentTree);
-
- /**
-- * Write the description for this member.
-+ * Adds the tag information for this member.
-+ *
-+ * @param member the member to write the tags information for
-+ * @param methodsContentTree content tree to which the tags
-+ * information will be added
- */
-- public void writeMemberDescription(MethodDoc member);
--
-- /**
-- * Write the tag information for this member.
-- */
-- public void writeMemberTags(MethodDoc member);
-+ public void addMemberTags(MethodDoc member, Content methodsContentTree);
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractBuilder.java
-@@ -95,13 +95,14 @@
- * Build the documentation, as specified by the given XML element.
- *
- * @param node the XML element that specifies which component to document.
-+ * @param contentTree content tree to which the documentation will be added
- */
- protected void build(XMLNode node) {
- String component = node.name;
- try {
- invokeMethod("build" + component,
-- new Class<?>[] { XMLNode.class },
-- new Object[] { node });
-+ new Class<?>[]{XMLNode.class, Content.class},
-+ new Object[]{node, contentTree});
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- configuration.root.printError("Unknown element: " + component);
-@@ -111,8 +112,8 @@
- } catch (Exception e) {
- e.printStackTrace();
- configuration.root.printError("Exception " +
-- e.getClass().getName() +
-- " thrown while processing element: " + component);
-+ e.getClass().getName() +
-+ " thrown while processing element: " + component);
- throw new DocletAbortException();
- }
- }
-@@ -121,10 +122,11 @@
- * Build the documentation, as specified by the children of the given XML element.
- *
- * @param node the XML element that specifies which components to document.
-+ * @param contentTree content tree to which the documentation will be added
- */
-- protected void buildChildren(XMLNode node) {
-- for (XMLNode child: node.children)
-- build(child);
-+ protected void buildChildren(XMLNode node, Content contentTree) {
-+ for (XMLNode child : node.children)
-+ build(child, contentTree);
- }
-
- /**
-@@ -140,8 +142,7 @@
- Object[] params)
- throws Exception {
- if (DEBUG) {
-- configuration.root.printError("DEBUG: " + this.getClass().getName()
-- + "." + methodName);
-+ configuration.root.printError("DEBUG: " + this.getClass().getName() + "." + methodName);
- }
- Method method = this.getClass().getMethod(methodName, paramClasses);
- method.invoke(this, params);
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractMemberBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractMemberBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractMemberBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AbstractMemberBuilder.java
-@@ -27,6 +27,7 @@
-
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
-+import java.util.*;
-
- /**
- * The superclass for all member builders. Member builders are only executed
-@@ -66,12 +67,13 @@
- /**
- * Build the sub component if there is anything to document.
- *
-- * @param elements {@inheritDoc}
-+ * @param node the XML element that specifies which components to document.
-+ * @param contentTree content tree to which the documentation will be added
- */
- @Override
-- public void build(XMLNode node) {
-+ public void build(XMLNode node, Content contentTree) {
- if (hasMembersToDocument()) {
-- super.build(node);
-+ super.build(node, contentTree);
- }
- }
-
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeBuilder.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2003, 2010, 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,11 +25,11 @@
-
- package com.sun.tools.doclets.internal.toolkit.builders;
-
-+import java.io.*;
-+import java.util.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.javadoc.*;
--import java.io.*;
--import java.util.*;
-
- /**
- * Builds the summary for a given annotation type.
-@@ -39,6 +39,7 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
- public class AnnotationTypeBuilder extends AbstractBuilder {
-@@ -59,6 +60,11 @@
- private AnnotationTypeWriter writer;
-
- /**
-+ * The content tree for the annotation documentation.
-+ */
-+ private Content contentTree;
-+
-+ /**
- * Construct a new ClassBuilder.
- *
- * @param configuration the current configuration of the
-@@ -83,7 +89,7 @@
- builder.annotationTypeDoc = annotationTypeDoc;
- builder.writer = writer;
- if(containingPackagesSeen == null) {
-- containingPackagesSeen = new HashSet();
-+ containingPackagesSeen = new HashSet<String>();
- }
- return builder;
- }
-@@ -92,7 +98,7 @@
- * {@inheritDoc}
- */
- public void build() throws IOException {
-- build(LayoutParser.getInstance(configuration).parseXML(ROOT));
-+ build(LayoutParser.getInstance(configuration).parseXML(ROOT), contentTree);
- }
-
- /**
-@@ -102,18 +108,24 @@
- return ROOT;
- }
-
-- /**
-- * Handles the &lt;AnnotationTypeDoc> tag.
-+ /**
-+ * Build the annotation type documentation.
- *
-- * @param elements the XML elements that specify how to document a class.
-+ * @param node the XML element that specifies which components to document
-+ * @param contentTree the content tree to which the documentation will be added
- */
-- public void buildAnnotationTypeDoc(XMLNode node) throws Exception {
-- buildChildren(node);
-- writer.close();
-- copyDocFiles();
-+ public void buildAnnotationTypeDoc(XMLNode node, Content contentTree) throws Exception {
-+ contentTree = writer.getHeader(configuration.getText("doclet.AnnotationType") +
-+ " " + annotationTypeDoc.name());
-+ Content annotationContentTree = writer.getAnnotationContentHeader();
-+ buildChildren(node, annotationContentTree);
-+ contentTree.addContent(annotationContentTree);
-+ writer.addFooter(contentTree);
-+ writer.printDocument(contentTree);
-+ writer.close();
-+ copyDocFiles();
- }
-
--
- /**
- * Copy the doc files for the current ClassDoc if necessary.
- */
-@@ -137,86 +149,112 @@
- }
-
- /**
-- * Build the header of the page.
-+ * Build the annotation information tree documentation.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationContentTree the content tree to which the documentation will be added
- */
-- public void buildAnnotationTypeHeader(XMLNode node) {
-- writer.writeHeader(configuration.getText("doclet.AnnotationType") +
-- " " + annotationTypeDoc.name());
-+ public void buildAnnotationTypeInfo(XMLNode node, Content annotationContentTree) {
-+ Content annotationInfoTree = writer.getAnnotationInfoTreeHeader();
-+ buildChildren(node, annotationInfoTree);
-+ annotationContentTree.addContent(writer.getAnnotationInfo(annotationInfoTree));
- }
-
- /**
-- * If this class is deprecated, print the appropriate information.
-+ * If this annotation is deprecated, build the appropriate information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationInfoTree the content tree to which the documentation will be added
- */
-- public void buildDeprecationInfo (XMLNode node) {
-- writer.writeAnnotationTypeDeprecationInfo();
-+ public void buildDeprecationInfo (XMLNode node, Content annotationInfoTree) {
-+ writer.addAnnotationTypeDeprecationInfo(annotationInfoTree);
- }
-
- /**
- * Build the signature of the current annotation type.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationInfoTree the content tree to which the documentation will be added
- */
-- public void buildAnnotationTypeSignature(XMLNode node) {
-+ public void buildAnnotationTypeSignature(XMLNode node, Content annotationInfoTree) {
- StringBuffer modifiers = new StringBuffer(
-- annotationTypeDoc.modifiers() + " ");
-- writer.writeAnnotationTypeSignature(
-- Util.replaceText(
-- modifiers.toString(), "interface", "@interface"));
-+ annotationTypeDoc.modifiers() + " ");
-+ writer.addAnnotationTypeSignature(Util.replaceText(
-+ modifiers.toString(), "interface", "@interface"), annotationInfoTree);
- }
-
- /**
-- * Build the class description.
-+ * Build the annotation type description.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationInfoTree the content tree to which the documentation will be added
- */
-- public void buildAnnotationTypeDescription(XMLNode node) {
-- writer.writeAnnotationTypeDescription();
-+ public void buildAnnotationTypeDescription(XMLNode node, Content annotationInfoTree) {
-+ writer.addAnnotationTypeDescription(annotationInfoTree);
- }
-
- /**
-- * Build the tag information for the current class.
-+ * Build the tag information for the current annotation type.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationInfoTree the content tree to which the documentation will be added
- */
-- public void buildAnnotationTypeTagInfo(XMLNode node) {
-- writer.writeAnnotationTypeTagInfo();
-+ public void buildAnnotationTypeTagInfo(XMLNode node, Content annotationInfoTree) {
-+ writer.addAnnotationTypeTagInfo(annotationInfoTree);
- }
-
- /**
-- * Build the contents of the page.
-+ * Build the member summary contents of the page.
- *
-- * @param elements the XML elements that specify how a member summary is
-- * documented.
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationContentTree the content tree to which the documentation will be added
- */
-- public void buildMemberSummary(XMLNode node) throws Exception {
-+ public void buildMemberSummary(XMLNode node, Content annotationContentTree)
-+ throws Exception {
-+ Content memberSummaryTree = writer.getMemberTreeHeader();
- configuration.getBuilderFactory().
-- getMemberSummaryBuilder(writer).buildChildren(node);
-- writer.completeMemberSummaryBuild();
-+ getMemberSummaryBuilder(writer).buildChildren(node, memberSummaryTree);
-+ annotationContentTree.addContent(writer.getMemberSummaryTree(memberSummaryTree));
-+ }
-+
-+ /**
-+ * Build the member details contents of the page.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationContentTree the content tree to which the documentation will be added
-+ */
-+ public void buildAnnotationTypeMemberDetails(XMLNode node, Content annotationContentTree) {
-+ Content memberDetailsTree = writer.getMemberTreeHeader();
-+ buildChildren(node, memberDetailsTree);
-+ if (memberDetailsTree.isValid()) {
-+ Content memberDetails = writer.getMemberTreeHeader();
-+ writer.addAnnotationDetailsMarker(memberDetails);
-+ memberDetails.addContent(writer.getMemberTree(memberDetailsTree));
-+ annotationContentTree.addContent(writer.getMemberDetailsTree(memberDetails));
-+ }
- }
-
- /**
- * Build the annotation type optional member documentation.
- *
-- * @param elements the XML elements that specify how a annotation type
-- * members are documented.
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
- */
-- public void buildAnnotationTypeOptionalMemberDetails(XMLNode node)
-- throws Exception {
-+ public void buildAnnotationTypeOptionalMemberDetails(XMLNode node, Content memberDetailsTree)
-+ throws Exception {
- configuration.getBuilderFactory().
-- getAnnotationTypeOptionalMemberBuilder(writer).buildChildren(node);
-+ getAnnotationTypeOptionalMemberBuilder(writer).buildChildren(node, memberDetailsTree);
- }
-
- /**
- * Build the annotation type required member documentation.
- *
-- * @param elements the XML elements that specify how a annotation type
-- * members are documented.
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
- */
-- public void buildAnnotationTypeRequiredMemberDetails(XMLNode node)
-- throws Exception {
-+ public void buildAnnotationTypeRequiredMemberDetails(XMLNode node, Content memberDetailsTree)
-+ throws Exception {
- configuration.getBuilderFactory().
-- getAnnotationTypeRequiredMemberBuilder(writer).buildChildren(node);
-- }
--
--
-- /**
-- * Build the footer of the page.
-- */
-- public void buildAnnotationTypeFooter(XMLNode node) {
-- writer.writeFooter();
-+ getAnnotationTypeRequiredMemberBuilder(writer).buildChildren(node, memberDetailsTree);
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeOptionalMemberBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeOptionalMemberBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeOptionalMemberBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeOptionalMemberBuilder.java
-@@ -25,11 +25,10 @@
-
- package com.sun.tools.doclets.internal.toolkit.builders;
-
--
-+import java.util.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.javadoc.*;
--import java.util.*;
-
- /**
- * Builds documentation for optional annotation type members.
-@@ -39,6 +38,7 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
- public class AnnotationTypeOptionalMemberBuilder extends
-@@ -90,27 +90,25 @@
- }
-
- /**
-- * Build the member documentation.
-+ * Build the annotation type optional member documentation.
- *
-- * @param elements the XML elements that specify how to construct this
-- * documentation.
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
- */
-- public void buildAnnotationTypeOptionalMember(XMLNode node) {
-- if (writer == null) {
-- return;
-- }
-- for (currentMemberIndex = 0; currentMemberIndex < members.size();
-- currentMemberIndex++) {
-- buildChildren(node);
-- }
-+ public void buildAnnotationTypeOptionalMember(XMLNode node, Content memberDetailsTree) {
-+ buildAnnotationTypeMember(node, memberDetailsTree);
- }
-
- /**
-- * Document the default value for this optional member.
-+ * Build the default value for this optional member.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationDocTree the content tree to which the documentation will be added
- */
-- public void buildDefaultValueInfo(XMLNode node) {
-- ((AnnotationTypeOptionalMemberWriter) writer).writeDefaultValueInfo(
-- (MemberDoc) members.get(currentMemberIndex));
-+ public void buildDefaultValueInfo(XMLNode node, Content annotationDocTree) {
-+ ((AnnotationTypeOptionalMemberWriter) writer).addDefaultValueInfo(
-+ (MemberDoc) members.get(currentMemberIndex),
-+ annotationDocTree);
- }
-
- /**
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeRequiredMemberBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeRequiredMemberBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeRequiredMemberBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeRequiredMemberBuilder.java
-@@ -25,11 +25,10 @@
-
- package com.sun.tools.doclets.internal.toolkit.builders;
-
--
-+import java.util.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.javadoc.*;
--import java.util.*;
-
- /**
- * Builds documentation for required annotation type members.
-@@ -39,6 +38,7 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
- public class AnnotationTypeRequiredMemberBuilder extends AbstractMemberBuilder {
-@@ -141,81 +141,86 @@
- }
-
- /**
-+ * Build the annotation type required member documentation.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
-+ */
-+ public void buildAnnotationTypeRequiredMember(XMLNode node, Content memberDetailsTree) {
-+ buildAnnotationTypeMember(node, memberDetailsTree);
-+ }
-+
-+ /**
- * Build the member documentation.
- *
-- * @param elements the XML elements that specify how to construct this
-- * documentation.
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
- */
-- public void buildAnnotationTypeRequiredMember(XMLNode node) {
-+ public void buildAnnotationTypeMember(XMLNode node, Content memberDetailsTree) {
- if (writer == null) {
- return;
- }
-- for (currentMemberIndex = 0; currentMemberIndex < members.size();
-+ int size = members.size();
-+ if (size > 0) {
-+ writer.addAnnotationDetailsTreeHeader(
-+ classDoc, memberDetailsTree);
-+ for (currentMemberIndex = 0; currentMemberIndex < size;
- currentMemberIndex++) {
-- buildChildren(node);
-- }
-- }
--
-- /**
-- * Build the overall header.
-- */
-- public void buildHeader(XMLNode node) {
-- writer.writeHeader(classDoc,
-- configuration.getText("doclet.Annotation_Type_Member_Detail"));
-- }
--
-- /**
-- * Build the header for the individual members.
-- */
-- public void buildMemberHeader(XMLNode node) {
-- writer.writeMemberHeader((MemberDoc) members.get(
-- currentMemberIndex),
-- currentMemberIndex == 0);
-+ Content annotationDocTree = writer.getAnnotationDocTreeHeader(
-+ (MemberDoc) members.get(currentMemberIndex),
-+ memberDetailsTree);
-+ buildChildren(node, annotationDocTree);
-+ memberDetailsTree.addContent(writer.getAnnotationDoc(
-+ annotationDocTree, (currentMemberIndex == size - 1)));
-+ }
-+ }
- }
-
- /**
- * Build the signature.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationDocTree the content tree to which the documentation will be added
- */
-- public void buildSignature(XMLNode node) {
-- writer.writeSignature((MemberDoc) members.get(currentMemberIndex));
-+ public void buildSignature(XMLNode node, Content annotationDocTree) {
-+ annotationDocTree.addContent(
-+ writer.getSignature((MemberDoc) members.get(currentMemberIndex)));
- }
-
- /**
- * Build the deprecation information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationDocTree the content tree to which the documentation will be added
- */
-- public void buildDeprecationInfo(XMLNode node) {
-- writer.writeDeprecated((MemberDoc) members.get(currentMemberIndex));
-+ public void buildDeprecationInfo(XMLNode node, Content annotationDocTree) {
-+ writer.addDeprecated((MemberDoc) members.get(currentMemberIndex),
-+ annotationDocTree);
- }
-
- /**
- * Build the comments for the member. Do nothing if
- * {@link Configuration#nocomment} is set to true.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationDocTree the content tree to which the documentation will be added
- */
-- public void buildMemberComments(XMLNode node) {
-+ public void buildMemberComments(XMLNode node, Content annotationDocTree) {
- if(! configuration.nocomment){
-- writer.writeComments((MemberDoc) members.get(currentMemberIndex));
-+ writer.addComments((MemberDoc) members.get(currentMemberIndex),
-+ annotationDocTree);
- }
- }
-
- /**
- * Build the tag information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param annotationDocTree the content tree to which the documentation will be added
- */
-- public void buildTagInfo(XMLNode node) {
-- writer.writeTags((MemberDoc) members.get(currentMemberIndex));
-- }
--
-- /**
-- * Build the footer for the individual member.
-- */
-- public void buildMemberFooter(XMLNode node) {
-- writer.writeMemberFooter();
-- }
--
-- /**
-- * Build the overall footer.
-- */
-- public void buildFooter(XMLNode node) {
-- writer.writeFooter(classDoc);
-+ public void buildTagInfo(XMLNode node, Content annotationDocTree) {
-+ writer.addTags((MemberDoc) members.get(currentMemberIndex),
-+ annotationDocTree);
- }
-
- /**
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ClassBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ClassBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ClassBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ClassBuilder.java
-@@ -25,11 +25,11 @@
-
- package com.sun.tools.doclets.internal.toolkit.builders;
-
-+import java.io.*;
-+import java.util.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.javadoc.*;
--import java.io.*;
--import java.util.*;
-
- /**
- * Builds the summary for a given class.
-@@ -39,6 +39,7 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
- public class ClassBuilder extends AbstractBuilder {
-@@ -69,6 +70,11 @@
- private boolean isEnum = false;
-
- /**
-+ * The content tree for the class documentation.
-+ */
-+ private Content contentTree;
-+
-+ /**
- * Construct a new ClassBuilder.
- *
- * @param configuration the current configuration of the
-@@ -108,7 +114,7 @@
- * {@inheritDoc}
- */
- public void build() throws IOException {
-- build(LayoutParser.getInstance(configuration).parseXML(ROOT));
-+ build(LayoutParser.getInstance(configuration).parseXML(ROOT), contentTree);
- }
-
- /**
-@@ -121,121 +127,159 @@
- /**
- * Handles the &lt;ClassDoc> tag.
- *
-- * @param elements the XML elements that specify how to document a class.
-+ * @param node the XML element that specifies which components to document
-+ * @param contentTree the content tree to which the documentation will be added
- */
-- public void buildClassDoc(XMLNode node) throws Exception {
-- buildChildren(node);
-- writer.close();
-- copyDocFiles();
-+ public void buildClassDoc(XMLNode node, Content contentTree) throws Exception {
-+ String key;
-+ if (isInterface) {
-+ key = "doclet.Interface";
-+ } else if (isEnum) {
-+ key = "doclet.Enum";
-+ } else {
-+ key = "doclet.Class";
-+ }
-+ contentTree = writer.getHeader(configuration.getText(key) + " " +
-+ classDoc.name());
-+ Content classContentTree = writer.getClassContentHeader();
-+ buildChildren(node, classContentTree);
-+ contentTree.addContent(classContentTree);
-+ writer.addFooter(contentTree);
-+ writer.printDocument(contentTree);
-+ writer.close();
-+ copyDocFiles();
- }
-
-+ /**
-+ * Build the class tree documentation.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classContentTree the content tree to which the documentation will be added
-+ */
-+ public void buildClassTree(XMLNode node, Content classContentTree) {
-+ writer.addClassTree(classContentTree);
-+ }
-
-- /**
-- * Copy the doc files for the current ClassDoc if necessary.
-- */
-+ /**
-+ * Build the class information tree documentation.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classContentTree the content tree to which the documentation will be added
-+ */
-+ public void buildClassInfo(XMLNode node, Content classContentTree) {
-+ Content classInfoTree = writer.getClassInfoTreeHeader();
-+ buildChildren(node, classInfoTree);
-+ classContentTree.addContent(writer.getClassInfo(classInfoTree));
-+ }
-+
-+ /**
-+ * Build the typeparameters of this class.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classInfoTree the content tree to which the documentation will be added
-+ */
-+ public void buildTypeParamInfo(XMLNode node, Content classInfoTree) {
-+ writer.addTypeParamInfo(classInfoTree);
-+ }
-+
-+ /**
-+ * If this is an interface, list all super interfaces.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classInfoTree the content tree to which the documentation will be added
-+ */
-+ public void buildSuperInterfacesInfo(XMLNode node, Content classInfoTree) {
-+ writer.addSuperInterfacesInfo(classInfoTree);
-+ }
-+
-+ /**
-+ * If this is a class, list all interfaces implemented by this class.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classInfoTree the content tree to which the documentation will be added
-+ */
-+ public void buildImplementedInterfacesInfo(XMLNode node, Content classInfoTree) {
-+ writer.addImplementedInterfacesInfo(classInfoTree);
-+ }
-+
-+ /**
-+ * List all the classes extend this one.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classInfoTree the content tree to which the documentation will be added
-+ */
-+ public void buildSubClassInfo(XMLNode node, Content classInfoTree) {
-+ writer.addSubClassInfo(classInfoTree);
-+ }
-+
-+ /**
-+ * List all the interfaces that extend this one.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classInfoTree the content tree to which the documentation will be added
-+ */
-+ public void buildSubInterfacesInfo(XMLNode node, Content classInfoTree) {
-+ writer.addSubInterfacesInfo(classInfoTree);
-+ }
-+
-+ /**
-+ * If this is an interface, list all classes that implement this interface.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classInfoTree the content tree to which the documentation will be added
-+ */
-+ public void buildInterfaceUsageInfo(XMLNode node, Content classInfoTree) {
-+ writer.addInterfaceUsageInfo(classInfoTree);
-+ }
-+
-+ /**
-+ * If this class is deprecated, build the appropriate information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classInfoTree the content tree to which the documentation will be added
-+ */
-+ public void buildDeprecationInfo (XMLNode node, Content classInfoTree) {
-+ writer.addClassDeprecationInfo(classInfoTree);
-+ }
-+
-+ /**
-+ * If this is an inner class or interface, list the enclosing class or interface.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classInfoTree the content tree to which the documentation will be added
-+ */
-+ public void buildNestedClassInfo (XMLNode node, Content classInfoTree) {
-+ writer.addNestedClassInfo(classInfoTree);
-+ }
-+
-+ /**
-+ * Copy the doc files for the current ClassDoc if necessary.
-+ */
- private void copyDocFiles() {
- PackageDoc containingPackage = classDoc.containingPackage();
- if((configuration.packages == null ||
- Arrays.binarySearch(configuration.packages,
-- containingPackage) < 0) &&
-- ! containingPackagesSeen.contains(containingPackage.name())){
-+ containingPackage) < 0) &&
-+ ! containingPackagesSeen.contains(containingPackage.name())){
- //Only copy doc files dir if the containing package is not
- //documented AND if we have not documented a class from the same
- //package already. Otherwise, we are making duplicate copies.
- Util.copyDocFiles(configuration,
-- Util.getPackageSourcePath(configuration,
-+ Util.getPackageSourcePath(configuration,
- classDoc.containingPackage()) +
-- DirectoryManager.getDirectoryPath(classDoc.containingPackage())
-+ DirectoryManager.getDirectoryPath(classDoc.containingPackage())
- + File.separator, DocletConstants.DOC_FILES_DIR_NAME, true);
- containingPackagesSeen.add(containingPackage.name());
- }
- }
-
- /**
-- * Build the header of the page.
-+ * Build the signature of the current class.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classInfoTree the content tree to which the documentation will be added
- */
-- public void buildClassHeader(XMLNode node) {
-- String key;
-- if (isInterface) {
-- key = "doclet.Interface";
-- } else if (isEnum) {
-- key = "doclet.Enum";
-- } else {
-- key = "doclet.Class";
-- }
--
-- writer.writeHeader(configuration.getText(key) + " " + classDoc.name());
-- }
--
-- /**
-- * Build the class tree documentation.
-- */
-- public void buildClassTree(XMLNode node) {
-- writer.writeClassTree();
-- }
--
-- /**
-- * If this is a class, list all interfaces
-- * implemented by this class.
-- */
-- public void buildImplementedInterfacesInfo(XMLNode node) {
-- writer.writeImplementedInterfacesInfo();
-- }
--
-- /**
-- * If this is an interface, list all super interfaces.
-- */
-- public void buildSuperInterfacesInfo(XMLNode node) {
-- writer.writeSuperInterfacesInfo();
-- }
--
-- /**
-- * List the parameters of this class.
-- */
-- public void buildTypeParamInfo(XMLNode node) {
-- writer.writeTypeParamInfo();
-- }
--
-- /**
-- * List all the classes extend this one.
-- */
-- public void buildSubClassInfo(XMLNode node) {
-- writer.writeSubClassInfo();
-- }
--
-- /**
-- * List all the interfaces that extend this one.
-- */
-- public void buildSubInterfacesInfo(XMLNode node) {
-- writer.writeSubInterfacesInfo();
-- }
--
-- /**
-- * If this is an interface, list all classes that implement this interface.
-- */
-- public void buildInterfaceUsageInfo (XMLNode node) {
-- writer.writeInterfaceUsageInfo();
-- }
--
-- /**
-- * If this is an inner class or interface, list the enclosing class or
-- * interface.
-- */
-- public void buildNestedClassInfo (XMLNode node) {
-- writer.writeNestedClassInfo();
-- }
--
-- /**
-- * If this class is deprecated, print the appropriate information.
-- */
-- public void buildDeprecationInfo (XMLNode node) {
-- writer.writeClassDeprecationInfo();
-- }
--
-- /**
-- * Build the signature of the current class.
-- */
-- public void buildClassSignature(XMLNode node) {
-+ public void buildClassSignature(XMLNode node, Content classInfoTree) {
- StringBuffer modifiers = new StringBuffer(classDoc.modifiers() + " ");
- if (isEnum) {
- modifiers.append("enum ");
-@@ -243,93 +287,111 @@
- if ((index = modifiers.indexOf("abstract")) >= 0) {
- modifiers.delete(index, index + (new String("abstract")).length());
- modifiers = new StringBuffer(
-- Util.replaceText(modifiers.toString(), " ", " "));
-+ Util.replaceText(modifiers.toString(), " ", " "));
- }
- if ((index = modifiers.indexOf("final")) >= 0) {
- modifiers.delete(index, index + (new String("final")).length());
- modifiers = new StringBuffer(
-- Util.replaceText(modifiers.toString(), " ", " "));
-+ Util.replaceText(modifiers.toString(), " ", " "));
- }
- //} else if (classDoc.isAnnotationType()) {
- //modifiers.append("@interface ");
- } else if (! isInterface) {
- modifiers.append("class ");
- }
-- writer.writeClassSignature(modifiers.toString());
-+ writer.addClassSignature(modifiers.toString(), classInfoTree);
- }
-
- /**
- * Build the class description.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classInfoTree the content tree to which the documentation will be added
- */
-- public void buildClassDescription(XMLNode node) {
-- writer.writeClassDescription();
-+ public void buildClassDescription(XMLNode node, Content classInfoTree) {
-+ writer.addClassDescription(classInfoTree);
- }
-
- /**
- * Build the tag information for the current class.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classInfoTree the content tree to which the documentation will be added
- */
-- public void buildClassTagInfo(XMLNode node) {
-- writer.writeClassTagInfo();
-+ public void buildClassTagInfo(XMLNode node, Content classInfoTree) {
-+ writer.addClassTagInfo(classInfoTree);
- }
-
- /**
-- * Build the contents of the page.
-+ * Build the member summary contents of the page.
- *
-- * @param elements the XML elements that specify how a member summary is
-- * documented.
-+ * @param node the XML element that specifies which components to document
-+ * @param classContentTree the content tree to which the documentation will be added
- */
-- public void buildMemberSummary(List elements) throws Exception {
-+ public void buildMemberSummary(XMLNode node, Content classContentTree) throws Exception {
-+ Content memberSummaryTree = writer.getMemberTreeHeader();
- configuration.getBuilderFactory().
-- getMemberSummaryBuilder(writer).buildChildren(node);
-- writer.completeMemberSummaryBuild();
-+ getMemberSummaryBuilder(writer).buildChildren(node, memberSummaryTree);
-+ classContentTree.addContent(writer.getMemberSummaryTree(memberSummaryTree));
-+ }
-+
-+ /**
-+ * Build the member details contents of the page.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classContentTree the content tree to which the documentation will be added
-+ */
-+ public void buildMemberDetails(XMLNode node, Content classContentTree) {
-+ Content memberDetailsTree = writer.getMemberTreeHeader();
-+ buildChildren(node, memberDetailsTree);
-+ classContentTree.addContent(writer.getMemberDetailsTree(memberDetailsTree));
- }
-
- /**
- * Build the enum constants documentation.
- *
-- * @param elements the XML elements that specify how a enum constants are
-- * documented.
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
- */
-- public void buildEnumConstantsDetails(XMLNode node) throws Exception {
-+ public void buildEnumConstantsDetails(XMLNode node,
-+ Content memberDetailsTree) throws Exception {
- configuration.getBuilderFactory().
-- getEnumConstantsBuilder(writer).buildChildren(node);
-+ getEnumConstantsBuilder(writer).buildChildren(node, memberDetailsTree);
- }
-
- /**
- * Build the field documentation.
- *
-- * @param elements the XML elements that specify how a field is documented.
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
- */
-- public void buildFieldDetails(XMLNode node) throws Exception {
-+ public void buildFieldDetails(XMLNode node,
-+ Content memberDetailsTree) throws Exception {
- configuration.getBuilderFactory().
-- getFieldBuilder(writer).buildChildren(node);
-+ getFieldBuilder(writer).buildChildren(node, memberDetailsTree);
- }
-
- /**
- * Build the constructor documentation.
- *
-- * @param elements the XML elements that specify how to document a
-- * constructor.
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
- */
-- public void buildConstructorDetails(XMLNode node) throws Exception {
-+ public void buildConstructorDetails(XMLNode node,
-+ Content memberDetailsTree) throws Exception {
- configuration.getBuilderFactory().
-- getConstructorBuilder(writer).buildChildren(node);
-+ getConstructorBuilder(writer).buildChildren(node, memberDetailsTree);
- }
-
- /**
- * Build the method documentation.
- *
-- * @param elements the XML elements that specify how a method is documented.
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
- */
-- public void buildMethodDetails(XMLNode node) throws Exception {
-+ public void buildMethodDetails(XMLNode node,
-+ Content memberDetailsTree) throws Exception {
- configuration.getBuilderFactory().
-- getMethodBuilder(writer).buildChildren(node);
-- }
--
-- /**
-- * Build the footer of the page.
-- */
-- public void buildClassFooter(XMLNode node) {
-- writer.writeFooter();
-+ getMethodBuilder(writer).buildChildren(node, memberDetailsTree);
- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstantsSummaryBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstantsSummaryBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstantsSummaryBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstantsSummaryBuilder.java
-@@ -25,11 +25,11 @@
-
- package com.sun.tools.doclets.internal.toolkit.builders;
-
-+import java.io.*;
-+import java.util.*;
-+import com.sun.javadoc.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
--import com.sun.javadoc.*;
--import java.io.*;
--import java.util.*;
-
- /**
- * Builds the Constants Summary Page.
-@@ -39,6 +39,7 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
- public class ConstantsSummaryBuilder extends AbstractBuilder {
-@@ -80,6 +81,11 @@
- private ClassDoc currentClass;
-
- /**
-+ * The content tree for the constant summary documentation.
-+ */
-+ private Content contentTree;
-+
-+ /**
- * Construct a new ConstantsSummaryBuilder.
- *
- * @param configuration the current configuration of the
-@@ -113,7 +119,7 @@
- //Doclet does not support this output.
- return;
- }
-- build(LayoutParser.getInstance(configuration).parseXML(ROOT));
-+ build(LayoutParser.getInstance(configuration).parseXML(ROOT), contentTree);
- }
-
- /**
-@@ -126,85 +132,85 @@
- /**
- * Build the constant summary.
- *
-- * @param elements the list of elements describing constant summary
-- * documentation.
-+ * @param node the XML element that specifies which components to document
-+ * @param contentTree the content tree to which the documentation will be added
- */
-- public void buildConstantSummary(XMLNode node) throws Exception {
-- buildChildren(node);
-+ public void buildConstantSummary(XMLNode node, Content contentTree) throws Exception {
-+ contentTree = writer.getHeader();
-+ buildChildren(node, contentTree);
-+ writer.addFooter(contentTree);
-+ writer.printDocument(contentTree);
- writer.close();
- }
-
- /**
-- * Build the header.
-+ * Build the list of packages.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param contentTree the content tree to which the content list will be added
- */
-- public void buildHeader(XMLNode node) {
-- writer.writeHeader();
-- }
--
-- /**
-- * Build the footer.
-- */
-- public void buildFooter(XMLNode node) {
-- writer.writeFooter();
-- }
--
-- /**
-- * Build the table of contents.
-- */
-- public void buildContents(XMLNode node) {
-- writer.writeContentsHeader();
-+ public void buildContents(XMLNode node, Content contentTree) {
-+ Content contentListTree = writer.getContentsHeader();
- PackageDoc[] packages = configuration.packages;
- printedPackageHeaders = new HashSet();
- for (int i = 0; i < packages.length; i++) {
- if (hasConstantField(packages[i]) && ! hasPrintedPackageIndex(packages[i].name())) {
-- writer.writeLinkToPackageContent(packages[i],
-+ writer.addLinkToPackageContent(packages[i],
- parsePackageName(packages[i].name()),
-- printedPackageHeaders);
-+ printedPackageHeaders, contentListTree);
- }
- }
-- writer.writeContentsFooter();
-+ contentTree.addContent(writer.getContentsList(contentListTree));
- }
-
- /**
- * Build the summary for each documented package.
- *
-- * @param elements the XML elements that represent the components
-- * of documentation for each package.
-+ * @param node the XML element that specifies which components to document
-+ * @param contentTree the tree to which the summaries will be added
- */
-- public void buildConstantSummaries(XMLNode node) {
-+ public void buildConstantSummaries(XMLNode node, Content contentTree) {
- PackageDoc[] packages = configuration.packages;
- printedPackageHeaders = new HashSet();
-+ Content summariesTree = writer.getConstantSummaries();
- for (int i = 0; i < packages.length; i++) {
- if (hasConstantField(packages[i])) {
- currentPackage = packages[i];
- //Build the documentation for the current package.
-- buildChildren(node);
-+ buildChildren(node, summariesTree);
- }
- }
-+ contentTree.addContent(summariesTree);
- }
-
- /**
-- * Build the summary for the current package.
-+ * Build the header for the given package.
- *
-- * @param elements the list of XML elements that make up package
-- * documentation.
-+ * @param node the XML element that specifies which components to document
-+ * @param summariesTree the tree to which the package header will be added
- */
-- public void buildPackageConstantSummary(XMLNode node) {
-- buildChildren(node);
-+ public void buildPackageHeader(XMLNode node, Content summariesTree) {
-+ String parsedPackageName = parsePackageName(currentPackage.name());
-+ if (! printedPackageHeaders.contains(parsedPackageName)) {
-+ writer.addPackageName(currentPackage,
-+ parsePackageName(currentPackage.name()), summariesTree);
-+ printedPackageHeaders.add(parsedPackageName);
-+ }
- }
-
- /**
- * Build the summary for the current class.
- *
-- * @param elements the list of XML elements that make up the class
-- * constant summary.
-+ * @param node the XML element that specifies which components to document
-+ * @param summariesTree the tree to which the class constant summary will be added
- */
-- public void buildClassConstantSummary(XMLNode node) {
-+ public void buildClassConstantSummary(XMLNode node, Content summariesTree) {
- ClassDoc[] classes = currentPackage.name().length() > 0 ?
- currentPackage.allClasses() :
- configuration.classDocCatalog.allClasses(
- DocletConstants.DEFAULT_PACKAGE_NAME);
- Arrays.sort(classes);
-+ Content classConstantTree = writer.getClassConstantHeader();
- for (int i = 0; i < classes.length; i++) {
- if (! classDocsWithConstFields.contains(classes[i]) ||
- ! classes[i].isIncluded()) {
-@@ -212,42 +218,20 @@
- }
- currentClass = classes[i];
- //Build the documentation for the current class.
-- buildChildren(node);
-+ buildChildren(node, classConstantTree);
- }
-+ summariesTree.addContent(classConstantTree);
- }
-
- /**
-- * Build the header for the given class.
-+ * Build the summary of constant members in the class.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classConstantTree the tree to which the constant members table
-+ * will be added
- */
-- public void buildPackageHeader(XMLNode node) {
-- String parsedPackageName = parsePackageName(currentPackage.name());
-- if (! printedPackageHeaders.contains(parsedPackageName)) {
-- writer.writePackageName(currentPackage,
-- parsePackageName(currentPackage.name()));
-- printedPackageHeaders.add(parsedPackageName);
-- }
-- }
--
-- /**
-- * Build the header for the given class.
-- */
-- public void buildClassHeader(XMLNode node) {
-- writer.writeConstantMembersHeader(currentClass);
-- }
--
-- /**
-- * Print summary of constant members in the
-- * class.
-- */
-- public void buildConstantMembers(XMLNode node) {
-- new ConstantFieldBuilder(currentClass).buildMembersSummary(node);
-- }
--
-- /**
-- * Build the footer for the given class.
-- */
-- public void buildClassFooter(XMLNode node) {
-- writer.writeConstantMembersFooter(currentClass);
-+ public void buildConstantMembers(XMLNode node, Content classConstantTree) {
-+ new ConstantFieldBuilder(currentClass).buildMembersSummary(node, classConstantTree);
- }
-
- /**
-@@ -346,12 +330,16 @@
-
- /**
- * Builds the table of constants for a given class.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classConstantTree the tree to which the class constants table
-+ * will be added
- */
-- protected void buildMembersSummary(XMLNode node) {
-+ protected void buildMembersSummary(XMLNode node, Content classConstantTree) {
- List members = new ArrayList(members());
- if (members.size() > 0) {
- Collections.sort(members);
-- writer.writeConstantMembers(classdoc, members);
-+ writer.addConstantMembers(classdoc, members, classConstantTree);
- }
- }
-
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstructorBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstructorBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstructorBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ConstructorBuilder.java
-@@ -25,10 +25,10 @@
-
- package com.sun.tools.doclets.internal.toolkit.builders;
-
-+import java.util.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.javadoc.*;
--import java.util.*;
-
- /**
- * Builds documentation for a constructor.
-@@ -38,202 +38,195 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
- public class ConstructorBuilder extends AbstractMemberBuilder {
-
-- /**
-- * The name of this builder.
-- */
-- public static final String NAME = "ConstructorDetails";
-+ /**
-+ * The name of this builder.
-+ */
-+ public static final String NAME = "ConstructorDetails";
-
-- /**
-- * The index of the current field that is being documented at this point
-- * in time.
-- */
-- private int currentMethodIndex;
-+ /**
-+ * The index of the current field that is being documented at this point
-+ * in time.
-+ */
-+ private int currentConstructorIndex;
-
-- /**
-- * The class whose constructors are being documented.
-- */
-- private ClassDoc classDoc;
-+ /**
-+ * The class whose constructors are being documented.
-+ */
-+ private ClassDoc classDoc;
-
-- /**
-- * The visible constructors for the given class.
-- */
-- private VisibleMemberMap visibleMemberMap;
-+ /**
-+ * The visible constructors for the given class.
-+ */
-+ private VisibleMemberMap visibleMemberMap;
-
-- /**
-- * The writer to output the constructor documentation.
-- */
-- private ConstructorWriter writer;
-+ /**
-+ * The writer to output the constructor documentation.
-+ */
-+ private ConstructorWriter writer;
-
-- /**
-- * The constructors being documented.
-- */
-- private List constructors;
-+ /**
-+ * The constructors being documented.
-+ */
-+ private List<ProgramElementDoc> constructors;
-
-- /**
-- * Construct a new ConstructorBuilder.
-- *
-- * @param configuration the current configuration of the
-- * doclet.
-- */
-- private ConstructorBuilder(Configuration configuration) {
-- super(configuration);
-+ /**
-+ * Construct a new ConstructorBuilder.
-+ *
-+ * @param configuration the current configuration of the
-+ * doclet.
-+ */
-+ private ConstructorBuilder(Configuration configuration) {
-+ super(configuration);
-+ }
-+
-+ /**
-+ * Construct a new ConstructorBuilder.
-+ *
-+ * @param configuration the current configuration of the doclet.
-+ * @param classDoc the class whoses members are being documented.
-+ * @param writer the doclet specific writer.
-+ */
-+ public static ConstructorBuilder getInstance(
-+ Configuration configuration,
-+ ClassDoc classDoc,
-+ ConstructorWriter writer) {
-+ ConstructorBuilder builder = new ConstructorBuilder(configuration);
-+ builder.classDoc = classDoc;
-+ builder.writer = writer;
-+ builder.visibleMemberMap =
-+ new VisibleMemberMap(
-+ classDoc,
-+ VisibleMemberMap.CONSTRUCTORS,
-+ configuration.nodeprecated);
-+ builder.constructors =
-+ new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getMembersFor(classDoc));
-+ for (int i = 0; i < builder.constructors.size(); i++) {
-+ if (builder.constructors.get(i).isProtected()
-+ || builder.constructors.get(i).isPrivate()) {
-+ writer.setFoundNonPubConstructor(true);
-+ }
-+ }
-+ if (configuration.getMemberComparator() != null) {
-+ Collections.sort(
-+ builder.constructors,
-+ configuration.getMemberComparator());
- }
-+ return builder;
-+ }
-
-- /**
-- * Construct a new ConstructorBuilder.
-- *
-- * @param configuration the current configuration of the doclet.
-- * @param classDoc the class whoses members are being documented.
-- * @param writer the doclet specific writer.
-- */
-- public static ConstructorBuilder getInstance(
-- Configuration configuration,
-- ClassDoc classDoc,
-- ConstructorWriter writer) {
-- ConstructorBuilder builder = new ConstructorBuilder(configuration);
-- builder.classDoc = classDoc;
-- builder.writer = writer;
-- builder.visibleMemberMap =
-- new VisibleMemberMap(
-- classDoc,
-- VisibleMemberMap.CONSTRUCTORS,
-- configuration.nodeprecated);
-- builder.constructors =
-- new ArrayList(builder.visibleMemberMap.getMembersFor(classDoc));
-- for (int i = 0; i < builder.constructors.size(); i++) {
-- if (((ProgramElementDoc) (builder.constructors.get(i)))
-- .isProtected()
-- || ((ProgramElementDoc) (builder.constructors.get(i)))
-- .isPrivate()) {
-- writer.setFoundNonPubConstructor(true);
-- }
-- }
-- if (configuration.getMemberComparator() != null) {
-- Collections.sort(
-- builder.constructors,
-- configuration.getMemberComparator());
-- }
-- return builder;
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getName() {
-+ return NAME;
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public boolean hasMembersToDocument() {
-+ return constructors.size() > 0;
-+ }
-+
-+ /**
-+ * Returns a list of constructors that will be documented for the given class.
-+ * This information can be used for doclet specific documentation
-+ * generation.
-+ *
-+ * @return a list of constructors that will be documented.
-+ */
-+ public List<ProgramElementDoc> members(ClassDoc classDoc) {
-+ return visibleMemberMap.getMembersFor(classDoc);
-+ }
-+
-+ /**
-+ * Return the constructor writer for this builder.
-+ *
-+ * @return the constructor writer for this builder.
-+ */
-+ public ConstructorWriter getWriter() {
-+ return writer;
-+ }
-+
-+ /**
-+ * Build the constructor documentation.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
-+ */
-+ public void buildConstructorDoc(XMLNode node, Content memberDetailsTree) {
-+ if (writer == null) {
-+ return;
- }
-+ int size = constructors.size();
-+ if (size > 0) {
-+ Content constructorDetailsTree = writer.getConstructorDetailsTreeHeader(
-+ classDoc, memberDetailsTree);
-+ for (currentConstructorIndex = 0; currentConstructorIndex < size;
-+ currentConstructorIndex++) {
-+ Content constructorDocTree = writer.getConstructorDocTreeHeader(
-+ (ConstructorDoc) constructors.get(currentConstructorIndex),
-+ constructorDetailsTree);
-+ buildChildren(node, constructorDocTree);
-+ constructorDetailsTree.addContent(writer.getConstructorDoc(
-+ constructorDocTree, (currentConstructorIndex == size - 1)));
-+ }
-+ memberDetailsTree.addContent(
-+ writer.getConstructorDetails(constructorDetailsTree));
-+ }
-+ }
-
-- /**
-- * {@inheritDoc}
-- */
-- public String getName() {
-- return NAME;
-+ /**
-+ * Build the signature.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param constructorDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildSignature(XMLNode node, Content constructorDocTree) {
-+ constructorDocTree.addContent(
-+ writer.getSignature(
-+ (ConstructorDoc) constructors.get(currentConstructorIndex)));
-+ }
-+
-+ /**
-+ * Build the deprecation information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param constructorDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildDeprecationInfo(XMLNode node, Content constructorDocTree) {
-+ writer.addDeprecated(
-+ (ConstructorDoc) constructors.get(currentConstructorIndex), constructorDocTree);
-+ }
-+
-+ /**
-+ * Build the comments for the constructor. Do nothing if
-+ * {@link Configuration#nocomment} is set to true.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param constructorDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildConstructorComments(XMLNode node, Content constructorDocTree) {
-+ if (!configuration.nocomment) {
-+ writer.addComments(
-+ (ConstructorDoc) constructors.get(currentConstructorIndex),
-+ constructorDocTree);
- }
-+ }
-
-- /**
-- * {@inheritDoc}
-- */
-- public boolean hasMembersToDocument() {
-- return constructors.size() > 0;
-- }
--
-- /**
-- * Returns a list of constructors that will be documented for the given class.
-- * This information can be used for doclet specific documentation
-- * generation.
-- *
-- * @return a list of constructors that will be documented.
-- */
-- public List members(ClassDoc classDoc) {
-- return visibleMemberMap.getMembersFor(classDoc);
-- }
--
-- /**
-- * Return the constructor writer for this builder.
-- *
-- * @return the constructor writer for this builder.
-- */
-- public ConstructorWriter getWriter() {
-- return writer;
-- }
--
-- /**
-- * Build the constructor documentation.
-- *
-- * @param elements the XML elements that specify how to construct this
-- * documentation.
-- */
-- public void buildConstructorDoc(XMLNode node) {
-- if (writer == null) {
-- return;
-- }
-- for (currentMethodIndex = 0;
-- currentMethodIndex < constructors.size();
-- currentMethodIndex++) {
-- buildChildren(node);
-- }
-- }
--
-- /**
-- * Build the overall header.
-- */
-- public void buildHeader(XMLNode node) {
-- writer.writeHeader(
-- classDoc,
-- configuration.getText("doclet.Constructor_Detail"));
-- }
--
-- /**
-- * Build the header for the individual constructor.
-- */
-- public void buildConstructorHeader(XMLNode node) {
-- writer.writeConstructorHeader(
-- (ConstructorDoc) constructors.get(currentMethodIndex),
-- currentMethodIndex == 0);
-- }
--
-- /**
-- * Build the signature.
-- */
-- public void buildSignature(XMLNode node) {
-- writer.writeSignature(
-- (ConstructorDoc) constructors.get(currentMethodIndex));
-- }
--
-- /**
-- * Build the deprecation information.
-- */
-- public void buildDeprecationInfo(XMLNode node) {
-- writer.writeDeprecated(
-- (ConstructorDoc) constructors.get(currentMethodIndex));
-- }
--
-- /**
-- * Build the comments for the constructor. Do nothing if
-- * {@link Configuration#nocomment} is set to true.
-- */
-- public void buildConstructorComments(XMLNode node) {
-- if (!configuration.nocomment) {
-- writer.writeComments(
-- (ConstructorDoc) constructors.get(currentMethodIndex));
-- }
-- }
--
-- /**
-- * Build the tag information.
-- */
-- public void buildTagInfo(XMLNode node) {
-- writer.writeTags((ConstructorDoc) constructors.get(currentMethodIndex));
-- }
--
-- /**
-- * Build the footer for the individual constructor.
-- */
-- public void buildConstructorFooter(XMLNode node) {
-- writer.writeConstructorFooter();
-- }
--
-- /**
-- * Build the overall footer.
-- */
-- public void buildFooter(XMLNode node) {
-- writer.writeFooter(classDoc);
-- }
-+ /**
-+ * Build the tag information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param constructorDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildTagInfo(XMLNode node, Content constructorDocTree) {
-+ writer.addTags((ConstructorDoc) constructors.get(currentConstructorIndex),
-+ constructorDocTree);
-+ }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/EnumConstantBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/EnumConstantBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/EnumConstantBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/EnumConstantBuilder.java
-@@ -25,10 +25,10 @@
-
- package com.sun.tools.doclets.internal.toolkit.builders;
-
-+import java.util.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.javadoc.*;
--import java.util.*;
-
- /**
- * Builds documentation for a enum constants.
-@@ -38,200 +38,195 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
- public class EnumConstantBuilder extends AbstractMemberBuilder {
-
-- /**
-- * The class whose enum constants are being documented.
-- */
-- private ClassDoc classDoc;
-+ /**
-+ * The class whose enum constants are being documented.
-+ */
-+ private ClassDoc classDoc;
-
-- /**
-- * The visible enum constantss for the given class.
-- */
-- private VisibleMemberMap visibleMemberMap;
-+ /**
-+ * The visible enum constantss for the given class.
-+ */
-+ private VisibleMemberMap visibleMemberMap;
-
-- /**
-- * The writer to output the enum constants documentation.
-- */
-- private EnumConstantWriter writer;
-+ /**
-+ * The writer to output the enum constants documentation.
-+ */
-+ private EnumConstantWriter writer;
-
-- /**
-- * The list of enum constants being documented.
-- */
-- private List enumConstants;
-+ /**
-+ * The list of enum constants being documented.
-+ */
-+ private List<ProgramElementDoc> enumConstants;
-
-- /**
-- * The index of the current enum constant that is being documented at this point
-- * in time.
-- */
-- private int currentEnumConstantsIndex;
-+ /**
-+ * The index of the current enum constant that is being documented at this point
-+ * in time.
-+ */
-+ private int currentEnumConstantsIndex;
-
-- /**
-- * Construct a new EnumConstantsBuilder.
-- *
-- * @param configuration the current configuration of the
-- * doclet.
-- */
-- private EnumConstantBuilder(Configuration configuration) {
-- super(configuration);
-+ /**
-+ * Construct a new EnumConstantsBuilder.
-+ *
-+ * @param configuration the current configuration of the
-+ * doclet.
-+ */
-+ private EnumConstantBuilder(Configuration configuration) {
-+ super(configuration);
-+ }
-+
-+ /**
-+ * Construct a new EnumConstantsBuilder.
-+ *
-+ * @param configuration the current configuration of the doclet.
-+ * @param classDoc the class whoses members are being documented.
-+ * @param writer the doclet specific writer.
-+ */
-+ public static EnumConstantBuilder getInstance(
-+ Configuration configuration,
-+ ClassDoc classDoc,
-+ EnumConstantWriter writer) {
-+ EnumConstantBuilder builder = new EnumConstantBuilder(configuration);
-+ builder.classDoc = classDoc;
-+ builder.writer = writer;
-+ builder.visibleMemberMap =
-+ new VisibleMemberMap(
-+ classDoc,
-+ VisibleMemberMap.ENUM_CONSTANTS,
-+ configuration.nodeprecated);
-+ builder.enumConstants =
-+ new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getMembersFor(classDoc));
-+ if (configuration.getMemberComparator() != null) {
-+ Collections.sort(
-+ builder.enumConstants,
-+ configuration.getMemberComparator());
-+ }
-+ return builder;
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getName() {
-+ return "EnumConstantDetails";
-+ }
-+
-+ /**
-+ * Returns a list of enum constants that will be documented for the given class.
-+ * This information can be used for doclet specific documentation
-+ * generation.
-+ *
-+ * @param classDoc the {@link ClassDoc} we want to check.
-+ * @return a list of enum constants that will be documented.
-+ */
-+ public List<ProgramElementDoc> members(ClassDoc classDoc) {
-+ return visibleMemberMap.getMembersFor(classDoc);
-+ }
-+
-+ /**
-+ * Returns the visible member map for the enum constants of this class.
-+ *
-+ * @return the visible member map for the enum constants of this class.
-+ */
-+ public VisibleMemberMap getVisibleMemberMap() {
-+ return visibleMemberMap;
-+ }
-+
-+ /**
-+ * summaryOrder.size()
-+ */
-+ public boolean hasMembersToDocument() {
-+ return enumConstants.size() > 0;
-+ }
-+
-+ /**
-+ * Build the enum constant documentation.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
-+ */
-+ public void buildEnumConstant(XMLNode node, Content memberDetailsTree) {
-+ if (writer == null) {
-+ return;
- }
-+ int size = enumConstants.size();
-+ if (size > 0) {
-+ Content enumConstantsDetailsTree = writer.getEnumConstantsDetailsTreeHeader(
-+ classDoc, memberDetailsTree);
-+ for (currentEnumConstantsIndex = 0; currentEnumConstantsIndex < size;
-+ currentEnumConstantsIndex++) {
-+ Content enumConstantsTree = writer.getEnumConstantsTreeHeader(
-+ (FieldDoc) enumConstants.get(currentEnumConstantsIndex),
-+ enumConstantsDetailsTree);
-+ buildChildren(node, enumConstantsTree);
-+ enumConstantsDetailsTree.addContent(writer.getEnumConstants(
-+ enumConstantsTree, (currentEnumConstantsIndex == size - 1)));
-+ }
-+ memberDetailsTree.addContent(
-+ writer.getEnumConstantsDetails(enumConstantsDetailsTree));
-+ }
-+ }
-
-- /**
-- * Construct a new EnumConstantsBuilder.
-- *
-- * @param configuration the current configuration of the doclet.
-- * @param classDoc the class whoses members are being documented.
-- * @param writer the doclet specific writer.
-- */
-- public static EnumConstantBuilder getInstance(
-- Configuration configuration,
-- ClassDoc classDoc,
-- EnumConstantWriter writer) {
-- EnumConstantBuilder builder = new EnumConstantBuilder(configuration);
-- builder.classDoc = classDoc;
-- builder.writer = writer;
-- builder.visibleMemberMap =
-- new VisibleMemberMap(
-- classDoc,
-- VisibleMemberMap.ENUM_CONSTANTS,
-- configuration.nodeprecated);
-- builder.enumConstants =
-- new ArrayList(builder.visibleMemberMap.getMembersFor(classDoc));
-- if (configuration.getMemberComparator() != null) {
-- Collections.sort(
-- builder.enumConstants,
-- configuration.getMemberComparator());
-- }
-- return builder;
-+ /**
-+ * Build the signature.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param enumConstantsTree the content tree to which the documentation will be added
-+ */
-+ public void buildSignature(XMLNode node, Content enumConstantsTree) {
-+ enumConstantsTree.addContent(writer.getSignature(
-+ (FieldDoc) enumConstants.get(currentEnumConstantsIndex)));
-+ }
-+
-+ /**
-+ * Build the deprecation information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param enumConstantsTree the content tree to which the documentation will be added
-+ */
-+ public void buildDeprecationInfo(XMLNode node, Content enumConstantsTree) {
-+ writer.addDeprecated(
-+ (FieldDoc) enumConstants.get(currentEnumConstantsIndex),
-+ enumConstantsTree);
-+ }
-+
-+ /**
-+ * Build the comments for the enum constant. Do nothing if
-+ * {@link Configuration#nocomment} is set to true.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param enumConstantsTree the content tree to which the documentation will be added
-+ */
-+ public void buildEnumConstantComments(XMLNode node, Content enumConstantsTree) {
-+ if (!configuration.nocomment) {
-+ writer.addComments(
-+ (FieldDoc) enumConstants.get(currentEnumConstantsIndex),
-+ enumConstantsTree);
- }
-+ }
-
-- /**
-- * {@inheritDoc}
-- */
-- public String getName() {
-- return "EnumConstantDetails";
-- }
-+ /**
-+ * Build the tag information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param enumConstantsTree the content tree to which the documentation will be added
-+ */
-+ public void buildTagInfo(XMLNode node, Content enumConstantsTree) {
-+ writer.addTags(
-+ (FieldDoc) enumConstants.get(currentEnumConstantsIndex),
-+ enumConstantsTree);
-+ }
-
-- /**
-- * Returns a list of enum constants that will be documented for the given class.
-- * This information can be used for doclet specific documentation
-- * generation.
-- *
-- * @param classDoc the {@link ClassDoc} we want to check.
-- * @return a list of enum constants that will be documented.
-- */
-- public List members(ClassDoc classDoc) {
-- return visibleMemberMap.getMembersFor(classDoc);
-- }
--
-- /**
-- * Returns the visible member map for the enum constants of this class.
-- *
-- * @return the visible member map for the enum constants of this class.
-- */
-- public VisibleMemberMap getVisibleMemberMap() {
-- return visibleMemberMap;
-- }
--
-- /**
-- * summaryOrder.size()
-- */
-- public boolean hasMembersToDocument() {
-- return enumConstants.size() > 0;
-- }
--
-- /**
-- * Build the enum constant documentation.
-- *
-- * @param elements the XML elements that specify how to construct this
-- * documentation.
-- */
-- public void buildEnumConstant(XMLNode node) {
-- if (writer == null) {
-- return;
-- }
-- for (currentEnumConstantsIndex = 0;
-- currentEnumConstantsIndex < enumConstants.size();
-- currentEnumConstantsIndex++) {
-- buildChildren(node);
-- }
-- }
--
-- /**
-- * Build the overall header.
-- */
-- public void buildHeader(XMLNode node) {
-- writer.writeHeader(
-- classDoc,
-- configuration.getText("doclet.Enum_Constant_Detail"));
-- }
--
-- /**
-- * Build the header for the individual enum constants.
-- */
-- public void buildEnumConstantHeader(XMLNode node) {
-- writer.writeEnumConstantHeader(
-- (FieldDoc) enumConstants.get(currentEnumConstantsIndex),
-- currentEnumConstantsIndex == 0);
-- }
--
-- /**
-- * Build the signature.
-- */
-- public void buildSignature(XMLNode node) {
-- writer.writeSignature(
-- (FieldDoc) enumConstants.get(currentEnumConstantsIndex));
-- }
--
-- /**
-- * Build the deprecation information.
-- */
-- public void buildDeprecationInfo(XMLNode node) {
-- writer.writeDeprecated(
-- (FieldDoc) enumConstants.get(currentEnumConstantsIndex));
-- }
--
-- /**
-- * Build the comments for the enum constant. Do nothing if
-- * {@link Configuration#nocomment} is set to true.
-- */
-- public void buildEnumConstantComments(XMLNode node) {
-- if (!configuration.nocomment) {
-- writer.writeComments(
-- (FieldDoc) enumConstants.get(currentEnumConstantsIndex));
-- }
-- }
--
-- /**
-- * Build the tag information.
-- */
-- public void buildTagInfo(XMLNode node) {
-- writer.writeTags(
-- (FieldDoc) enumConstants.get(currentEnumConstantsIndex));
-- }
--
-- /**
-- * Build the footer for the individual enum constants.
-- */
-- public void buildEnumConstantFooter(XMLNode node) {
-- writer.writeEnumConstantFooter();
-- }
--
-- /**
-- * Build the overall footer.
-- */
-- public void buildFooter(XMLNode node) {
-- writer.writeFooter(classDoc);
-- }
--
-- /**
-- * Return the enum constant writer for this builder.
-- *
-- * @return the enum constant writer for this builder.
-- */
-- public EnumConstantWriter getWriter() {
-- return writer;
-- }
-+ /**
-+ * Return the enum constant writer for this builder.
-+ *
-+ * @return the enum constant writer for this builder.
-+ */
-+ public EnumConstantWriter getWriter() {
-+ return writer;
-+ }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/FieldBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/FieldBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/FieldBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/FieldBuilder.java
-@@ -25,10 +25,10 @@
-
- package com.sun.tools.doclets.internal.toolkit.builders;
-
-+import java.util.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.javadoc.*;
--import java.util.*;
-
- /**
- * Builds documentation for a field.
-@@ -38,197 +38,191 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
- public class FieldBuilder extends AbstractMemberBuilder {
-
-- /**
-- * The class whose fields are being documented.
-- */
-- private ClassDoc classDoc;
-+ /**
-+ * The class whose fields are being documented.
-+ */
-+ private ClassDoc classDoc;
-
-- /**
-- * The visible fields for the given class.
-- */
-- private VisibleMemberMap visibleMemberMap;
-+ /**
-+ * The visible fields for the given class.
-+ */
-+ private VisibleMemberMap visibleMemberMap;
-
-- /**
-- * The writer to output the field documentation.
-- */
-- private FieldWriter writer;
-+ /**
-+ * The writer to output the field documentation.
-+ */
-+ private FieldWriter writer;
-
-- /**
-- * The list of fields being documented.
-- */
-- private List fields;
-+ /**
-+ * The list of fields being documented.
-+ */
-+ private List<ProgramElementDoc> fields;
-
-- /**
-- * The index of the current field that is being documented at this point
-- * in time.
-- */
-- private int currentFieldIndex;
-+ /**
-+ * The index of the current field that is being documented at this point
-+ * in time.
-+ */
-+ private int currentFieldIndex;
-
-- /**
-- * Construct a new FieldBuilder.
-- *
-- * @param configuration the current configuration of the
-- * doclet.
-- */
-- private FieldBuilder(Configuration configuration) {
-- super(configuration);
-+ /**
-+ * Construct a new FieldBuilder.
-+ *
-+ * @param configuration the current configuration of the
-+ * doclet.
-+ */
-+ private FieldBuilder(Configuration configuration) {
-+ super(configuration);
-+ }
-+
-+ /**
-+ * Construct a new FieldBuilder.
-+ *
-+ * @param configuration the current configuration of the doclet.
-+ * @param classDoc the class whoses members are being documented.
-+ * @param writer the doclet specific writer.
-+ */
-+ public static FieldBuilder getInstance(
-+ Configuration configuration,
-+ ClassDoc classDoc,
-+ FieldWriter writer) {
-+ FieldBuilder builder = new FieldBuilder(configuration);
-+ builder.classDoc = classDoc;
-+ builder.writer = writer;
-+ builder.visibleMemberMap =
-+ new VisibleMemberMap(
-+ classDoc,
-+ VisibleMemberMap.FIELDS,
-+ configuration.nodeprecated);
-+ builder.fields =
-+ new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getLeafClassMembers(
-+ configuration));
-+ if (configuration.getMemberComparator() != null) {
-+ Collections.sort(
-+ builder.fields,
-+ configuration.getMemberComparator());
- }
-+ return builder;
-+ }
-
-- /**
-- * Construct a new FieldBuilder.
-- *
-- * @param configuration the current configuration of the doclet.
-- * @param classDoc the class whoses members are being documented.
-- * @param writer the doclet specific writer.
-- */
-- public static FieldBuilder getInstance(
-- Configuration configuration,
-- ClassDoc classDoc,
-- FieldWriter writer) {
-- FieldBuilder builder = new FieldBuilder(configuration);
-- builder.classDoc = classDoc;
-- builder.writer = writer;
-- builder.visibleMemberMap =
-- new VisibleMemberMap(
-- classDoc,
-- VisibleMemberMap.FIELDS,
-- configuration.nodeprecated);
-- builder.fields =
-- new ArrayList(builder.visibleMemberMap.getLeafClassMembers(
-- configuration));
-- if (configuration.getMemberComparator() != null) {
-- Collections.sort(
-- builder.fields,
-- configuration.getMemberComparator());
-- }
-- return builder;
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getName() {
-+ return "FieldDetails";
-+ }
-+
-+ /**
-+ * Returns a list of fields that will be documented for the given class.
-+ * This information can be used for doclet specific documentation
-+ * generation.
-+ *
-+ * @param classDoc the {@link ClassDoc} we want to check.
-+ * @return a list of fields that will be documented.
-+ */
-+ public List<ProgramElementDoc> members(ClassDoc classDoc) {
-+ return visibleMemberMap.getMembersFor(classDoc);
-+ }
-+
-+ /**
-+ * Returns the visible member map for the fields of this class.
-+ *
-+ * @return the visible member map for the fields of this class.
-+ */
-+ public VisibleMemberMap getVisibleMemberMap() {
-+ return visibleMemberMap;
-+ }
-+
-+ /**
-+ * summaryOrder.size()
-+ */
-+ public boolean hasMembersToDocument() {
-+ return fields.size() > 0;
-+ }
-+
-+ /**
-+ * Build the field documentation.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
-+ */
-+ public void buildFieldDoc(XMLNode node, Content memberDetailsTree) {
-+ if (writer == null) {
-+ return;
-+ }
-+ int size = fields.size();
-+ if (size > 0) {
-+ Content fieldDetailsTree = writer.getFieldDetailsTreeHeader(
-+ classDoc, memberDetailsTree);
-+ for (currentFieldIndex = 0; currentFieldIndex < size;
-+ currentFieldIndex++) {
-+ Content fieldDocTree = writer.getFieldDocTreeHeader(
-+ (FieldDoc) fields.get(currentFieldIndex),
-+ fieldDetailsTree);
-+ buildChildren(node, fieldDocTree);
-+ fieldDetailsTree.addContent(writer.getFieldDoc(
-+ fieldDocTree, (currentFieldIndex == size - 1)));
-+ }
-+ memberDetailsTree.addContent(
-+ writer.getFieldDetails(fieldDetailsTree));
- }
-+ }
-
-- /**
-- * {@inheritDoc}
-- */
-- public String getName() {
-- return "FieldDetails";
-+ /**
-+ * Build the signature.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param fieldDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildSignature(XMLNode node, Content fieldDocTree) {
-+ fieldDocTree.addContent(
-+ writer.getSignature((FieldDoc) fields.get(currentFieldIndex)));
-+ }
-+
-+ /**
-+ * Build the deprecation information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param fieldDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildDeprecationInfo(XMLNode node, Content fieldDocTree) {
-+ writer.addDeprecated(
-+ (FieldDoc) fields.get(currentFieldIndex), fieldDocTree);
-+ }
-+
-+ /**
-+ * Build the comments for the field. Do nothing if
-+ * {@link Configuration#nocomment} is set to true.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param fieldDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildFieldComments(XMLNode node, Content fieldDocTree) {
-+ if (!configuration.nocomment) {
-+ writer.addComments((FieldDoc) fields.get(currentFieldIndex), fieldDocTree);
- }
-+ }
-
-- /**
-- * Returns a list of fields that will be documented for the given class.
-- * This information can be used for doclet specific documentation
-- * generation.
-- *
-- * @param classDoc the {@link ClassDoc} we want to check.
-- * @return a list of fields that will be documented.
-- */
-- public List members(ClassDoc classDoc) {
-- return visibleMemberMap.getMembersFor(classDoc);
-- }
-+ /**
-+ * Build the tag information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param fieldDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildTagInfo(XMLNode node, Content fieldDocTree) {
-+ writer.addTags((FieldDoc) fields.get(currentFieldIndex), fieldDocTree);
-+ }
-
-- /**
-- * Returns the visible member map for the fields of this class.
-- *
-- * @return the visible member map for the fields of this class.
-- */
-- public VisibleMemberMap getVisibleMemberMap() {
-- return visibleMemberMap;
-- }
--
-- /**
-- * summaryOrder.size()
-- */
-- public boolean hasMembersToDocument() {
-- return fields.size() > 0;
-- }
--
-- /**
-- * Build the field documentation.
-- *
-- * @param elements the XML elements that specify how to construct this
-- * documentation.
-- */
-- public void buildFieldDoc(XMLNode node) {
-- if (writer == null) {
-- return;
-- }
-- for (currentFieldIndex = 0;
-- currentFieldIndex < fields.size();
-- currentFieldIndex++) {
-- buildChildren(node);
-- }
-- }
--
-- /**
-- * Build the overall header.
-- */
-- public void buildHeader(XMLNode node) {
-- writer.writeHeader(
-- classDoc,
-- configuration.getText("doclet.Field_Detail"));
-- }
--
-- /**
-- * Build the header for the individual field.
-- */
-- public void buildFieldHeader(XMLNode node) {
-- writer.writeFieldHeader(
-- (FieldDoc) fields.get(currentFieldIndex),
-- currentFieldIndex == 0);
-- }
--
-- /**
-- * Build the signature.
-- */
-- public void buildSignature(XMLNode node) {
-- writer.writeSignature((FieldDoc) fields.get(currentFieldIndex));
-- }
--
-- /**
-- * Build the deprecation information.
-- */
-- public void buildDeprecationInfo(XMLNode node) {
-- writer.writeDeprecated((FieldDoc) fields.get(currentFieldIndex));
-- }
--
-- /**
-- * Build the comments for the field. Do nothing if
-- * {@link Configuration#nocomment} is set to true.
-- */
-- public void buildFieldComments(XMLNode node) {
-- if (!configuration.nocomment) {
-- writer.writeComments((FieldDoc) fields.get(currentFieldIndex));
-- }
-- }
--
-- /**
-- * Build the tag information.
-- */
-- public void buildTagInfo(XMLNode node) {
-- writer.writeTags((FieldDoc) fields.get(currentFieldIndex));
-- }
--
-- /**
-- * Build the footer for the individual field.
-- */
-- public void buildFieldFooter(XMLNode node) {
-- writer.writeFieldFooter();
-- }
--
-- /**
-- * Build the overall footer.
-- */
-- public void buildFooter(XMLNode node) {
-- writer.writeFooter(classDoc);
-- }
--
-- /**
-- * Return the field writer for this builder.
-- *
-- * @return the field writer for this builder.
-- */
-- public FieldWriter getWriter() {
-- return writer;
-- }
-+ /**
-+ * Return the field writer for this builder.
-+ *
-+ * @return the field writer for this builder.
-+ */
-+ public FieldWriter getWriter() {
-+ return writer;
-+ }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/LayoutParser.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/LayoutParser.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/LayoutParser.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/LayoutParser.java
-@@ -76,7 +76,7 @@
- /**
- * Parse the XML specifying the layout of the documentation.
- *
-- * @return List the list of XML elements parsed.
-+ * @return the list of XML elements parsed.
- */
- public XMLNode parseXML(String root) {
- if (xmlElementsMap.containsKey(root)) {
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MemberSummaryBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MemberSummaryBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MemberSummaryBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MemberSummaryBuilder.java
-@@ -25,10 +25,10 @@
-
- package com.sun.tools.doclets.internal.toolkit.builders;
-
-+import java.util.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.javadoc.*;
--import java.util.*;
-
- /**
- * Builds the member summary.
-@@ -38,49 +38,50 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
- public class MemberSummaryBuilder extends AbstractMemberBuilder {
-
-- /**
-- * The XML root for this builder.
-- */
-- public static final String NAME = "MemberSummary";
-+ /**
-+ * The XML root for this builder.
-+ */
-+ public static final String NAME = "MemberSummary";
-
-- /**
-- * The visible members for the given class.
-- */
-- private VisibleMemberMap[] visibleMemberMaps;
-+ /**
-+ * The visible members for the given class.
-+ */
-+ private VisibleMemberMap[] visibleMemberMaps;
-
-- /**
-- * The member summary writers for the given class.
-- */
-- private MemberSummaryWriter[] memberSummaryWriters;
-+ /**
-+ * The member summary writers for the given class.
-+ */
-+ private MemberSummaryWriter[] memberSummaryWriters;
-
-- /**
-- * The type being documented.
-- */
-- private ClassDoc classDoc;
-+ /**
-+ * The type being documented.
-+ */
-+ private ClassDoc classDoc;
-
-- private MemberSummaryBuilder(Configuration configuration) {
-- super(configuration);
-- }
-+ private MemberSummaryBuilder(Configuration configuration) {
-+ super(configuration);
-+ }
-
-- /**
-- * Construct a new MemberSummaryBuilder.
-- *
-- * @param classWriter the writer for the class whose members are being
-- * summarized.
-- * @param configuration the current configuration of the doclet.
-- */
-- public static MemberSummaryBuilder getInstance(
-- ClassWriter classWriter, Configuration configuration)
-- throws Exception {
-- MemberSummaryBuilder builder = new MemberSummaryBuilder(configuration);
-- builder.classDoc = classWriter.getClassDoc();
-- builder.init(classWriter);
-- return builder;
-- }
-+ /**
-+ * Construct a new MemberSummaryBuilder.
-+ *
-+ * @param classWriter the writer for the class whose members are being
-+ * summarized.
-+ * @param configuration the current configuration of the doclet.
-+ */
-+ public static MemberSummaryBuilder getInstance(
-+ ClassWriter classWriter, Configuration configuration)
-+ throws Exception {
-+ MemberSummaryBuilder builder = new MemberSummaryBuilder(configuration);
-+ builder.classDoc = classWriter.getClassDoc();
-+ builder.init(classWriter);
-+ return builder;
-+ }
-
- /**
- * Construct a new MemberSummaryBuilder.
-@@ -90,8 +91,8 @@
- * @param configuration the current configuration of the doclet.
- */
- public static MemberSummaryBuilder getInstance(
-- AnnotationTypeWriter annotationTypeWriter, Configuration configuration)
-- throws Exception {
-+ AnnotationTypeWriter annotationTypeWriter, Configuration configuration)
-+ throws Exception {
- MemberSummaryBuilder builder = new MemberSummaryBuilder(configuration);
- builder.classDoc = annotationTypeWriter.getAnnotationTypeDoc();
- builder.init(annotationTypeWriter);
-@@ -100,200 +101,210 @@
-
- private void init(Object writer) throws Exception {
- visibleMemberMaps =
-- new VisibleMemberMap[VisibleMemberMap.NUM_MEMBER_TYPES];
-+ new VisibleMemberMap[VisibleMemberMap.NUM_MEMBER_TYPES];
- for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
- visibleMemberMaps[i] =
-- new VisibleMemberMap(
-+ new VisibleMemberMap(
- classDoc,
- i,
- configuration.nodeprecated);
- }
- memberSummaryWriters =
-- new MemberSummaryWriter[VisibleMemberMap.NUM_MEMBER_TYPES];
-+ new MemberSummaryWriter[VisibleMemberMap.NUM_MEMBER_TYPES];
- for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
- if (classDoc.isAnnotationType()) {
- memberSummaryWriters[i] =
- visibleMemberMaps[i].noVisibleMembers()?
- null :
- configuration.getWriterFactory().getMemberSummaryWriter(
-- (AnnotationTypeWriter) writer, i);
-+ (AnnotationTypeWriter) writer, i);
- } else {
- memberSummaryWriters[i] =
- visibleMemberMaps[i].noVisibleMembers()?
- null :
- configuration.getWriterFactory().getMemberSummaryWriter(
-- (ClassWriter) writer, i);
-+ (ClassWriter) writer, i);
- }
- }
-
- }
-
-- /**
-- * {@inheritDoc}
-- */
-- public String getName() {
-- return NAME;
-- }
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getName() {
-+ return NAME;
-+ }
-
-- /**
-- * Return the specified visible member map.
-- *
-- * @param type the type of visible member map to return.
-- * @return the specified visible member map.
-- * @throws ArrayIndexOutOfBoundsException when the type is invalid.
-- * @see VisibleMemberMap
-- */
-- public VisibleMemberMap getVisibleMemberMap(int type) {
-- return visibleMemberMaps[type];
-- }
-+ /**
-+ * Return the specified visible member map.
-+ *
-+ * @param type the type of visible member map to return.
-+ * @return the specified visible member map.
-+ * @throws ArrayIndexOutOfBoundsException when the type is invalid.
-+ * @see VisibleMemberMap
-+ */
-+ public VisibleMemberMap getVisibleMemberMap(int type) {
-+ return visibleMemberMaps[type];
-+ }
-
-- /**
-- * Return the specified member summary writer.
-- *
-- * @param type the type of member summary writer to return.
-- * @return the specified member summary writer.
-- * @throws ArrayIndexOutOfBoundsException when the type is invalid.
-- * @see VisibleMemberMap
-- */
-- public MemberSummaryWriter getMemberSummaryWriter(int type) {
-- return memberSummaryWriters[type];
-- }
-+ /**
-+ * Return the specified member summary writer.
-+ *
-+ * @param type the type of member summary writer to return.
-+ * @return the specified member summary writer.
-+ * @throws ArrayIndexOutOfBoundsException when the type is invalid.
-+ * @see VisibleMemberMap
-+ */
-+ public MemberSummaryWriter getMemberSummaryWriter(int type) {
-+ return memberSummaryWriters[type];
-+ }
-
-- /**
-- * Returns a list of methods that will be documented for the given class.
-- * This information can be used for doclet specific documentation
-- * generation.
-- *
-- * @param classDoc the {@link ClassDoc} we want to check.
-- * @param type the type of members to return.
-- * @return a list of methods that will be documented.
-- * @see VisibleMemberMap
-- */
-- public List members(int type) {
-- return visibleMemberMaps[type].getLeafClassMembers(configuration);
-- }
-+ /**
-+ * Returns a list of methods that will be documented for the given class.
-+ * This information can be used for doclet specific documentation
-+ * generation.
-+ *
-+ * @param classDoc the {@link ClassDoc} we want to check.
-+ * @param type the type of members to return.
-+ * @return a list of methods that will be documented.
-+ * @see VisibleMemberMap
-+ */
-+ public List<ProgramElementDoc> members(int type) {
-+ return visibleMemberMaps[type].getLeafClassMembers(configuration);
-+ }
-
-- /**
-- * Return true it there are any members to summarize.
-- *
-- * @return true if there are any members to summarize.
-- */
-- public boolean hasMembersToDocument() {
-+ /**
-+ * Return true it there are any members to summarize.
-+ *
-+ * @return true if there are any members to summarize.
-+ */
-+ public boolean hasMembersToDocument() {
- if (classDoc instanceof AnnotationTypeDoc) {
- return ((AnnotationTypeDoc) classDoc).elements().length > 0;
- }
-- for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
-- VisibleMemberMap members = visibleMemberMaps[i];
-- if (!members.noVisibleMembers()) {
-- return true;
-- }
-- }
-- return false;
-+ for (int i = 0; i < VisibleMemberMap.NUM_MEMBER_TYPES; i++) {
-+ VisibleMemberMap members = visibleMemberMaps[i];
-+ if (!members.noVisibleMembers()) {
-+ return true;
-+ }
- }
-
-- /**
-- * Build the summary for the enum constants.
-- */
-- public void buildEnumConstantsSummary(XMLNode node) {
-- buildSummary(
-- memberSummaryWriters[VisibleMemberMap.ENUM_CONSTANTS],
-- visibleMemberMaps[VisibleMemberMap.ENUM_CONSTANTS]);
-- }
-+ return false;
-+ }
-
- /**
-- * Build the summary for the optional members.
-+ * Build the summary for the enum constants.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberSummaryTree the content tree to which the documentation will be added
- */
-- public void buildAnnotationTypeOptionalMemberSummary(XMLNode node) {
-- buildSummary(
-- memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL],
-- visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL]);
-+ public void buildEnumConstantsSummary(XMLNode node, Content memberSummaryTree) {
-+ MemberSummaryWriter writer =
-+ memberSummaryWriters[VisibleMemberMap.ENUM_CONSTANTS];
-+ VisibleMemberMap visibleMemberMap =
-+ visibleMemberMaps[VisibleMemberMap.ENUM_CONSTANTS];
-+ addSummary(writer, visibleMemberMap, false, memberSummaryTree);
- }
-
- /**
- * Build the summary for the optional members.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberSummaryTree the content tree to which the documentation will be added
- */
-- public void buildAnnotationTypeRequiredMemberSummary(XMLNode node) {
-- buildSummary(
-- memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED],
-- visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED]);
-+ public void buildAnnotationTypeOptionalMemberSummary(XMLNode node, Content memberSummaryTree) {
-+ MemberSummaryWriter writer =
-+ memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL];
-+ VisibleMemberMap visibleMemberMap =
-+ visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL];
-+ addSummary(writer, visibleMemberMap, false, memberSummaryTree);
- }
-
-- /**
-- * Build the summary for the fields.
-- */
-- public void buildFieldsSummary(XMLNode node) {
-- buildSummary(
-- memberSummaryWriters[VisibleMemberMap.FIELDS],
-- visibleMemberMaps[VisibleMemberMap.FIELDS]);
-- }
-+ /**
-+ * Build the summary for the optional members.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberSummaryTree the content tree to which the documentation will be added
-+ */
-+ public void buildAnnotationTypeRequiredMemberSummary(XMLNode node, Content memberSummaryTree) {
-+ MemberSummaryWriter writer =
-+ memberSummaryWriters[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED];
-+ VisibleMemberMap visibleMemberMap =
-+ visibleMemberMaps[VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED];
-+ addSummary(writer, visibleMemberMap, false, memberSummaryTree);
-+ }
-
-- /**
-- * Build the inherited summary for the fields.
-- */
-- public void buildFieldsInheritedSummary(XMLNode node) {
-- buildInheritedSummary(
-- memberSummaryWriters[VisibleMemberMap.FIELDS],
-- visibleMemberMaps[VisibleMemberMap.FIELDS]);
-- }
-+ /**
-+ * Build the summary for the fields.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberSummaryTree the content tree to which the documentation will be added
-+ */
-+ public void buildFieldsSummary(XMLNode node, Content memberSummaryTree) {
-+ MemberSummaryWriter writer =
-+ memberSummaryWriters[VisibleMemberMap.FIELDS];
-+ VisibleMemberMap visibleMemberMap =
-+ visibleMemberMaps[VisibleMemberMap.FIELDS];
-+ addSummary(writer, visibleMemberMap, true, memberSummaryTree);
-+ }
-
-- /**
-- * Build the summary for the nested classes.
-- */
-- public void buildNestedClassesSummary(XMLNode node) {
-- buildSummary(
-- memberSummaryWriters[VisibleMemberMap.INNERCLASSES],
-- visibleMemberMaps[VisibleMemberMap.INNERCLASSES]);
-- }
-+ /**
-+ * Build the summary for the nested classes.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberSummaryTree the content tree to which the documentation will be added
-+ */
-+ public void buildNestedClassesSummary(XMLNode node, Content memberSummaryTree) {
-+ MemberSummaryWriter writer =
-+ memberSummaryWriters[VisibleMemberMap.INNERCLASSES];
-+ VisibleMemberMap visibleMemberMap =
-+ visibleMemberMaps[VisibleMemberMap.INNERCLASSES];
-+ addSummary(writer, visibleMemberMap, true, memberSummaryTree);
-+ }
-
-- /**
-- * Build the inherited summary for the nested classes.
-- */
-- public void buildNestedClassesInheritedSummary(XMLNode node) {
-- buildInheritedSummary(
-- memberSummaryWriters[VisibleMemberMap.INNERCLASSES],
-- visibleMemberMaps[VisibleMemberMap.INNERCLASSES]);
-- }
-+ /**
-+ * Build the method summary.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberSummaryTree the content tree to which the documentation will be added
-+ */
-+ public void buildMethodsSummary(XMLNode node, Content memberSummaryTree) {
-+ MemberSummaryWriter writer =
-+ memberSummaryWriters[VisibleMemberMap.METHODS];
-+ VisibleMemberMap visibleMemberMap =
-+ visibleMemberMaps[VisibleMemberMap.METHODS];
-+ addSummary(writer, visibleMemberMap, true, memberSummaryTree);
-+ }
-
-- /**
-- * Build the method summary.
-- */
-- public void buildMethodsSummary(XMLNode node) {
-- buildSummary(
-- memberSummaryWriters[VisibleMemberMap.METHODS],
-- visibleMemberMaps[VisibleMemberMap.METHODS]);
-- }
-+ /**
-+ * Build the constructor summary.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberSummaryTree the content tree to which the documentation will be added
-+ */
-+ public void buildConstructorsSummary(XMLNode node, Content memberSummaryTree) {
-+ MemberSummaryWriter writer =
-+ memberSummaryWriters[VisibleMemberMap.CONSTRUCTORS];
-+ VisibleMemberMap visibleMemberMap =
-+ visibleMemberMaps[VisibleMemberMap.CONSTRUCTORS];
-+ addSummary(writer, visibleMemberMap, false, memberSummaryTree);
-+ }
-
-- /**
-- * Build the inherited method summary.
-- */
-- public void buildMethodsInheritedSummary(XMLNode node) {
-- buildInheritedSummary(
-- memberSummaryWriters[VisibleMemberMap.METHODS],
-- visibleMemberMaps[VisibleMemberMap.METHODS]);
-- }
--
-- /**
-- * Build the constructor summary.
-- */
-- public void buildConstructorsSummary(XMLNode node) {
-- buildSummary(
-- memberSummaryWriters[VisibleMemberMap.CONSTRUCTORS],
-- visibleMemberMaps[VisibleMemberMap.CONSTRUCTORS]);
-- }
--
-- /**
-- * Build the member summary for the given members.
-- *
-- * @param writer the summary writer to write the output.
-- * @param visibleMemberMap the given members to summarize.
-- */
-- private void buildSummary(MemberSummaryWriter writer,
-- VisibleMemberMap visibleMemberMap) {
-- List members = new ArrayList(visibleMemberMap.getLeafClassMembers(
-- configuration));
-+ /**
-+ * Build the member summary for the given members.
-+ *
-+ * @param writer the summary writer to write the output.
-+ * @param visibleMemberMap the given members to summarize.
-+ * @param summaryTreeList list of content trees to which the documentation will be added
-+ */
-+ private void buildSummary(MemberSummaryWriter writer,
-+ VisibleMemberMap visibleMemberMap, LinkedList<Content> summaryTreeList) {
-+ List<ProgramElementDoc> members = new ArrayList(visibleMemberMap.getLeafClassMembers(
-+ configuration));
- if (members.size() > 0) {
- Collections.sort(members);
-- writer.writeMemberSummaryHeader(classDoc);
-+ Content tableTree = writer.getSummaryTableTree(classDoc);
- for (int i = 0; i < members.size(); i++) {
- ProgramElementDoc member = (ProgramElementDoc) members.get(i);
- Tag[] firstSentenceTags = member.firstSentenceTags();
-@@ -301,32 +312,32 @@
- //Inherit comments from overriden or implemented method if
- //necessary.
- DocFinder.Output inheritedDoc =
-- DocFinder.search(new DocFinder.Input((MethodDoc) member));
-+ DocFinder.search(new DocFinder.Input((MethodDoc) member));
- if (inheritedDoc.holder != null &&
- inheritedDoc.holder.firstSentenceTags().length > 0) {
- firstSentenceTags = inheritedDoc.holder.firstSentenceTags();
- }
- }
-- writer.writeMemberSummary(classDoc, member, firstSentenceTags,
-- i == 0, i == members.size() - 1);
-+ writer.addMemberSummary(classDoc, member, firstSentenceTags, tableTree, i);
- }
-- writer.writeMemberSummaryFooter(classDoc);
-+ summaryTreeList.add(tableTree);
- }
-- }
-+ }
-
- /**
- * Build the inherited member summary for the given methods.
- *
-- * @param writer the writer for this member summary.
-+ * @param writer the writer for this member summary.
- * @param visibleMemberMap the map for the members to document.
-+ * @param summaryTreeList list of content trees to which the documentation will be added
- */
-- private void buildInheritedSummary(MemberSummaryWriter writer,
-- VisibleMemberMap visibleMemberMap) {
-+ private void buildInheritedSummary(MemberSummaryWriter writer,
-+ VisibleMemberMap visibleMemberMap, LinkedList<Content> summaryTreeList) {
- for (Iterator iter = visibleMemberMap.getVisibleClassesList().iterator();
- iter.hasNext();) {
- ClassDoc inhclass = (ClassDoc) (iter.next());
- if (! (inhclass.isPublic() ||
-- Util.isLinkable(inhclass, configuration))) {
-+ Util.isLinkable(inhclass, configuration))) {
- continue;
- }
- if (inhclass == classDoc) {
-@@ -335,18 +346,45 @@
- List inhmembers = visibleMemberMap.getMembersFor(inhclass);
- if (inhmembers.size() > 0) {
- Collections.sort(inhmembers);
-- writer.writeInheritedMemberSummaryHeader(inhclass);
-+ Content inheritedTree = writer.getInheritedSummaryHeader(inhclass);
-+ Content linksTree = writer.getInheritedSummaryLinksTree();
- for (int j = 0; j < inhmembers.size(); ++j) {
-- writer.writeInheritedMemberSummary(
-- inhclass.isPackagePrivate() &&
-+ writer.addInheritedMemberSummary(
-+ inhclass.isPackagePrivate() &&
- ! Util.isLinkable(inhclass, configuration) ?
- classDoc : inhclass,
-- (ProgramElementDoc) inhmembers.get(j),
-- j == 0,
-- j == inhmembers.size() - 1);
-+ (ProgramElementDoc) inhmembers.get(j),
-+ j == 0,
-+ j == inhmembers.size() - 1, linksTree);
- }
-- writer.writeInheritedMemberSummaryFooter(inhclass);
-+ inheritedTree.addContent(linksTree);
-+ summaryTreeList.add(writer.getMemberTree(inheritedTree));
- }
- }
- }
-+
-+ /**
-+ * Add the summary for the documentation.
-+ *
-+ * @param writer the writer for this member summary.
-+ * @param visibleMemberMap the map for the members to document.
-+ * @param showInheritedSummary true if inherited summary should be documented
-+ * @param memberSummaryTree the content tree to which the documentation will be added
-+ */
-+ private void addSummary(MemberSummaryWriter writer,
-+ VisibleMemberMap visibleMemberMap, boolean showInheritedSummary,
-+ Content memberSummaryTree) {
-+ LinkedList<Content> summaryTreeList = new LinkedList<Content>();
-+ buildSummary(writer, visibleMemberMap, summaryTreeList);
-+ if (showInheritedSummary)
-+ buildInheritedSummary(writer, visibleMemberMap, summaryTreeList);
-+ if (!summaryTreeList.isEmpty()) {
-+ Content memberTree = writer.getMemberSummaryHeader(
-+ classDoc, memberSummaryTree);
-+ for (int i = 0; i < summaryTreeList.size(); i++) {
-+ memberTree.addContent(summaryTreeList.get(i));
-+ }
-+ memberSummaryTree.addContent(writer.getMemberTree(memberTree));
-+ }
-+ }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MethodBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MethodBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MethodBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/MethodBuilder.java
-@@ -25,10 +25,10 @@
-
- package com.sun.tools.doclets.internal.toolkit.builders;
-
-+import java.util.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
- import com.sun.javadoc.*;
--import java.util.*;
-
- /**
- * Builds documentation for a method.
-@@ -38,164 +38,170 @@
- * Do not use it as an API
- *
- * @author Jamie Ho
-+ * @author Bhavesh Patel (Modified)
- * @since 1.5
- */
- public class MethodBuilder extends AbstractMemberBuilder {
-
-- /**
-- * The index of the current field that is being documented at this point
-- * in time.
-- */
-- private int currentMethodIndex;
-+ /**
-+ * The index of the current field that is being documented at this point
-+ * in time.
-+ */
-+ private int currentMethodIndex;
-
-- /**
-- * The class whose methods are being documented.
-- */
-- private ClassDoc classDoc;
-+ /**
-+ * The class whose methods are being documented.
-+ */
-+ private ClassDoc classDoc;
-
-- /**
-- * The visible methods for the given class.
-- */
-- private VisibleMemberMap visibleMemberMap;
-+ /**
-+ * The visible methods for the given class.
-+ */
-+ private VisibleMemberMap visibleMemberMap;
-
-- /**
-- * The writer to output the method documentation.
-- */
-- private MethodWriter writer;
-+ /**
-+ * The writer to output the method documentation.
-+ */
-+ private MethodWriter writer;
-
-- /**
-- * The methods being documented.
-- */
-- private List methods;
-+ /**
-+ * The methods being documented.
-+ */
-+ private List<ProgramElementDoc> methods;
-
-- private MethodBuilder(Configuration configuration) {
-- super(configuration);
-+ private MethodBuilder(Configuration configuration) {
-+ super(configuration);
-+ }
-+
-+ /**
-+ * Construct a new MethodBuilder.
-+ *
-+ * @param configuration the current configuration of the doclet.
-+ * @param classDoc the class whoses members are being documented.
-+ * @param writer the doclet specific writer.
-+ *
-+ * @return an instance of a MethodBuilder.
-+ */
-+ public static MethodBuilder getInstance(
-+ Configuration configuration,
-+ ClassDoc classDoc,
-+ MethodWriter writer) {
-+ MethodBuilder builder = new MethodBuilder(configuration);
-+ builder.classDoc = classDoc;
-+ builder.writer = writer;
-+ builder.visibleMemberMap =
-+ new VisibleMemberMap(
-+ classDoc,
-+ VisibleMemberMap.METHODS,
-+ configuration.nodeprecated);
-+ builder.methods =
-+ new ArrayList<ProgramElementDoc>(builder.visibleMemberMap.getLeafClassMembers(
-+ configuration));
-+ if (configuration.getMemberComparator() != null) {
-+ Collections.sort(
-+ builder.methods,
-+ configuration.getMemberComparator());
- }
-
-- /**
-- * Construct a new MethodBuilder.
-- *
-- * @param configuration the current configuration of the doclet.
-- * @param classDoc the class whoses members are being documented.
-- * @param writer the doclet specific writer.
-- *
-- * @return an instance of a MethodBuilder.
-- */
-- public static MethodBuilder getInstance(
-- Configuration configuration,
-- ClassDoc classDoc,
-- MethodWriter writer) {
-- MethodBuilder builder = new MethodBuilder(configuration);
-- builder.classDoc = classDoc;
-- builder.writer = writer;
-- builder.visibleMemberMap =
-- new VisibleMemberMap(
-- classDoc,
-- VisibleMemberMap.METHODS,
-- configuration.nodeprecated);
-- builder.methods =
-- new ArrayList(builder.visibleMemberMap.getLeafClassMembers(
-- configuration));
-- if (configuration.getMemberComparator() != null) {
-- Collections.sort(
-- builder.methods,
-- configuration.getMemberComparator());
-- }
-- return builder;
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getName() {
-+ return "MethodDetails";
-+ }
-+
-+ /**
-+ * Returns a list of methods that will be documented for the given class.
-+ * This information can be used for doclet specific documentation
-+ * generation.
-+ *
-+ * @param classDoc the {@link ClassDoc} we want to check.
-+ * @return a list of methods that will be documented.
-+ */
-+ public List<ProgramElementDoc> members(ClassDoc classDoc) {
-+ return visibleMemberMap.getMembersFor(classDoc);
-+ }
-+
-+ /**
-+ * Returns the visible member map for the methods of this class.
-+ *
-+ * @return the visible member map for the methods of this class.
-+ */
-+ public VisibleMemberMap getVisibleMemberMap() {
-+ return visibleMemberMap;
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public boolean hasMembersToDocument() {
-+ return methods.size() > 0;
-+ }
-+
-+ /**
-+ * Build the method documentation.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param memberDetailsTree the content tree to which the documentation will be added
-+ */
-+ public void buildMethodDoc(XMLNode node, Content memberDetailsTree) {
-+ if (writer == null) {
-+ return;
- }
-+ int size = methods.size();
-+ if (size > 0) {
-+ Content methodDetailsTree = writer.getMethodDetailsTreeHeader(
-+ classDoc, memberDetailsTree);
-+ for (currentMethodIndex = 0; currentMethodIndex < size;
-+ currentMethodIndex++) {
-+ Content methodDocTree = writer.getMethodDocTreeHeader(
-+ (MethodDoc) methods.get(currentMethodIndex),
-+ methodDetailsTree);
-+ buildChildren(node, methodDocTree);
-+ methodDetailsTree.addContent(writer.getMethodDoc(
-+ methodDocTree, (currentMethodIndex == size - 1)));
-+ }
-+ memberDetailsTree.addContent(
-+ writer.getMethodDetails(methodDetailsTree));
-+ }
-+ }
-
-- /**
-- * {@inheritDoc}
-- */
-- public String getName() {
-- return "MethodDetails";
-- }
-+ /**
-+ * Build the signature.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param methodDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildSignature(XMLNode node, Content methodDocTree) {
-+ methodDocTree.addContent(
-+ writer.getSignature((MethodDoc) methods.get(currentMethodIndex)));
-+ }
-
-- /**
-- * Returns a list of methods that will be documented for the given class.
-- * This information can be used for doclet specific documentation
-- * generation.
-- *
-- * @param classDoc the {@link ClassDoc} we want to check.
-- * @return a list of methods that will be documented.
-- */
-- public List members(ClassDoc classDoc) {
-- return visibleMemberMap.getMembersFor(classDoc);
-- }
-+ /**
-+ * Build the deprecation information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param methodDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildDeprecationInfo(XMLNode node, Content methodDocTree) {
-+ writer.addDeprecated(
-+ (MethodDoc) methods.get(currentMethodIndex), methodDocTree);
-+ }
-
-- /**
-- * Returns the visible member map for the methods of this class.
-- *
-- * @return the visible member map for the methods of this class.
-- */
-- public VisibleMemberMap getVisibleMemberMap() {
-- return visibleMemberMap;
-- }
--
-- /**
-- * {@inheritDoc}
-- */
-- public boolean hasMembersToDocument() {
-- return methods.size() > 0;
-- }
--
-- /**
-- * Build the method documentation.
-- */
-- public void buildMethodDoc(XMLNode node) {
-- if (writer == null) {
-- return;
-- }
-- for (currentMethodIndex = 0;
-- currentMethodIndex < methods.size();
-- currentMethodIndex++) {
-- buildChildren(node);
-- }
-- }
--
-- /**
-- * Build the overall header.
-- */
-- public void buildHeader(XMLNode node) {
-- writer.writeHeader(
-- classDoc,
-- configuration.getText("doclet.Method_Detail"));
-- }
--
-- /**
-- * Build the header for the individual method.
-- */
-- public void buildMethodHeader(XMLNode node) {
-- writer.writeMethodHeader(
-- (MethodDoc) methods.get(currentMethodIndex),
-- currentMethodIndex == 0);
-- }
--
-- /**
-- * Build the signature.
-- */
-- public void buildSignature(XMLNode node) {
-- writer.writeSignature((MethodDoc) methods.get(currentMethodIndex));
-- }
--
-- /**
-- * Build the deprecation information.
-- */
-- public void buildDeprecationInfo(XMLNode node) {
-- writer.writeDeprecated((MethodDoc) methods.get(currentMethodIndex));
-- }
--
-- /**
-- * Build the comments for the method. Do nothing if
-- * {@link Configuration#nocomment} is set to true. If this method
-- */
-- public void buildMethodComments(XMLNode node) {
-- if (!configuration.nocomment) {
-+ /**
-+ * Build the comments for the method. Do nothing if
-+ * {@link Configuration#nocomment} is set to true.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param methodDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildMethodComments(XMLNode node, Content methodDocTree) {
-+ if (!configuration.nocomment) {
- MethodDoc method = (MethodDoc) methods.get(currentMethodIndex);
-
- if (method.inlineTags().length == 0) {
- DocFinder.Output docs = DocFinder.search(
-- new DocFinder.Input(method));
-+ new DocFinder.Input(method));
- method = docs.inlineTags != null && docs.inlineTags.length > 0 ?
- (MethodDoc) docs.holder : method;
-
-@@ -203,39 +209,27 @@
- //NOTE: When we fix the bug where ClassDoc.interfaceTypes() does
- // not pass all implemented interfaces, holder will be the
- // interface type. For now, it is really the erasure.
-- writer.writeComments(method.containingClass(), method);
-- }
-+ writer.addComments(method.containingClass(), method, methodDocTree);
- }
-+ }
-
-+ /**
-+ * Build the tag information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param methodDocTree the content tree to which the documentation will be added
-+ */
-+ public void buildTagInfo(XMLNode node, Content methodDocTree) {
-+ writer.addTags((MethodDoc) methods.get(currentMethodIndex),
-+ methodDocTree);
-+ }
-
--
-- /**
-- * Build the tag information.
-- */
-- public void buildTagInfo(XMLNode node) {
-- writer.writeTags((MethodDoc) methods.get(currentMethodIndex));
-- }
--
-- /**
-- * Build the footer of the method.
-- */
-- public void buildMethodFooter(XMLNode node) {
-- writer.writeMethodFooter();
-- }
--
-- /**
-- * Build the overall footer.
-- */
-- public void buildFooter(XMLNode node) {
-- writer.writeFooter(classDoc);
-- }
--
-- /**
-- * Return the method writer for this builder.
-- *
-- * @return the method writer for this builder.
-- */
-- public MethodWriter getWriter() {
-- return writer;
-- }
-+ /**
-+ * Return the method writer for this builder.
-+ *
-+ * @return the method writer for this builder.
-+ */
-+ public MethodWriter getWriter() {
-+ return writer;
-+ }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/PackageSummaryBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/PackageSummaryBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/PackageSummaryBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/PackageSummaryBuilder.java
-@@ -25,10 +25,10 @@
-
- package com.sun.tools.doclets.internal.toolkit.builders;
-
-+import java.io.*;
-+import com.sun.javadoc.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
--import com.sun.javadoc.*;
--import java.io.*;
-
- /**
- * Builds the summary for a given package.
-@@ -42,281 +42,315 @@
- * @since 1.5
- */
- public class PackageSummaryBuilder extends AbstractBuilder {
-+ /**
-+ * The root element of the package summary XML is {@value}.
-+ */
-+ public static final String ROOT = "PackageDoc";
-
-- /**
-- * The root element of the package summary XML is {@value}.
-- */
-- public static final String ROOT = "PackageDoc";
-+ /**
-+ * The package being documented.
-+ */
-+ private PackageDoc packageDoc;
-
-- /**
-- * The package being documented.
-- */
-- private PackageDoc packageDoc;
-+ /**
-+ * The doclet specific writer that will output the result.
-+ */
-+ private PackageSummaryWriter packageWriter;
-
-- /**
-- * The doclet specific writer that will output the result.
-- */
-- private PackageSummaryWriter packageWriter;
-+ /**
-+ * The content that will be added to the package summary documentation tree.
-+ */
-+ private Content contentTree;
-
-- private PackageSummaryBuilder(Configuration configuration) {
-- super(configuration);
-+ private PackageSummaryBuilder(Configuration configuration) {
-+ super(configuration);
-+ }
-+
-+ /**
-+ * Construct a new PackageSummaryBuilder.
-+ * @param configuration the current configuration of the doclet.
-+ * @param pkg the package being documented.
-+ * @param packageWriter the doclet specific writer that will output the
-+ * result.
-+ *
-+ * @return an instance of a PackageSummaryBuilder.
-+ */
-+ public static PackageSummaryBuilder getInstance(
-+ Configuration configuration,
-+ PackageDoc pkg,
-+ PackageSummaryWriter packageWriter) {
-+ PackageSummaryBuilder builder =
-+ new PackageSummaryBuilder(configuration);
-+ builder.packageDoc = pkg;
-+ builder.packageWriter = packageWriter;
-+ return builder;
-+ }
-+
-+ /**
-+ * Build the package summary.
-+ */
-+ public void build() throws IOException {
-+ if (packageWriter == null) {
-+ //Doclet does not support this output.
-+ return;
-+ }
-+ build(LayoutParser.getInstance(configuration).parseXML(ROOT), contentTree);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ public String getName() {
-+ return ROOT;
-+ }
-+
-+ /**
-+ * Build the package documentation.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param contentTree the content tree to which the documentation will be added
-+ */
-+ public void buildPackageDoc(XMLNode node, Content contentTree) throws Exception {
-+ contentTree = packageWriter.getPackageHeader(
-+ Util.getPackageName(packageDoc));
-+ buildChildren(node, contentTree);
-+ packageWriter.addPackageFooter(contentTree);
-+ packageWriter.printDocument(contentTree);
-+ packageWriter.close();
-+ Util.copyDocFiles(
-+ configuration,
-+ Util.getPackageSourcePath(configuration, packageDoc),
-+ DirectoryManager.getDirectoryPath(packageDoc)
-+ + File.separator
-+ + DocletConstants.DOC_FILES_DIR_NAME,
-+ true);
-+ }
-+
-+ /**
-+ * Build the content for the package doc.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param contentTree the content tree to which the package contents
-+ * will be added
-+ */
-+ public void buildContent(XMLNode node, Content contentTree) {
-+ Content packageContentTree = packageWriter.getContentHeader();
-+ buildChildren(node, packageContentTree);
-+ contentTree.addContent(packageContentTree);
-+ }
-+
-+ /**
-+ * Build the package summary.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param packageContentTree the package content tree to which the summaries will
-+ * be added
-+ */
-+ public void buildSummary(XMLNode node, Content packageContentTree) {
-+ Content summaryContentTree = packageWriter.getSummaryHeader();
-+ buildChildren(node, summaryContentTree);
-+ packageContentTree.addContent(summaryContentTree);
-+ }
-+
-+ /**
-+ * Build the summary for the interfaces in this package.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param summaryContentTree the summary tree to which the interface summary
-+ * will be added
-+ */
-+ public void buildInterfaceSummary(XMLNode node, Content summaryContentTree) {
-+ String interfaceTableSummary =
-+ configuration.getText("doclet.Member_Table_Summary",
-+ configuration.getText("doclet.Interface_Summary"),
-+ configuration.getText("doclet.interfaces"));
-+ String[] interfaceTableHeader = new String[] {
-+ configuration.getText("doclet.Interface"),
-+ configuration.getText("doclet.Description")
-+ };
-+ ClassDoc[] interfaces =
-+ packageDoc.isIncluded()
-+ ? packageDoc.interfaces()
-+ : configuration.classDocCatalog.interfaces(
-+ Util.getPackageName(packageDoc));
-+ if (interfaces.length > 0) {
-+ packageWriter.addClassesSummary(
-+ interfaces,
-+ configuration.getText("doclet.Interface_Summary"),
-+ interfaceTableSummary, interfaceTableHeader, summaryContentTree);
- }
-
-- /**
-- * Construct a new PackageSummaryBuilder.
-- * @param configuration the current configuration of the doclet.
-- * @param pkg the package being documented.
-- * @param packageWriter the doclet specific writer that will output the
-- * result.
-- *
-- * @return an instance of a PackageSummaryBuilder.
-- */
-- public static PackageSummaryBuilder getInstance(
-- Configuration configuration,
-- PackageDoc pkg,
-- PackageSummaryWriter packageWriter) {
-- PackageSummaryBuilder builder =
-- new PackageSummaryBuilder(configuration);
-- builder.packageDoc = pkg;
-- builder.packageWriter = packageWriter;
-- return builder;
-+ /**
-+ * Build the summary for the classes in this package.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param summaryContentTree the summary tree to which the class summary will
-+ * be added
-+ */
-+ public void buildClassSummary(XMLNode node, Content summaryContentTree) {
-+ String classTableSummary =
-+ configuration.getText("doclet.Member_Table_Summary",
-+ configuration.getText("doclet.Class_Summary"),
-+ configuration.getText("doclet.classes"));
-+ String[] classTableHeader = new String[] {
-+ configuration.getText("doclet.Class"),
-+ configuration.getText("doclet.Description")
-+ };
-+ ClassDoc[] classes =
-+ packageDoc.isIncluded()
-+ ? packageDoc.ordinaryClasses()
-+ : configuration.classDocCatalog.ordinaryClasses(
-+ Util.getPackageName(packageDoc));
-+ if (classes.length > 0) {
-+ packageWriter.addClassesSummary(
-+ classes,
-+ configuration.getText("doclet.Class_Summary"),
-+ classTableSummary, classTableHeader, summaryContentTree);
-+ }
-+ }
-+
-+ /**
-+ * Build the summary for the enums in this package.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param summaryContentTree the summary tree to which the enum summary will
-+ * be added
-+ */
-+ public void buildEnumSummary(XMLNode node, Content summaryContentTree) {
-+ String enumTableSummary =
-+ configuration.getText("doclet.Member_Table_Summary",
-+ configuration.getText("doclet.Enum_Summary"),
-+ configuration.getText("doclet.enums"));
-+ String[] enumTableHeader = new String[] {
-+ configuration.getText("doclet.Enum"),
-+ configuration.getText("doclet.Description")
-+ };
-+ ClassDoc[] enums =
-+ packageDoc.isIncluded()
-+ ? packageDoc.enums()
-+ : configuration.classDocCatalog.enums(
-+ Util.getPackageName(packageDoc));
-+ if (enums.length > 0) {
-+ packageWriter.addClassesSummary(
-+ enums,
-+ configuration.getText("doclet.Enum_Summary"),
-+ enumTableSummary, enumTableHeader, summaryContentTree);
-+ }
-+ }
-+
-+ /**
-+ * Build the summary for the exceptions in this package.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param summaryContentTree the summary tree to which the exception summary will
-+ * be added
-+ */
-+ public void buildExceptionSummary(XMLNode node, Content summaryContentTree) {
-+ String exceptionTableSummary =
-+ configuration.getText("doclet.Member_Table_Summary",
-+ configuration.getText("doclet.Exception_Summary"),
-+ configuration.getText("doclet.exceptions"));
-+ String[] exceptionTableHeader = new String[] {
-+ configuration.getText("doclet.Exception"),
-+ configuration.getText("doclet.Description")
-+ };
-+ ClassDoc[] exceptions =
-+ packageDoc.isIncluded()
-+ ? packageDoc.exceptions()
-+ : configuration.classDocCatalog.exceptions(
-+ Util.getPackageName(packageDoc));
-+ if (exceptions.length > 0) {
-+ packageWriter.addClassesSummary(
-+ exceptions,
-+ configuration.getText("doclet.Exception_Summary"),
-+ exceptionTableSummary, exceptionTableHeader, summaryContentTree);
-+ }
-+ }
-+
-+ /**
-+ * Build the summary for the errors in this package.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param summaryContentTree the summary tree to which the error summary will
-+ * be added
-+ */
-+ public void buildErrorSummary(XMLNode node, Content summaryContentTree) {
-+ String errorTableSummary =
-+ configuration.getText("doclet.Member_Table_Summary",
-+ configuration.getText("doclet.Error_Summary"),
-+ configuration.getText("doclet.errors"));
-+ String[] errorTableHeader = new String[] {
-+ configuration.getText("doclet.Error"),
-+ configuration.getText("doclet.Description")
-+ };
-+ ClassDoc[] errors =
-+ packageDoc.isIncluded()
-+ ? packageDoc.errors()
-+ : configuration.classDocCatalog.errors(
-+ Util.getPackageName(packageDoc));
-+ if (errors.length > 0) {
-+ packageWriter.addClassesSummary(
-+ errors,
-+ configuration.getText("doclet.Error_Summary"),
-+ errorTableSummary, errorTableHeader, summaryContentTree);
-+ }
-+ }
-+
-+ /**
-+ * Build the summary for the annotation type in this package.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param summaryContentTree the summary tree to which the annotation type
-+ * summary will be added
-+ */
-+ public void buildAnnotationTypeSummary(XMLNode node, Content summaryContentTree) {
-+ String annotationtypeTableSummary =
-+ configuration.getText("doclet.Member_Table_Summary",
-+ configuration.getText("doclet.Annotation_Types_Summary"),
-+ configuration.getText("doclet.annotationtypes"));
-+ String[] annotationtypeTableHeader = new String[] {
-+ configuration.getText("doclet.AnnotationType"),
-+ configuration.getText("doclet.Description")
-+ };
-+ ClassDoc[] annotationTypes =
-+ packageDoc.isIncluded()
-+ ? packageDoc.annotationTypes()
-+ : configuration.classDocCatalog.annotationTypes(
-+ Util.getPackageName(packageDoc));
-+ if (annotationTypes.length > 0) {
-+ packageWriter.addClassesSummary(
-+ annotationTypes,
-+ configuration.getText("doclet.Annotation_Types_Summary"),
-+ annotationtypeTableSummary, annotationtypeTableHeader,
-+ summaryContentTree);
-+ }
-+ }
-+
-+ /**
-+ * Build the description of the summary.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param packageContentTree the tree to which the package description will
-+ * be added
-+ */
-+ public void buildPackageDescription(XMLNode node, Content packageContentTree) {
-+ if (configuration.nocomment) {
-+ return;
-+ }
-+ packageWriter.addPackageDescription(packageContentTree);
-+ }
-+
-+ /**
-+ * Build the tags of the summary.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param packageContentTree the tree to which the package tags will be added
-+ */
-+ public void buildPackageTags(XMLNode node, Content packageContentTree) {
-+ if (configuration.nocomment) {
-+ return;
- }
-
-- /**
-- * Build the package summary.
-- */
-- public void build() throws IOException {
-- if (packageWriter == null) {
-- //Doclet does not support this output.
-- return;
-- }
-- build(LayoutParser.getInstance(configuration).parseXML(ROOT));
-- }
--
-- /**
-- * {@inheritDoc}
-- */
-- public String getName() {
-- return ROOT;
-- }
--
-- /**
-- * Build the package documentation.
-- */
-- public void buildPackageDoc(XMLNode node) throws Exception {
-- buildChildren(node);
-- packageWriter.close();
-- Util.copyDocFiles(
-- configuration,
-- Util.getPackageSourcePath(configuration, packageDoc),
-- DirectoryManager.getDirectoryPath(packageDoc)
-- + File.separator
-- + DocletConstants.DOC_FILES_DIR_NAME,
-- true);
-- }
--
-- /**
-- * Build the header of the summary.
-- */
-- public void buildPackageHeader(XMLNode node) {
-- packageWriter.writePackageHeader(Util.getPackageName(packageDoc));
-- }
--
-- /**
-- * Build the description of the summary.
-- */
-- public void buildPackageDescription(XMLNode node) {
-- if (configuration.nocomment) {
-- return;
-- }
-- packageWriter.writePackageDescription();
-- }
--
-- /**
-- * Build the tags of the summary.
-- */
-- public void buildPackageTags(XMLNode node) {
-- if (configuration.nocomment) {
-- return;
-- }
-- packageWriter.writePackageTags();
-- }
--
-- /**
-- * Build the package summary.
-- */
-- public void buildSummary(XMLNode node) {
-- buildChildren(node);
-- }
--
-- /**
-- * Build the overall header.
-- */
-- public void buildSummaryHeader(XMLNode node) {
-- packageWriter.writeSummaryHeader();
-- }
--
-- /**
-- * Build the overall footer.
-- */
-- public void buildSummaryFooter(XMLNode node) {
-- packageWriter.writeSummaryFooter();
-- }
--
-- /**
-- * Build the summary for the classes in this package.
-- */
-- public void buildClassSummary(XMLNode node) {
-- String classTableSummary =
-- configuration.getText("doclet.Member_Table_Summary",
-- configuration.getText("doclet.Class_Summary"),
-- configuration.getText("doclet.classes"));
-- String[] classTableHeader = new String[] {
-- configuration.getText("doclet.Class"),
-- configuration.getText("doclet.Description")
-- };
-- ClassDoc[] classes =
-- packageDoc.isIncluded()
-- ? packageDoc.ordinaryClasses()
-- : configuration.classDocCatalog.ordinaryClasses(
-- Util.getPackageName(packageDoc));
-- if (classes.length > 0) {
-- packageWriter.writeClassesSummary(
-- classes,
-- configuration.getText("doclet.Class_Summary"),
-- classTableSummary, classTableHeader);
-- }
-- }
--
-- /**
-- * Build the summary for the interfaces in this package.
-- */
-- public void buildInterfaceSummary(XMLNode node) {
-- String interfaceTableSummary =
-- configuration.getText("doclet.Member_Table_Summary",
-- configuration.getText("doclet.Interface_Summary"),
-- configuration.getText("doclet.interfaces"));
-- String[] interfaceTableHeader = new String[] {
-- configuration.getText("doclet.Interface"),
-- configuration.getText("doclet.Description")
-- };
-- ClassDoc[] interfaces =
-- packageDoc.isIncluded()
-- ? packageDoc.interfaces()
-- : configuration.classDocCatalog.interfaces(
-- Util.getPackageName(packageDoc));
-- if (interfaces.length > 0) {
-- packageWriter.writeClassesSummary(
-- interfaces,
-- configuration.getText("doclet.Interface_Summary"),
-- interfaceTableSummary, interfaceTableHeader);
-- }
-- }
--
-- /**
-- * Build the summary for the enums in this package.
-- */
-- public void buildAnnotationTypeSummary(XMLNode node) {
-- String annotationtypeTableSummary =
-- configuration.getText("doclet.Member_Table_Summary",
-- configuration.getText("doclet.Annotation_Types_Summary"),
-- configuration.getText("doclet.annotationtypes"));
-- String[] annotationtypeTableHeader = new String[] {
-- configuration.getText("doclet.AnnotationType"),
-- configuration.getText("doclet.Description")
-- };
-- ClassDoc[] annotationTypes =
-- packageDoc.isIncluded()
-- ? packageDoc.annotationTypes()
-- : configuration.classDocCatalog.annotationTypes(
-- Util.getPackageName(packageDoc));
-- if (annotationTypes.length > 0) {
-- packageWriter.writeClassesSummary(
-- annotationTypes,
-- configuration.getText("doclet.Annotation_Types_Summary"),
-- annotationtypeTableSummary, annotationtypeTableHeader);
-- }
-- }
--
-- /**
-- * Build the summary for the enums in this package.
-- */
-- public void buildEnumSummary(XMLNode node) {
-- String enumTableSummary =
-- configuration.getText("doclet.Member_Table_Summary",
-- configuration.getText("doclet.Enum_Summary"),
-- configuration.getText("doclet.enums"));
-- String[] enumTableHeader = new String[] {
-- configuration.getText("doclet.Enum"),
-- configuration.getText("doclet.Description")
-- };
-- ClassDoc[] enums =
-- packageDoc.isIncluded()
-- ? packageDoc.enums()
-- : configuration.classDocCatalog.enums(
-- Util.getPackageName(packageDoc));
-- if (enums.length > 0) {
-- packageWriter.writeClassesSummary(
-- enums,
-- configuration.getText("doclet.Enum_Summary"),
-- enumTableSummary, enumTableHeader);
-- }
-- }
--
-- /**
-- * Build the summary for the exceptions in this package.
-- */
-- public void buildExceptionSummary(XMLNode node) {
-- String exceptionTableSummary =
-- configuration.getText("doclet.Member_Table_Summary",
-- configuration.getText("doclet.Exception_Summary"),
-- configuration.getText("doclet.exceptions"));
-- String[] exceptionTableHeader = new String[] {
-- configuration.getText("doclet.Exception"),
-- configuration.getText("doclet.Description")
-- };
-- ClassDoc[] exceptions =
-- packageDoc.isIncluded()
-- ? packageDoc.exceptions()
-- : configuration.classDocCatalog.exceptions(
-- Util.getPackageName(packageDoc));
-- if (exceptions.length > 0) {
-- packageWriter.writeClassesSummary(
-- exceptions,
-- configuration.getText("doclet.Exception_Summary"),
-- exceptionTableSummary, exceptionTableHeader);
-- }
-- }
--
-- /**
-- * Build the summary for the errors in this package.
-- */
-- public void buildErrorSummary(XMLNode node) {
-- String errorTableSummary =
-- configuration.getText("doclet.Member_Table_Summary",
-- configuration.getText("doclet.Error_Summary"),
-- configuration.getText("doclet.errors"));
-- String[] errorTableHeader = new String[] {
-- configuration.getText("doclet.Error"),
-- configuration.getText("doclet.Description")
-- };
-- ClassDoc[] errors =
-- packageDoc.isIncluded()
-- ? packageDoc.errors()
-- : configuration.classDocCatalog.errors(
-- Util.getPackageName(packageDoc));
-- if (errors.length > 0) {
-- packageWriter.writeClassesSummary(
-- errors,
-- configuration.getText("doclet.Error_Summary"),
-- errorTableSummary, errorTableHeader);
-- }
-- }
--
-- /**
-- * Build the footer of the summary.
-- */
-- public void buildPackageFooter(XMLNode node) {
-- packageWriter.writePackageFooter();
-- }
-+ packageWriter.addPackageTags(packageContentTree);
-+ }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/SerializedFormBuilder.java
-@@ -27,7 +27,6 @@
-
- import java.io.*;
- import java.util.*;
--
- import com.sun.javadoc.*;
- import com.sun.tools.doclets.internal.toolkit.util.*;
- import com.sun.tools.doclets.internal.toolkit.*;
-@@ -87,6 +86,11 @@
- */
- protected MemberDoc currentMember;
-
-+ /**
-+ * The content that will be added to the serialized form documentation tree.
-+ */
-+ private Content contentTree;
-+
- private SerializedFormBuilder(Configuration configuration) {
- super(configuration);
- }
-@@ -117,7 +121,7 @@
- } catch (Exception e) {
- throw new DocletAbortException();
- }
-- build(LayoutParser.getInstance(configuration).parseXML(NAME));
-+ build(LayoutParser.getInstance(configuration).parseXML(NAME), contentTree);
- writer.close();
- }
-
-@@ -130,34 +134,44 @@
-
- /**
- * Build the serialized form.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param serializedTree content tree to which the documentation will be added
- */
-- public void buildSerializedForm(XMLNode node) throws Exception {
-- buildChildren(node);
-+ public void buildSerializedForm(XMLNode node, Content serializedTree) throws Exception {
-+ serializedTree = writer.getHeader(configuration.getText(
-+ "doclet.Serialized_Form"));
-+ buildChildren(node, serializedTree);
-+ writer.addFooter(serializedTree);
-+ writer.printDocument(serializedTree);
- writer.close();
- }
-
- /**
-- * Build the header.
-+ * Build the serialized form summaries.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param serializedTree content tree to which the documentation will be added
- */
-- public void buildHeader(XMLNode node) {
-- writer.writeHeader(configuration.getText("doclet.Serialized_Form"));
-+ public void buildSerializedFormSummaries(XMLNode node, Content serializedTree) {
-+ Content serializedSummariesTree = writer.getSerializedSummariesHeader();
-+ PackageDoc[] packages = configuration.packages;
-+ for (int i = 0; i < packages.length; i++) {
-+ currentPackage = packages[i];
-+ buildChildren(node, serializedSummariesTree);
-+ }
-+ serializedTree.addContent(writer.getSerializedContent(
-+ serializedSummariesTree));
- }
-
- /**
-- * Build the contents.
-+ * Build the package serialized form for the current package being processed.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param serializedSummariesTree content tree to which the documentation will be added
- */
-- public void buildSerializedFormSummaries(XMLNode node) {
-- PackageDoc[] packages = configuration.packages;
-- for (int i = 0; i < packages.length; i++) {
-- currentPackage = packages[i];
-- buildChildren(node);
-- }
-- }
--
-- /**
-- * Build the package serialized for for the current package being processed.
-- */
-- public void buildPackageSerializedForm(XMLNode node) {
-+ public void buildPackageSerializedForm(XMLNode node, Content serializedSummariesTree) {
-+ Content packageSerializedTree = writer.getPackageSerializedHeader();
- String foo = currentPackage.name();
- ClassDoc[] classes = currentPackage.allClasses(false);
- if (classes == null || classes.length == 0) {
-@@ -169,14 +183,29 @@
- if (!serialClassFoundToDocument(classes)) {
- return;
- }
-- buildChildren(node);
-+ buildChildren(node, packageSerializedTree);
-+ serializedSummariesTree.addContent(packageSerializedTree);
- }
-
-- public void buildPackageHeader(XMLNode node) {
-- writer.writePackageHeader(Util.getPackageName(currentPackage));
-+ /**
-+ * Build the package header.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param packageSerializedTree content tree to which the documentation will be added
-+ */
-+ public void buildPackageHeader(XMLNode node, Content packageSerializedTree) {
-+ packageSerializedTree.addContent(writer.getPackageHeader(
-+ Util.getPackageName(currentPackage)));
- }
-
-- public void buildClassSerializedForm(XMLNode node) {
-+ /**
-+ * Build the class serialized form.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param packageSerializedTree content tree to which the documentation will be added
-+ */
-+ public void buildClassSerializedForm(XMLNode node, Content packageSerializedTree) {
-+ Content classSerializedTree = writer.getClassSerializedHeader();
- ClassDoc[] classes = currentPackage.allClasses(false);
- Arrays.sort(classes);
- for (int j = 0; j < classes.length; j++) {
-@@ -187,35 +216,293 @@
- if(!serialClassInclude(currentClass)) {
- continue;
- }
-- buildChildren(node);
-+ Content classTree = writer.getClassHeader(currentClass);
-+ buildChildren(node, classTree);
-+ classSerializedTree.addContent(classTree);
- }
- }
-- }
--
-- public void buildClassHeader(XMLNode node) {
-- writer.writeClassHeader(currentClass);
-+ packageSerializedTree.addContent(classSerializedTree);
- }
-
- /**
- * Build the serial UID information for the given class.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classTree content tree to which the serial UID information will be added
- */
-- public void buildSerialUIDInfo(XMLNode node) {
-+ public void buildSerialUIDInfo(XMLNode node, Content classTree) {
-+ Content serialUidTree = writer.getSerialUIDInfoHeader();
- FieldDoc[] fields = currentClass.fields(false);
- for (int i = 0; i < fields.length; i++) {
- if (fields[i].name().equals("serialVersionUID") &&
- fields[i].constantValueExpression() != null) {
-- writer.writeSerialUIDInfo(SERIAL_VERSION_UID_HEADER,
-- fields[i].constantValueExpression());
-- return;
-+ writer.addSerialUIDInfo(SERIAL_VERSION_UID_HEADER,
-+ fields[i].constantValueExpression(), serialUidTree);
-+ break;
-+ }
-+ }
-+ classTree.addContent(serialUidTree);
-+ }
-+
-+ /**
-+ * Build the summaries for the methods and fields.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classTree content tree to which the documentation will be added
-+ */
-+ public void buildClassContent(XMLNode node, Content classTree) {
-+ Content classContentTree = writer.getClassContentHeader();
-+ buildChildren(node, classContentTree);
-+ classTree.addContent(classContentTree);
-+ }
-+
-+ /**
-+ * Build the summaries for the methods that belong to the given
-+ * class.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classContentTree content tree to which the documentation will be added
-+ */
-+ public void buildSerializableMethods(XMLNode node, Content classContentTree) {
-+ Content serializableMethodTree = methodWriter.getSerializableMethodsHeader();
-+ MemberDoc[] members = currentClass.serializationMethods();
-+ int membersLength = members.length;
-+ if (membersLength > 0) {
-+ for (int i = 0; i < membersLength; i++) {
-+ currentMember = members[i];
-+ Content methodsContentTree = methodWriter.getMethodsContentHeader(
-+ (i == membersLength - 1));
-+ buildChildren(node, methodsContentTree);
-+ serializableMethodTree.addContent(methodsContentTree);
-+ }
-+ }
-+ if (currentClass.serializationMethods().length > 0) {
-+ classContentTree.addContent(methodWriter.getSerializableMethods(
-+ configuration.getText("doclet.Serialized_Form_methods"),
-+ serializableMethodTree));
-+ if (currentClass.isSerializable() && !currentClass.isExternalizable()) {
-+ if (currentClass.serializationMethods().length == 0) {
-+ Content noCustomizationMsg = methodWriter.getNoCustomizationMsg(
-+ configuration.getText(
-+ "doclet.Serializable_no_customization"));
-+ classContentTree.addContent(methodWriter.getSerializableMethods(
-+ configuration.getText("doclet.Serialized_Form_methods"),
-+ noCustomizationMsg));
-+ }
- }
- }
- }
-
- /**
-- * Build the footer.
-+ * Build the method sub header.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param methodsContentTree content tree to which the documentation will be added
- */
-- public void buildFooter(XMLNode node) {
-- writer.writeFooter();
-+ public void buildMethodSubHeader(XMLNode node, Content methodsContentTree) {
-+ methodWriter.addMemberHeader((MethodDoc)currentMember, methodsContentTree);
-+ }
-+
-+ /**
-+ * Build the deprecated method description.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param methodsContentTree content tree to which the documentation will be added
-+ */
-+ public void buildDeprecatedMethodInfo(XMLNode node, Content methodsContentTree) {
-+ methodWriter.addDeprecatedMemberInfo((MethodDoc) currentMember, methodsContentTree);
-+ }
-+
-+ /**
-+ * Build the information for the method.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param methodsContentTree content tree to which the documentation will be added
-+ */
-+ public void buildMethodInfo(XMLNode node, Content methodsContentTree) {
-+ if(configuration.nocomment){
-+ return;
-+ }
-+ buildChildren(node, methodsContentTree);
-+ }
-+
-+ /**
-+ * Build method description.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param methodsContentTree content tree to which the documentation will be added
-+ */
-+ public void buildMethodDescription(XMLNode node, Content methodsContentTree) {
-+ methodWriter.addMemberDescription((MethodDoc) currentMember, methodsContentTree);
-+ }
-+
-+ /**
-+ * Build the method tags.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param methodsContentTree content tree to which the documentation will be added
-+ */
-+ public void buildMethodTags(XMLNode node, Content methodsContentTree) {
-+ methodWriter.addMemberTags((MethodDoc) currentMember, methodsContentTree);
-+ MethodDoc method = (MethodDoc)currentMember;
-+ if (method.name().compareTo("writeExternal") == 0
-+ && method.tags("serialData").length == 0) {
-+ if (configuration.serialwarn) {
-+ configuration.getDocletSpecificMsg().warning(
-+ currentMember.position(), "doclet.MissingSerialDataTag",
-+ method.containingClass().qualifiedName(), method.name());
-+ }
-+ }
-+ }
-+
-+ /**
-+ * Build the field header.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classContentTree content tree to which the documentation will be added
-+ */
-+ public void buildFieldHeader(XMLNode node, Content classContentTree) {
-+ if (currentClass.serializableFields().length > 0) {
-+ buildFieldSerializationOverview(currentClass, classContentTree);
-+ }
-+ }
-+
-+ /**
-+ * Build the serialization overview for the given class.
-+ *
-+ * @param classDoc the class to print the overview for.
-+ * @param classContentTree content tree to which the documentation will be added
-+ */
-+ public void buildFieldSerializationOverview(ClassDoc classDoc, Content classContentTree) {
-+ if (classDoc.definesSerializableFields()) {
-+ FieldDoc serialPersistentField =
-+ Util.asList(classDoc.serializableFields()).get(0);
-+ // Check to see if there are inline comments, tags or deprecation
-+ // information to be printed.
-+ if (fieldWriter.shouldPrintOverview(serialPersistentField)) {
-+ Content serializableFieldsTree = fieldWriter.getSerializableFieldsHeader();
-+ Content fieldsOverviewContentTree = fieldWriter.getFieldsContentHeader(true);
-+ fieldWriter.addMemberDeprecatedInfo(serialPersistentField,
-+ fieldsOverviewContentTree);
-+ if (!configuration.nocomment) {
-+ fieldWriter.addMemberDescription(serialPersistentField,
-+ fieldsOverviewContentTree);
-+ fieldWriter.addMemberTags(serialPersistentField,
-+ fieldsOverviewContentTree);
-+ }
-+ serializableFieldsTree.addContent(fieldsOverviewContentTree);
-+ classContentTree.addContent(fieldWriter.getSerializableFields(
-+ configuration.getText("doclet.Serialized_Form_class"),
-+ serializableFieldsTree));
-+ }
-+ }
-+ }
-+
-+ /**
-+ * Build the summaries for the fields that belong to the given class.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param classContentTree content tree to which the documentation will be added
-+ */
-+ public void buildSerializableFields(XMLNode node, Content classContentTree) {
-+ MemberDoc[] members = currentClass.serializableFields();
-+ int membersLength = members.length;
-+ if (membersLength > 0) {
-+ Content serializableFieldsTree = fieldWriter.getSerializableFieldsHeader();
-+ for (int i = 0; i < membersLength; i++) {
-+ currentMember = members[i];
-+ if (!currentClass.definesSerializableFields()) {
-+ Content fieldsContentTree = fieldWriter.getFieldsContentHeader(
-+ (i == membersLength - 1));
-+ buildChildren(node, fieldsContentTree);
-+ serializableFieldsTree.addContent(fieldsContentTree);
-+ }
-+ else {
-+ buildSerialFieldTagsInfo(serializableFieldsTree);
-+ }
-+ }
-+ classContentTree.addContent(fieldWriter.getSerializableFields(
-+ configuration.getText("doclet.Serialized_Form_fields"),
-+ serializableFieldsTree));
-+ }
-+ }
-+
-+ /**
-+ * Build the field sub header.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param fieldsContentTree content tree to which the documentation will be added
-+ */
-+ public void buildFieldSubHeader(XMLNode node, Content fieldsContentTree) {
-+ if (!currentClass.definesSerializableFields()) {
-+ FieldDoc field = (FieldDoc) currentMember;
-+ fieldWriter.addMemberHeader(field.type().asClassDoc(),
-+ field.type().typeName(), field.type().dimension(), field.name(),
-+ fieldsContentTree);
-+ }
-+ }
-+
-+ /**
-+ * Build the field deprecation information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param fieldsContentTree content tree to which the documentation will be added
-+ */
-+ public void buildFieldDeprecationInfo(XMLNode node, Content fieldsContentTree) {
-+ if (!currentClass.definesSerializableFields()) {
-+ FieldDoc field = (FieldDoc)currentMember;
-+ fieldWriter.addMemberDeprecatedInfo(field, fieldsContentTree);
-+ }
-+ }
-+
-+ /**
-+ * Build the serial field tags information.
-+ *
-+ * @param serializableFieldsTree content tree to which the documentation will be added
-+ */
-+ public void buildSerialFieldTagsInfo(Content serializableFieldsTree) {
-+ if(configuration.nocomment){
-+ return;
-+ }
-+ FieldDoc field = (FieldDoc)currentMember;
-+ // Process Serializable Fields specified as array of
-+ // ObjectStreamFields. Print a member for each serialField tag.
-+ // (There should be one serialField tag per ObjectStreamField
-+ // element.)
-+ SerialFieldTag[] tags = field.serialFieldTags();
-+ Arrays.sort(tags);
-+ int tagsLength = tags.length;
-+ for (int i = 0; i < tagsLength; i++) {
-+ Content fieldsContentTree = fieldWriter.getFieldsContentHeader(
-+ (i == tagsLength - 1));
-+ fieldWriter.addMemberHeader(tags[i].fieldTypeDoc(),
-+ tags[i].fieldType(), "", tags[i].fieldName(), fieldsContentTree);
-+ fieldWriter.addMemberDescription(tags[i], fieldsContentTree);
-+ serializableFieldsTree.addContent(fieldsContentTree);
-+ }
-+ }
-+
-+ /**
-+ * Build the field information.
-+ *
-+ * @param node the XML element that specifies which components to document
-+ * @param fieldsContentTree content tree to which the documentation will be added
-+ */
-+ public void buildFieldInfo(XMLNode node, Content fieldsContentTree) {
-+ if(configuration.nocomment){
-+ return;
-+ }
-+ FieldDoc field = (FieldDoc)currentMember;
-+ ClassDoc cd = field.containingClass();
-+ // Process default Serializable field.
-+ if ((field.tags("serial").length == 0) && ! field.isSynthetic()
-+ && configuration.serialwarn) {
-+ configuration.message.warning(field.position(),
-+ "doclet.MissingSerialTag", cd.qualifiedName(),
-+ field.name());
-+ }
-+ fieldWriter.addMemberDescription(field, fieldsContentTree);
-+ fieldWriter.addMemberTags(field, fieldsContentTree);
- }
-
- /**
-@@ -298,208 +585,4 @@
- return false;
- }
-
-- /**
-- * Build the method header.
-- */
-- public void buildMethodHeader(XMLNode node) {
-- if (currentClass.serializationMethods().length > 0) {
-- methodWriter.writeHeader(
-- configuration.getText("doclet.Serialized_Form_methods"));
-- if (currentClass.isSerializable() && !currentClass.isExternalizable()) {
-- if (currentClass.serializationMethods().length == 0) {
-- methodWriter.writeNoCustomizationMsg(
-- configuration.getText(
-- "doclet.Serializable_no_customization"));
-- }
-- }
-- }
-- }
--
-- /**
-- * Build the method sub header.
-- */
-- public void buildMethodSubHeader(XMLNode node) {
-- methodWriter.writeMemberHeader((MethodDoc) currentMember);
-- }
--
-- /**
-- * Build the deprecated method description.
-- */
-- public void buildDeprecatedMethodInfo(XMLNode node) {
-- methodWriter.writeDeprecatedMemberInfo((MethodDoc) currentMember);
-- }
--
-- /**
-- * Build method tags.
-- */
-- public void buildMethodDescription(XMLNode node) {
-- methodWriter.writeMemberDescription((MethodDoc) currentMember);
-- }
--
-- /**
-- * Build the method tags.
-- */
-- public void buildMethodTags(XMLNode node) {
-- methodWriter.writeMemberTags((MethodDoc) currentMember);
-- MethodDoc method = (MethodDoc)currentMember;
-- if (method.name().compareTo("writeExternal") == 0
-- && method.tags("serialData").length == 0) {
-- if (configuration.serialwarn) {
-- configuration.getDocletSpecificMsg().warning(
-- currentMember.position(), "doclet.MissingSerialDataTag",
-- method.containingClass().qualifiedName(), method.name());
-- }
-- }
-- }
--
-- /**
-- * build the information for the method.
-- */
-- public void buildMethodInfo(XMLNode node) {
-- if(configuration.nocomment){
-- return;
-- }
-- buildChildren(node);
-- }
--
-- /**
-- * Build the method footer.
-- */
-- public void buildMethodFooter(XMLNode node) {
-- methodWriter.writeMemberFooter();
-- }
--
-- /**
-- * Build the field header.
-- */
-- public void buildFieldHeader(XMLNode node) {
-- if (currentClass.serializableFields().length > 0) {
-- buildFieldSerializationOverview(currentClass);
-- fieldWriter.writeHeader(configuration.getText(
-- "doclet.Serialized_Form_fields"));
-- }
-- }
--
-- /**
-- * If possible, build the serialization overview for the given
-- * class.
-- *
-- * @param classDoc the class to print the overview for.
-- */
-- public void buildFieldSerializationOverview(ClassDoc classDoc) {
-- if (classDoc.definesSerializableFields()) {
-- FieldDoc serialPersistentField =
-- (FieldDoc)((Util.asList(classDoc.serializableFields()).get(0)));
-- // Check to see if there are inline comments, tags or deprecation
-- // information to be printed.
-- if (fieldWriter.shouldPrintMemberDetails(serialPersistentField)) {
-- fieldWriter.writeHeader(
-- configuration.getText("doclet.Serialized_Form_class"));
-- fieldWriter.writeMemberDeprecatedInfo(serialPersistentField);
-- if (!configuration.nocomment) {
-- fieldWriter.writeMemberDescription(serialPersistentField);
-- fieldWriter.writeMemberTags(serialPersistentField);
-- }
-- fieldWriter.writeMemberFooter(serialPersistentField);
-- // Footer required to close the definition list tag
-- // for serialization overview.
-- fieldWriter.writeFooter(
-- configuration.getText("doclet.Serialized_Form_class"));
-- }
-- }
-- }
--
-- /**
-- * Build the field sub header.
-- */
-- public void buildFieldSubHeader(XMLNode node) {
-- if (! currentClass.definesSerializableFields() ){
-- FieldDoc field = (FieldDoc) currentMember;
-- fieldWriter.writeMemberHeader(field.type().asClassDoc(),
-- field.type().typeName(), field.type().dimension(), field.name());
-- }
-- }
--
-- /**
-- * Build the field deprecation information.
-- */
-- public void buildFieldDeprecationInfo(XMLNode node) {
-- if (!currentClass.definesSerializableFields()) {
-- FieldDoc field = (FieldDoc)currentMember;
-- fieldWriter.writeMemberDeprecatedInfo(field);
-- }
-- }
--
-- /**
-- * Build the field information.
-- */
-- public void buildFieldInfo(XMLNode node) {
-- if(configuration.nocomment){
-- return;
-- }
-- FieldDoc field = (FieldDoc)currentMember;
-- ClassDoc cd = field.containingClass();
-- if (cd.definesSerializableFields()) {
-- // Process Serializable Fields specified as array of
-- // ObjectStreamFields. Print a member for each serialField tag.
-- // (There should be one serialField tag per ObjectStreamField
-- // element.)
-- SerialFieldTag[] tags = field.serialFieldTags();
-- Arrays.sort(tags);
-- for (int i = 0; i < tags.length; i++) {
-- fieldWriter.writeMemberHeader(tags[i].fieldTypeDoc(),
-- tags[i].fieldType(), "", tags[i].fieldName());
-- fieldWriter.writeMemberDescription(tags[i]);
--
-- }
-- } else {
--
-- // Process default Serializable field.
-- if ((field.tags("serial").length == 0) && ! field.isSynthetic()
-- && configuration.serialwarn) {
-- configuration.message.warning(field.position(),
-- "doclet.MissingSerialTag", cd.qualifiedName(),
-- field.name());
-- }
-- fieldWriter.writeMemberDescription(field);
-- fieldWriter.writeMemberTags(field);
-- }
-- }
--
-- /**
-- * Build the field sub footer.
-- */
-- public void buildFieldSubFooter(XMLNode node) {
-- if (! currentClass.definesSerializableFields()) {
-- fieldWriter.writeMemberFooter();
-- }
-- }
--
-- /**
-- * Build the summaries for the methods that belong to the given
-- * class.
-- */
-- public void buildSerializableMethods(XMLNode node) {
-- MemberDoc[] members = currentClass.serializationMethods();
-- if (members.length > 0) {
-- for (int i = 0; i < members.length; i++) {
-- currentMember = members[i];
-- buildChildren(node);
-- }
-- }
-- }
--
-- /**
-- * Build the summaries for the fields that belong to the given
-- * class.
-- */
-- public void buildSerializableFields(XMLNode node) {
-- MemberDoc[] members = currentClass.serializableFields();
-- if (members.length > 0) {
-- for (int i = 0; i < members.length; i++) {
-- currentMember = members[i];
-- buildChildren(node);
-- }
-- }
-- }
- }
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclet.xml b/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclet.xml
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclet.xml
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclet.xml
-@@ -29,177 +29,145 @@
- <Doclet>
-
- <PackageDoc>
-- <PackageHeader/>
-- <Summary>
-- <SummaryHeader/>
-- <InterfaceSummary/>
-- <ClassSummary/>
-- <EnumSummary/>
-- <ExceptionSummary/>
-- <ErrorSummary/>
-- <AnnotationTypeSummary/>
-- <SummaryFooter/>
-- </Summary>
-- <PackageDescription/>
-- <PackageTags/>
-- <PackageFooter/>
-+ <Content>
-+ <Summary>
-+ <InterfaceSummary/>
-+ <ClassSummary/>
-+ <EnumSummary/>
-+ <ExceptionSummary/>
-+ <ErrorSummary/>
-+ <AnnotationTypeSummary/>
-+ </Summary>
-+ <PackageDescription/>
-+ <PackageTags/>
-+ </Content>
- </PackageDoc>
-
- <AnnotationTypeDoc>
-- <AnnotationTypeHeader/>
-- <DeprecationInfo/>
-- <AnnotationTypeSignature/>
-- <AnnotationTypeDescription/>
-- <AnnotationTypeTagInfo/>
-+ <AnnotationTypeInfo>
-+ <DeprecationInfo/>
-+ <AnnotationTypeSignature/>
-+ <AnnotationTypeDescription/>
-+ <AnnotationTypeTagInfo/>
-+ </AnnotationTypeInfo>
- <MemberSummary>
-- <AnnotationTypeRequiredMemberSummary/>
-+ <AnnotationTypeRequiredMemberSummary/>
- <AnnotationTypeOptionalMemberSummary/>
- </MemberSummary>
-- <AnnotationTypeRequiredMemberDetails>
-- <Header/>
-- <AnnotationTypeRequiredMember>
-- <MemberHeader/>
-- <Signature/>
-- <DeprecationInfo/>
-- <MemberComments/>
-- <TagInfo/>
-- <MemberFooter/>
-- </AnnotationTypeRequiredMember>
-- </AnnotationTypeRequiredMemberDetails>
-- <AnnotationTypeOptionalMemberDetails>
-- <AnnotationTypeOptionalMember>
-- <MemberHeader/>
-- <Signature/>
-- <DeprecationInfo/>
-- <MemberComments/>
-- <TagInfo/>
-- <DefaultValueInfo/>
-- <MemberFooter/>
-- </AnnotationTypeOptionalMember>
-- <Footer/>
-- </AnnotationTypeOptionalMemberDetails>
-- <AnnotationTypeFooter/>
-+ <AnnotationTypeMemberDetails>
-+ <AnnotationTypeRequiredMemberDetails>
-+ <AnnotationTypeRequiredMember>
-+ <Signature/>
-+ <DeprecationInfo/>
-+ <MemberComments/>
-+ <TagInfo/>
-+ </AnnotationTypeRequiredMember>
-+ </AnnotationTypeRequiredMemberDetails>
-+ <AnnotationTypeOptionalMemberDetails>
-+ <AnnotationTypeOptionalMember>
-+ <Signature/>
-+ <DeprecationInfo/>
-+ <MemberComments/>
-+ <TagInfo/>
-+ <DefaultValueInfo/>
-+ </AnnotationTypeOptionalMember>
-+ </AnnotationTypeOptionalMemberDetails>
-+ </AnnotationTypeMemberDetails>
- </AnnotationTypeDoc>
-
- <ClassDoc>
-- <ClassHeader/>
- <ClassTree/>
-- <TypeParamInfo/>
-- <SuperInterfacesInfo/>
-- <ImplementedInterfacesInfo/>
-- <SubClassInfo/>
-- <SubInterfacesInfo/>
-- <InterfaceUsageInfo/>
-- <NestedClassInfo/>
-- <DeprecationInfo/>
-- <ClassSignature/>
-- <ClassDescription/>
-- <ClassTagInfo/>
-+ <ClassInfo>
-+ <TypeParamInfo/>
-+ <SuperInterfacesInfo/>
-+ <ImplementedInterfacesInfo/>
-+ <SubClassInfo/>
-+ <SubInterfacesInfo/>
-+ <InterfaceUsageInfo/>
-+ <NestedClassInfo/>
-+ <DeprecationInfo/>
-+ <ClassSignature/>
-+ <ClassDescription/>
-+ <ClassTagInfo/>
-+ </ClassInfo>
- <MemberSummary>
- <NestedClassesSummary/>
-- <NestedClassesInheritedSummary/>
- <EnumConstantsSummary/>
- <FieldsSummary/>
-- <FieldsInheritedSummary/>
- <ConstructorsSummary/>
- <MethodsSummary/>
-- <MethodsInheritedSummary/>
- </MemberSummary>
-- <EnumConstantsDetails>
-- <Header/>
-- <EnumConstant>
-- <EnumConstantHeader/>
-- <Signature/>
-- <DeprecationInfo/>
-- <EnumConstantComments/>
-- <TagInfo/>
-- <EnumConstantFooter/>
-- </EnumConstant>
-- <Footer/>
-- </EnumConstantsDetails>
-- <FieldDetails>
-- <Header/>
-- <FieldDoc>
-- <FieldHeader/>
-- <Signature/>
-- <DeprecationInfo/>
-- <FieldComments/>
-- <TagInfo/>
-- <FieldFooter/>
-- </FieldDoc>
-- <Footer/>
-- </FieldDetails>
-- <ConstructorDetails>
-- <Header/>
-- <ConstructorDoc>
-- <ConstructorHeader/>
-- <Signature/>
-- <DeprecationInfo/>
-- <ConstructorComments/>
-- <TagInfo/>
-- <ConstructorFooter/>
-- </ConstructorDoc>
-- <Footer/>
-- </ConstructorDetails>
-- <MethodDetails>
-- <Header/>
-- <MethodDoc>
-- <MethodHeader/>
-- <Signature/>
-- <DeprecationInfo/>
-- <MethodComments/>
-- <TagInfo/>
-- <MethodFooter/>
-- </MethodDoc>
-- <Footer/>
-- </MethodDetails>
-- <ClassFooter/>
-+ <MemberDetails>
-+ <EnumConstantsDetails>
-+ <EnumConstant>
-+ <Signature/>
-+ <DeprecationInfo/>
-+ <EnumConstantComments/>
-+ <TagInfo/>
-+ </EnumConstant>
-+ </EnumConstantsDetails>
-+ <FieldDetails>
-+ <FieldDoc>
-+ <Signature/>
-+ <DeprecationInfo/>
-+ <FieldComments/>
-+ <TagInfo/>
-+ </FieldDoc>
-+ </FieldDetails>
-+ <ConstructorDetails>
-+ <ConstructorDoc>
-+ <Signature/>
-+ <DeprecationInfo/>
-+ <ConstructorComments/>
-+ <TagInfo/>
-+ </ConstructorDoc>
-+ </ConstructorDetails>
-+ <MethodDetails>
-+ <MethodDoc>
-+ <Signature/>
-+ <DeprecationInfo/>
-+ <MethodComments/>
-+ <TagInfo/>
-+ </MethodDoc>
-+ </MethodDetails>
-+ </MemberDetails>
- </ClassDoc>
-
- <ConstantSummary>
-- <Header/>
- <Contents/>
- <ConstantSummaries>
-- <PackageConstantSummary>
-- <PackageHeader/>
-- <ClassConstantSummary>
-- <ClassHeader/>
-- <ConstantMembers/>
-- <ClassFooter/>
-- </ClassConstantSummary>
-- </PackageConstantSummary>
-+ <PackageHeader/>
-+ <ClassConstantSummary>
-+ <ConstantMembers/>
-+ </ClassConstantSummary>
- </ConstantSummaries>
- <Footer/>
- </ConstantSummary>
-
- <SerializedForm>
-- <Header/>
- <SerializedFormSummaries>
- <PackageSerializedForm>
- <PackageHeader/>
- <ClassSerializedForm>
-- <ClassHeader/>
- <SerialUIDInfo/>
-- <MethodHeader/>
-- <SerializableMethods>
-- <MethodSubHeader/>
-- <DeprecatedMethodInfo/>
-- <MethodInfo>
-- <MethodDescription/>
-- <MethodTags/>
-- </MethodInfo>
-- <MethodFooter/>
-- </SerializableMethods>
-- <FieldHeader/>
-- <SerializableFields>
-- <FieldSubHeader/>
-- <FieldDeprecationInfo/>
-- <FieldInfo/>
-- <FieldSubFooter/>
-- </SerializableFields>
-+ <ClassContent>
-+ <SerializableMethods>
-+ <MethodSubHeader/>
-+ <DeprecatedMethodInfo/>
-+ <MethodInfo>
-+ <MethodDescription/>
-+ <MethodTags/>
-+ </MethodInfo>
-+ </SerializableMethods>
-+ <FieldHeader/>
-+ <SerializableFields>
-+ <FieldSubHeader/>
-+ <FieldDeprecationInfo/>
-+ <FieldInfo/>
-+ </SerializableFields>
-+ </ClassContent>
- </ClassSerializedForm>
- </PackageSerializedForm>
- </SerializedFormSummaries>
-- <Footer/>
- </SerializedForm>
- </Doclet>
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets.properties b/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets.properties
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets.properties
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets.properties
-@@ -111,12 +111,12 @@
- doclet.extends=extends
- doclet.Package_private=(package private)
- doclet.implements=implementsdoclet.Same_package_name_used=Package name format used twice: {0}
--doclet.Nested_Classes_Interfaces_Inherited_From_Class=Nested classes/interfaces inherited from class {0}
--doclet.Nested_Classes_Interface_Inherited_From_Interface=Nested classes/interfaces inherited from interface {0}
--doclet.Methods_Inherited_From_Class=Methods inherited from class {0}
--doclet.Methods_Inherited_From_Interface=Methods inherited from interface {0}
--doclet.Fields_Inherited_From_Class=Fields inherited from class {0}
--doclet.Fields_Inherited_From_Interface=Fields inherited from interface {0}
-+doclet.Nested_Classes_Interfaces_Inherited_From_Class=Nested classes/interfaces inherited from class
-+doclet.Nested_Classes_Interface_Inherited_From_Interface=Nested classes/interfaces inherited from interface
-+doclet.Methods_Inherited_From_Class=Methods inherited from class
-+doclet.Methods_Inherited_From_Interface=Methods inherited from interface
-+doclet.Fields_Inherited_From_Class=Fields inherited from class
-+doclet.Fields_Inherited_From_Interface=Fields inherited from interface
- doclet.Serializable=Serializable
- doclet.Externalizable=Externalizable
- doclet.Annotation_Type_Member_Detail=Element Detail
-@@ -136,12 +136,19 @@
- doclet.Constants_Table_Summary={0} table, listing constant fields, and values
- doclet.Member_Table_Summary={0} table, listing {1}, and an explanation
- doclet.fields=fields
-+doclet.Fields=Fields
- doclet.constructors=constructors
-+doclet.Constructors=Constructors
- doclet.methods=methods
-+doclet.Methods=Methods
- doclet.annotation_type_optional_members=optional elements
-+doclet.Annotation_Type_Optional_Members=Optional Elements
- doclet.annotation_type_required_members=required elements
-+doclet.Annotation_Type_Required_Members=Required Elements
- doclet.enum_constants=enum constants
-+doclet.Enum_Constants=Enum Constants
- doclet.nested_classes=nested classes
-+doclet.Nested_Classes=Nested Classes
- doclet.subclasses=subclasses
- doclet.subinterfaces=subinterfaces
- doclet.Modifier=Modifier
-@@ -173,7 +180,7 @@
-
- doclet.enum_valueof_doc=\n\
- Returns the enum constant of this type with the specified name.\n\
-- The string must match <I>exactly</I> an identifier used to declare an\n\
-+ The string must match <i>exactly</i> an identifier used to declare an\n\
- enum constant in this type. (Extraneous whitespace characters are \n\
- not permitted.)\n\
- \n\
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css b/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css
-new file mode 100644
---- /dev/null
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/stylesheet.css
-@@ -0,0 +1,439 @@
-+/* Javadoc style sheet */
-+/*
-+Overall document style
-+*/
-+* {
-+ margin:0;
-+ padding:0;
-+}
-+body {
-+ font-family:Helvetica, Arial, sans-serif;
-+ color:#000000;
-+}
-+p {
-+ margin:20px 0;
-+}
-+pre {
-+ font-size:1.0em;
-+}
-+h1 {
-+ font-size:1.4em;
-+}
-+h2 {
-+ font-size:1.35em;
-+}
-+h3 {
-+ font-size:1.3em;
-+}
-+h4 {
-+ font-size:1.25em;
-+}
-+ul {
-+ margin:10px 0 10px 20px;
-+}
-+li {
-+ list-style:disc;
-+}
-+dl dt {
-+ font-size:0.95em;
-+ font-weight:bold;
-+ margin:10px 0 0 0;
-+}
-+dl dd {
-+ margin:10px 0 10px 20px;
-+}
-+dl dd ul {
-+ margin-left:0;
-+}
-+dl dd ul li {
-+ list-style:none;
-+ margin:10px 0 10px 0;
-+}
-+caption {
-+ background: #CCCCFF;
-+ color:#000000;
-+ text-align: left;
-+ font-size: 150%;
-+ font-weight: bold;
-+ border-left: 2px ridge;
-+ border-right: 2px ridge;
-+ border-top: 2px ridge;
-+ padding-left: 5px;
-+ width:auto;
-+}
-+/*
-+Document title and Copyright styles
-+*/
-+.aboutLanguage {
-+ float:right;
-+ font-size:0.9em;
-+ color:#000000;
-+}
-+.legalCopy {
-+ margin:7px;
-+}
-+.bar {
-+ font-size:1em;
-+ margin:10px 0 0 10px;
-+}
-+.bar a {
-+ font-weight:normal;
-+}
-+/*
-+Navigation bar styles
-+*/
-+.topNav {
-+ border-top:2px solid #C0C0C0;
-+ margin:7px;
-+ padding:7px 0;
-+ height:2.8em;
-+ width:99%;
-+ min-width:600px;
-+}
-+.bottomNav {
-+ border-top:2px solid #C0C0C0;
-+ margin:7px;
-+ padding:7px 0;
-+ height:2.8em;
-+ width:99%;
-+}
-+.subNav {
-+ border-bottom:2px solid #C0C0C0;
-+ float:left;
-+ width:99%;
-+ margin:7px;
-+ min-width:600px;
-+}
-+.subNav div {
-+ clear:left;
-+ float:left;
-+ padding:0 0 5px 2px;
-+ width:100%;
-+}
-+.topNav a:link,.topNav a:active, .topNav a:visited, .topNav a:hover,
-+.bottomNav a:link,.bottomNav a:active, .bottomNav a:visited, .bottomNav a:hover {
-+ color:#000000;
-+ font-weight:bold;
-+ text-decoration:underline;
-+ font-size:1em;
-+}
-+/* Navigation bar list styles */
-+.topNav ul.navList, .bottomNav ul.navList {
-+ background-color:#EEEEFF;
-+ padding:7px 5px;
-+ margin:0;
-+ float:left;
-+ width:80%;
-+}
-+ul.navList li{
-+ list-style:none;
-+ float:left;
-+ padding:3px 4px;
-+ color:#000000;
-+ font-size:0.98em;
-+}
-+ul.navList li.navBarCell1Rev {
-+ background-color:#00008B;
-+ color:#FFFFFF;
-+ font-weight:bold;
-+ font-size:0.97em;
-+}
-+/* Sub-navigation bar list styles */
-+.subNav ul.navList {
-+ float:left;
-+ margin:0;
-+ font-size:0.7em;
-+ width:350px;
-+}
-+ul.subNavList {
-+ float:left;
-+ margin:0;
-+ font-size:0.7em;
-+ width:350px;
-+}
-+ul.subNavList li{
-+ list-style:none;
-+ float:left;
-+ font-size:90%;
-+}
-+/*
-+Page header and footer styles
-+*/
-+.header, .footer {
-+ clear:both;
-+ margin:0 7px;
-+}
-+.indexHeader {
-+ font-size:0.9em;
-+ margin:10px 0 7px 10px;
-+}
-+.header ul {
-+ padding-left:20px;
-+}
-+/* Header and footer title styles */
-+.header h1.title {
-+ font-size:1.4em;
-+ text-align:center;
-+ margin:0;
-+}
-+.header h2.title {
-+ font-size:1.35em;
-+ margin:0;
-+}
-+.subTitle {
-+ margin:0;
-+ padding-top:10px;
-+ font-size:0.75em;
-+ font-weight:bold;
-+}
-+/*
-+Page layout container styles
-+*/
-+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer,
-+.constantValuesContainer {
-+ clear:both;
-+ padding:10px 10px;
-+ position:relative;
-+}
-+.indexContainer {
-+ padding:0 0 10px 10px;
-+ font-size:0.9em;
-+}
-+/*
-+Class inheritance information styles
-+*/
-+ul.inheritance {
-+ margin:0;
-+ padding:0;
-+}
-+ul.inheritance li {
-+ display:inline;
-+ list-style:none;
-+}
-+ul.inheritance li ul.inheritance {
-+ margin-left:15px;
-+ background-image:url(resources/inherit.gif);
-+ background-repeat:no-repeat;
-+ padding-left:15px;
-+ padding-top:1px;
-+}
-+/*
-+Heading styles
-+*/
-+.indexContainer h2 {
-+ font-weight:normal;
-+ font-size:1.0em;
-+ padding:10px 0 0 0;
-+}
-+.contentContainer h2 {
-+ margin:10px 0;
-+}
-+.constantValuesContainer h2 {
-+ background:#CCCCFF;
-+ border:2px ridge;
-+ padding:3px;
-+ margin:0 0 10px 0;
-+}
-+.serializedFormContainer ul.blockList li.blockList h2 {
-+ background:#EEEEFF;
-+ border:2px ridge;
-+ padding:3px;
-+ margin:0 0 15px 0;
-+ text-align:center;
-+}
-+.classUseContainer ul li ul li h3 {
-+ margin-bottom:30px;
-+ padding:3px;
-+}
-+.serializedFormContainer ul.blockList li.blockList ul.blockList li.blockList h3 {
-+ background:#EEEEFF;
-+ margin:0 0 15px 0;
-+ padding:3px;
-+}
-+.serializedFormContainer ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList h3 {
-+ background:#CCCCFF;
-+ margin:0 0 15px 0;
-+ padding:3px;
-+ border:2px ridge;
-+}
-+ul.blockList ul.blockList li.blockList h3, ul.blockList ul.blockList li.blockList h3 {
-+ background:#CCCCFF;
-+ border:2px ridge;
-+ padding-left:5px;
-+}
-+div.summary ul.blockList ul.blockList li.blockList h3 {
-+ background:#CCCCFF;
-+ border:0;
-+ border:2px ridge;
-+ padding-left:5px;
-+}
-+div.summary ul.blockList ul.blockList ul.blockList li.blockList h3 {
-+ background:#EEEEFF;
-+ border:0;
-+ border-bottom:2px ridge;
-+}
-+div.details ul.blockList ul.blockList ul.blockList li.blockList h4,
-+div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
-+ font-size:1.15em;
-+ font-weight:bold;
-+ padding:0 0 10px 0;
-+}
-+/*
-+Table styles
-+*/
-+.contentContainer table {
-+ border-collapse: collapse ;
-+ width:100%;
-+}
-+.contentContainer table td, .contentContainer table th {
-+ border:2px ridge;
-+ padding:3px;
-+}
-+/* Constant values page table styles */
-+.constantValuesContainer table {
-+ border-collapse: collapse ;
-+ margin:0 0 10px 0;
-+}
-+.constantValuesContainer table caption{
-+ font-size:0.95em;
-+ padding:3px;
-+ background:#EEEEFF;
-+}
-+.constantValuesContainer table td, .constantValuesContainer table th {
-+ border:2px ridge;
-+ padding:3px;
-+}
-+/* Class-use/Package-use page table styles */
-+.classUseContainer table {
-+ border-collapse: collapse ;
-+ width:100%;
-+ margin:0 0 15px 0;
-+}
-+.classUseContainer ul li ul li table {
-+ margin-bottom:30px;
-+}
-+.classUseContainer ul li ul li table caption{
-+ font-size:0.95em;
-+ padding:3px;
-+ background:#EEEEFF;
-+}
-+.classUseContainer table td, .classUseContainer table th {
-+ border:2px ridge;
-+ padding:3px;
-+}
-+/* Summary table styles */
-+ul.blockList li.blockList table.overviewSummary {
-+ margin:0;
-+ margin-bottom:15px;
-+}
-+ul.blockList li.blockList table caption {
-+ padding:3px;
-+}
-+ul.blockList li.blockList table.overviewSummary td.colFirst{
-+ text-align:right;
-+}
-+table.packageSummary td.colFirst, table.overviewSummary th.colFirst {
-+ width:15%;
-+}
-+div.summary ul.blockList ul.blockList li.blockList caption {
-+ display:none;
-+}
-+div.summary ul.blockList li.blockList ul.blockList li.blockList table.overviewSummary th {
-+ border-top:0;
-+}
-+/* Table column block styles */
-+ul.blockList li.blockList table.overviewSummary td.colLast div.block{
-+ padding:0;
-+ padding-left:40px;
-+}
-+ul.blockList li.blockList table.overviewSummary td.colOne div.block{
-+ padding:0;
-+ padding-left:40px;
-+}
-+.contentContainer ul.blockList li.blockList table .colOne div.block{
-+ padding-left:40px;
-+}
-+.classUseContainer ul li ul li table .colLast div.block,
-+.classUseContainer ul li ul li table .colOne div.block{
-+ padding-left:40px;
-+}
-+/*
-+List styles
-+*/
-+ul.horizontal li {
-+ display:inline;
-+ font-size:0.9em;
-+}
-+/* Container specific list styles */
-+.indexContainer ul {
-+ margin:0;
-+}
-+.indexContainer ul li {
-+ list-style:none;
-+}
-+.serializedFormContainer ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList {
-+ border:0;
-+}
-+.serializedFormContainer ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList {
-+ list-style:none;
-+ border:0;
-+ border-bottom:2px ridge;
-+}
-+.serializedFormContainer ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockListLast {
-+ list-style:none;
-+}
-+/* General list styles */
-+ul.blockList, ul.blockListLast {
-+ margin-left:0;
-+ padding-left:0;
-+}
-+ul.blockList li.blockList, ul.blockListLast li.blockList {
-+ list-style:none;
-+ margin-bottom:25px;
-+}
-+ul.blockList ul.blockList ul.blockList li.blockList {
-+ border:2px ridge;
-+}
-+div.details ul.blockList ul.blockList ul.blockList li.blockList {
-+ border:0;
-+ border-bottom:2px ridge;
-+}
-+/* Definition list styles */
-+ul.blockList li.blockList dl{
-+ margin-bottom:15px;
-+}
-+ul.blockList li.blockList dl dd{
-+ margin:0 0 0 30px;
-+}
-+ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList dl,
-+ul.blockList li.blockList ul.blockList li.blockList ul.blockListLast li.blockList dl{
-+ padding:0 0 10px 35px;
-+}
-+dl.nameValue dt, dl.nameValue dd{
-+ display:inline;
-+}
-+ul.blockList li.blockList pre{
-+ margin:0 0 15px 0;
-+}
-+/* List content styles */
-+ul.blockList li.blockList ul.blockList li.blockList pre{
-+ margin:10px 0 15px 0;
-+}
-+ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList pre,
-+ul.blockList li.blockList ul.blockList li.blockList ul.blockListLast li.blockList pre{
-+ padding:0 0 10px 0;
-+}
-+ul.blockList li.blockList ul.blockList li.blockList ul.blockList li.blockList div.block,
-+ul.blockList li.blockList ul.blockList li.blockList ul.blockListLast li.blockList div.block{
-+ padding:0 0 10px 35px;
-+}
-+/*
-+Formatting effect styles
-+*/
-+.strong {
-+ font-weight:bold;
-+}
-+.sourceLineNo {
-+ color:green;
-+ padding:0 30px 0 0;
-+}
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DirectoryManager.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DirectoryManager.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DirectoryManager.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/DirectoryManager.java
-@@ -46,7 +46,7 @@
- /**
- * The file separator string, "/", used in the formation of the URL path.
- */
-- public static final String URL_FILE_SEPERATOR = "/";
-+ public static final String URL_FILE_SEPARATOR = "/";
-
- /**
- * Never instaniated.
-@@ -123,13 +123,13 @@
- for (int i = 0; i < packageName.length(); i++) {
- char ch = packageName.charAt(i);
- if (ch == '.') {
-- pathstr.append(URL_FILE_SEPERATOR);
-+ pathstr.append(URL_FILE_SEPARATOR);
- } else {
- pathstr.append(ch);
- }
- }
-- if (pathstr.length() > 0 && ! pathstr.toString().endsWith(URL_FILE_SEPERATOR)) {
-- pathstr.append(URL_FILE_SEPERATOR);
-+ if (pathstr.length() > 0 && ! pathstr.toString().endsWith(URL_FILE_SEPARATOR)) {
-+ pathstr.append(URL_FILE_SEPARATOR);
- }
- return pathstr.toString();
- }
-@@ -155,7 +155,7 @@
- for (int i = 0; i < name.length(); i++) {
- char ch = name.charAt(i);
- if (ch == '.') {
-- pathstr.append(URL_FILE_SEPERATOR);
-+ pathstr.append(URL_FILE_SEPARATOR);
- } else {
- pathstr.append(ch);
- }
-@@ -184,7 +184,7 @@
- StringBuffer pathstr = new StringBuffer();
- pathstr.append(getRelativePath(from));
- pathstr.append(getPath(to));
-- pathstr.append(URL_FILE_SEPERATOR);
-+ pathstr.append(URL_FILE_SEPARATOR);
- return pathstr.toString();
- }
-
-@@ -226,10 +226,10 @@
- for (int i = 0; i < from.length(); i++) {
- char ch = from.charAt(i);
- if (ch == '.') {
-- pathstr.append(".." + URL_FILE_SEPERATOR);
-+ pathstr.append(".." + URL_FILE_SEPARATOR);
- }
- }
-- pathstr.append(".." + URL_FILE_SEPERATOR);
-+ pathstr.append(".." + URL_FILE_SEPARATOR);
- return pathstr.toString();
- }
-
-@@ -297,7 +297,7 @@
- String pathstr = createPathString(pd);
- if (pathstr.length() > 0) {
- buf.append(pathstr);
-- buf.append(URL_FILE_SEPERATOR);
-+ buf.append(URL_FILE_SEPARATOR);
- }
- buf.append(filename);
- return buf.toString();
-diff --git a/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java b/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java
---- langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java
-+++ langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/Util.java
-@@ -51,6 +51,11 @@
- {{"&", "&amp;"}, {"<", "&lt;"}, {">", "&gt;"}};
-
- /**
-+ * Name of the resource directory.
-+ */
-+ public static final String RESOURCESDIR = "resources";
-+
-+ /**
- * Return array of class members whose documentation is to be generated.
- * If the member is deprecated do not include such a member in the
- * returned array.
-@@ -236,8 +241,8 @@
- String destname = configuration.docFileDestDirName;
- File srcdir = new File(path + dir);
- if (destname.length() > 0 && !destname.endsWith(
-- DirectoryManager.URL_FILE_SEPERATOR)) {
-- destname += DirectoryManager.URL_FILE_SEPERATOR;
-+ DirectoryManager.URL_FILE_SEPARATOR)) {
-+ destname += DirectoryManager.URL_FILE_SEPARATOR;
- }
- String dest = destname + dir;
- try {
-@@ -263,7 +268,7 @@
- && ! configuration.shouldExcludeDocFileDir(
- srcfile.getName())){
- copyDocFiles(configuration, path, dir +
-- DirectoryManager.URL_FILE_SEPERATOR + srcfile.getName(),
-+ DirectoryManager.URL_FILE_SEPARATOR + srcfile.getName(),
- overwrite);
- }
- }
-@@ -322,25 +327,38 @@
- * it already exists.
- */
- public static void copyResourceFile(Configuration configuration,
-- String resourcefile,
-- boolean overwrite) {
-- String destdir = configuration.destDirName;
-- String destresourcesdir = destdir + "resources";
-- DirectoryManager.createDirectory(configuration, destresourcesdir);
-- File destfile = new File(destresourcesdir, resourcefile);
-+ String resourcefile, boolean overwrite) {
-+ String destresourcesdir = configuration.destDirName + RESOURCESDIR;
-+ copyFile(configuration, resourcefile, RESOURCESDIR, destresourcesdir,
-+ overwrite);
-+ }
-+
-+ /**
-+ * Copy a file from a source directory to a destination directory
-+ * (if it is not there already). If <code>overwrite</code> is true and
-+ * the destination file already exists, overwrite it.
-+ *
-+ * @param configuration Holds the error message
-+ * @param file The name of the file to copy
-+ * @param source The source directory
-+ * @param destination The destination directory where the file needs to be copied
-+ * @param overwrite A flag to indicate whether the file in the
-+ * destination directory will be overwritten if
-+ * it already exists.
-+ */
-+ public static void copyFile(Configuration configuration, String file, String source,
-+ String destination, boolean overwrite) {
-+ DirectoryManager.createDirectory(configuration, destination);
-+ File destfile = new File(destination, file);
- if(destfile.exists() && (! overwrite)) return;
- try {
--
- InputStream in = Configuration.class.getResourceAsStream(
-- "resources/" + resourcefile);
--
-+ source + DirectoryManager.URL_FILE_SEPARATOR + file);
- if(in==null) return;
--
- OutputStream out = new FileOutputStream(destfile);
- byte[] buf = new byte[2048];
- int n;
- while((n = in.read(buf))>0) out.write(buf,0,n);
--
- in.close();
- out.close();
- } catch(Throwable t) {}
-@@ -357,12 +375,12 @@
- try{
- String pkgPath = DirectoryManager.getDirectoryPath(pkgDoc);
- String completePath = new SourcePath(configuration.sourcepath).
-- getDirectory(pkgPath) + DirectoryManager.URL_FILE_SEPERATOR;
-+ getDirectory(pkgPath) + DirectoryManager.URL_FILE_SEPARATOR;
- //Make sure that both paths are using the same seperators.
- completePath = Util.replaceText(completePath, File.separator,
-- DirectoryManager.URL_FILE_SEPERATOR);
-+ DirectoryManager.URL_FILE_SEPARATOR);
- pkgPath = Util.replaceText(pkgPath, File.separator,
-- DirectoryManager.URL_FILE_SEPERATOR);
-+ DirectoryManager.URL_FILE_SEPARATOR);
- return completePath.substring(0, completePath.indexOf(pkgPath));
- } catch (Exception e){
- return "";
-@@ -572,6 +590,24 @@
- }
-
- /**
-+ * Given a string, strips all html characters and
-+ * return the result.
-+ *
-+ * @param rawString The string to check.
-+ * @return the original string with all of the HTML characters
-+ * stripped.
-+ *
-+ */
-+ public static String stripHtml(String rawString) {
-+ // remove HTML tags
-+ rawString = rawString.replaceAll("\\<.*?>", " ");
-+ // consolidate multiple spaces between a word to a single space
-+ rawString = rawString.replaceAll("\\b\\s{2,}\\b", " ");
-+ // remove extra whitespaces
-+ return rawString.trim();
-+ }
-+
-+ /**
- * Create the directory path for the file to be generated, construct
- * FileOutputStream and OutputStreamWriter depending upon docencoding.
- *
-diff --git a/test/com/sun/javadoc/AccessAsciiArt/AccessAsciiArt.java b/test/com/sun/javadoc/AccessAsciiArt/AccessAsciiArt.java
---- langtools/test/com/sun/javadoc/AccessAsciiArt/AccessAsciiArt.java
-+++ langtools/test/com/sun/javadoc/AccessAsciiArt/AccessAsciiArt.java
-@@ -84,17 +84,17 @@
-
- // Test the top line of the class tree
- {
--" <IMG SRC=\"../../resources/inherit.gif\" ALT=\"extended by \"><A HREF=\"../../p1/C.html\" title=\"class in p1\">p1.C</A>",
-+"<li><a href=\"../../p1/C.html\" title=\"class in p1\">p1.C</a></li>",
- TMPDEST_DIR1 + "p1" + FS + "subpkg" + FS + "SSC.html" },
-
- // Test the second line of the class tree
- {
--" <IMG SRC=\"../../resources/inherit.gif\" ALT=\"extended by \"><A HREF=\"../../p1/SC.html\" title=\"class in p1\">p1.SC</A>",
-+"<li><a href=\"../../p1/SC.html\" title=\"class in p1\">p1.SC</a></li>",
- TMPDEST_DIR1 + "p1" + FS + "subpkg" + FS + "SSC.html" },
-
- // Test the third line of the class tree
- {
--" <IMG SRC=\"../../resources/inherit.gif\" ALT=\"extended by \"><STRONG>p1.subpkg.SSC</STRONG>",
-+"<li>p1.subpkg.SSC</li>",
- TMPDEST_DIR1 + "p1" + FS + "subpkg" + FS +"SSC.html" },
-
- };
-diff --git a/test/com/sun/javadoc/AccessH1/AccessH1.java b/test/com/sun/javadoc/AccessH1/AccessH1.java
---- langtools/test/com/sun/javadoc/AccessH1/AccessH1.java
-+++ langtools/test/com/sun/javadoc/AccessH1/AccessH1.java
-@@ -83,18 +83,19 @@
- * NOTE: The standard doclet uses the same separator "\n" for all OS's
- */
- private static final String[][] testArray = {
--
-- // Test the style sheet
-- {
-- "h1 { font-size: 145% }",
-- TMPDEST_DIR1 + "stylesheet.css" },
--
-- // Test the doc title in the overview page
-- {
-- "<H1>" + LS + "Document Title" + LS + "</H1>",
-- TMPDEST_DIR1 + "overview-summary.html" }
--
-- };
-+ // Test the style sheet
-+ {
-+ ".header h1.title {" + LS + " font-size:1.4em;" + LS +
-+ " text-align:center;" + LS + " margin:0;" + LS +
-+ "}",
-+ TMPDEST_DIR1 + "stylesheet.css"
-+ },
-+ // Test the doc title in the overview page
-+ {
-+ "<h1 class=\"title\">Document Title</h1>",
-+ TMPDEST_DIR1 + "overview-summary.html"
-+ }
-+ };
-
- public static void runTestsOnHTML(String[][] testArray) {
-
-diff --git a/test/com/sun/javadoc/AccessSkipNav/AccessSkipNav.java b/test/com/sun/javadoc/AccessSkipNav/AccessSkipNav.java
---- langtools/test/com/sun/javadoc/AccessSkipNav/AccessSkipNav.java
-+++ langtools/test/com/sun/javadoc/AccessSkipNav/AccessSkipNav.java
-@@ -46,6 +46,7 @@
- private static final String BUGNAME = "AccessSkipNav";
- private static final String FS = System.getProperty("file.separator");
- private static final String PS = System.getProperty("path.separator");
-+ private static final String LS = System.getProperty("line.separator");
- private static final String TMPDEST_DIR1 = "." + FS + "docs1" + FS;
- private static final String TMPDEST_DIR2 = "." + FS + "docs2" + FS;
-
-@@ -84,20 +85,22 @@
-
- // Testing only for the presence of the <a href> and <a name>
-
-- // Top navbar <A HREF>
-- { "<A HREF=\"#skip-navbar_top\" title=\"Skip navigation links\"></A>",
-+ // Top navbar <a href>
-+ { "<a href=\"#skip-navbar_top\" title=\"Skip navigation links\"></a>",
- TMPDEST_DIR1 + "p1" + FS + "C1.html" },
-
-- // Top navbar <A NAME>
-- { "<A NAME=\"skip-navbar_top\"></A>",
-+ // Top navbar <a name>
-+ { "<a name=\"skip-navbar_top\">" + LS +
-+ "<!-- -->" + LS + "</a>",
- TMPDEST_DIR1 + "p1" + FS + "C1.html" },
-
-- // Bottom navbar <A HREF>
-- { "<A HREF=\"#skip-navbar_bottom\" title=\"Skip navigation links\"></A>",
-+ // Bottom navbar <a href>
-+ { "<a href=\"#skip-navbar_bottom\" title=\"Skip navigation links\"></a>",
- TMPDEST_DIR1 + "p1" + FS + "C1.html" },
-
-- // Bottom navbar <A NAME>
-- { "<A NAME=\"skip-navbar_bottom\"></A>",
-+ // Bottom navbar <a name>
-+ { "<a name=\"skip-navbar_bottom\">" + LS +
-+ "<!-- -->" + LS + "</a>",
- TMPDEST_DIR1 + "p1" + FS + "C1.html" }
- };
-
-diff --git a/test/com/sun/javadoc/AccessSummary/AccessSummary.java b/test/com/sun/javadoc/AccessSummary/AccessSummary.java
---- langtools/test/com/sun/javadoc/AccessSummary/AccessSummary.java
-+++ langtools/test/com/sun/javadoc/AccessSummary/AccessSummary.java
-@@ -24,7 +24,7 @@
- /*
- * @test @(#)AccessSummary.java
- * @bug 4637604 4775148
-- * @summary Test the tables for summary=""
-+ * @summary Test the tables for summary attribute
- * @author dkramer
- * @library ../lib/
- * @build JavadocTester
-@@ -44,15 +44,15 @@
-
- // Test that the summary attribute appears
- { OUTPUT_DIR1 + "overview-summary.html",
-- "SUMMARY=\"\"" },
-+ "summary=\"Packages table, listing packages, and an explanation\"" },
-
- // Test that the summary attribute appears
- { OUTPUT_DIR1 + "p1" + FS + "C1.html",
-- "SUMMARY=\"\"" },
-+ "summary=\"Constructor Summary table, listing constructors, and an explanation\"" },
-
- // Test that the summary attribute appears
- { OUTPUT_DIR1 + "constant-values.html",
-- "SUMMARY=\"\"" }
-+ "summary=\"Constant Field Values table, listing constant fields, and values\"" }
- };
-
- // First test with -header only
-diff --git a/test/com/sun/javadoc/AuthorDD/AuthorDD.java b/test/com/sun/javadoc/AuthorDD/AuthorDD.java
---- langtools/test/com/sun/javadoc/AuthorDD/AuthorDD.java
-+++ langtools/test/com/sun/javadoc/AuthorDD/AuthorDD.java
-@@ -86,12 +86,12 @@
-
- // Test single @since tag:
-
-- { "<DT><STRONG>Since:</STRONG></DT>"+NL+" <DD>JDK 1.0</DD>",
-+ { "<dt><span class=\"strong\">Since:</span></dt>"+NL+" <dd>JDK 1.0</dd>",
- BUGID + FS + "p1" + FS + "C1.html" },
-
- // Test multiple @author tags:
-
-- { "<DT><STRONG>Author:</STRONG></DT>"+NL+" <DD>Doug Kramer, Jamie, Neal</DD>",
-+ { "<dt><span class=\"strong\">Author:</span></dt>"+NL+" <dd>Doug Kramer, Jamie, Neal</dd>",
- BUGID + FS + "p1" + FS + "C1.html" },
-
- };
-diff --git a/test/com/sun/javadoc/JavascriptWinTitle/JavascriptWinTitle.java b/test/com/sun/javadoc/JavascriptWinTitle/JavascriptWinTitle.java
---- langtools/test/com/sun/javadoc/JavascriptWinTitle/JavascriptWinTitle.java
-+++ langtools/test/com/sun/javadoc/JavascriptWinTitle/JavascriptWinTitle.java
-@@ -90,44 +90,34 @@
- private static final String[][] testArray = {
-
- // Test the javascript "type" attribute is present:
-- { "<SCRIPT type=\"text/javascript\">",
-+ { "<script type=\"text/javascript\">",
-+ TMPDEST_DIR1 + "overview-summary.html" },
-+
-+ // Test onload is absent:
-+ { "<body>",
- TMPDEST_DIR1 + "overview-summary.html" },
-
- // Test onload is present:
-- { "onload=\"windowTitle();\"",
-- TMPDEST_DIR1 + "overview-summary.html" },
--
-- // Test onload is present:
-- { "onload=\"windowTitle();\"",
-+ { "<body>",
- TMPDEST_DIR1 + FS + "p1" + FS + "package-summary.html" },
-
-- // Test onload is present:
-- { "onload=\"windowTitle();\"",
-- TMPDEST_DIR1 + FS + "p1" + FS + "C.html" },
--
- // Test that "onload" is not present in BODY tag:
-- { "<BODY BGCOLOR=\"white\">",
-+ { "<body>",
- TMPDEST_DIR1 + "overview-frame.html" },
-
- // Test that "onload" is not present in BODY tag:
-- { "<BODY BGCOLOR=\"white\">",
-+ { "<body>",
- TMPDEST_DIR1 + "allclasses-frame.html" },
-
- // Test that "onload" is not present in BODY tag:
-- { "<BODY BGCOLOR=\"white\">",
-+ { "<body>",
- TMPDEST_DIR1 + FS + "p1" + FS + "package-frame.html" },
-
- // Test that win title javascript is followed by NOSCRIPT code.
-- {"<SCRIPT type=\"text/javascript\">" + LS +
-- "function windowTitle()" + LS +
-- "{" + LS +
-- " if (location.href.indexOf('is-external=true') == -1) {" + LS +
-- " parent.document.title=\"C (Window Title)\";" + LS +
-- " }" + LS +
-- "}" + LS +
-- "</SCRIPT>" + LS +
-- "<NOSCRIPT>" + LS +
-- "</NOSCRIPT>",
-+ {"<script type=\"text/javascript\"><!--" + LS +
-+ " if (location.href.indexOf('is-external=true') == -1) {" + LS +
-+ " parent.document.title=\"C (Window Title)\";" + LS +
-+ " }" + LS + "//-->" + LS + "</script>",
- TMPDEST_DIR1 + FS + "p1" + FS + "C.html"
- }
-
-diff --git a/test/com/sun/javadoc/MetaTag/MetaTag.java b/test/com/sun/javadoc/MetaTag/MetaTag.java
---- langtools/test/com/sun/javadoc/MetaTag/MetaTag.java
-+++ langtools/test/com/sun/javadoc/MetaTag/MetaTag.java
-@@ -67,31 +67,31 @@
- private static final String[][] TEST = {
-
- { OUTPUT_DIR + FS + "p1" + FS + "C1.html",
-- "<META NAME=\"keywords\" CONTENT=\"p1.C1 class\">" },
-+ "<meta name=\"keywords\" content=\"p1.C1 class\">" },
-
- { OUTPUT_DIR + FS + "p1" + FS + "C1.html",
-- "<META NAME=\"keywords\" CONTENT=\"field1\">" },
-+ "<meta name=\"keywords\" content=\"field1\">" },
-
- { OUTPUT_DIR + FS + "p1" + FS + "C1.html",
-- "<META NAME=\"keywords\" CONTENT=\"field2\">" },
-+ "<meta name=\"keywords\" content=\"field2\">" },
-
- { OUTPUT_DIR + FS + "p1" + FS + "C1.html",
-- "<META NAME=\"keywords\" CONTENT=\"method1()\">" },
-+ "<meta name=\"keywords\" content=\"method1()\">" },
-
- { OUTPUT_DIR + FS + "p1" + FS + "C1.html",
-- "<META NAME=\"keywords\" CONTENT=\"method2()\">" },
-+ "<meta name=\"keywords\" content=\"method2()\">" },
-
- { OUTPUT_DIR + FS + "p1" + FS + "package-summary.html",
-- "<META NAME=\"keywords\" CONTENT=\"p1 package\">" },
-+ "<meta name=\"keywords\" content=\"p1 package\">" },
-
- { OUTPUT_DIR + FS + "overview-summary.html",
-- "<META NAME=\"keywords\" CONTENT=\"Overview, Sample Packages\">" },
-+ "<meta name=\"keywords\" content=\"Overview, Sample Packages\">" },
-
- //NOTE: Hopefully, this regression test is not run at midnight. If the output
- //was generated yesterday and this test is run today, the test will fail.
- {OUTPUT_DIR + FS + "overview-summary.html",
-- "<META NAME=\"date\" "
-- + "CONTENT=\"" + m_dateFormat.format(new Date()) + "\">"},
-+ "<meta name=\"date\" "
-+ + "content=\"" + m_dateFormat.format(new Date()) + "\">"},
- };
-
- private static final String[][] NEGATED_TEST = NO_TEST;
-diff --git a/test/com/sun/javadoc/ValidHtml/ValidHtml.java b/test/com/sun/javadoc/ValidHtml/ValidHtml.java
---- langtools/test/com/sun/javadoc/ValidHtml/ValidHtml.java
-+++ langtools/test/com/sun/javadoc/ValidHtml/ValidHtml.java
-@@ -33,12 +33,10 @@
- * @run main ValidHtml
- */
-
--
- import com.sun.javadoc.*;
- import java.util.*;
- import java.io.*;
-
--
- /**
- * Runs javadoc and runs regression tests on the resulting HTML.
- * It reads each file, complete with newlines, into a string to easily
-@@ -66,13 +64,14 @@
- String srcdir = System.getProperty("test.src", ".");
-
- // Test for all cases except the split index page
-- runJavadoc(new String[] {"-d", TMPDEST_DIR1,
-- "-doctitle", "Document Title",
-- "-windowtitle", "Window Title",
-- "-use",
-- "-overview", (srcdir + FS + "overview.html"),
-- "-sourcepath", srcdir,
-- "p1", "p2"});
-+ runJavadoc(new String[]{"-d", TMPDEST_DIR1,
-+ "-doctitle", "Document Title",
-+ "-windowtitle", "Window Title",
-+ "-use",
-+ "-overview", (srcdir + FS + "overview.html"),
-+ "-sourcepath", srcdir,
-+ "p1", "p2"
-+ });
- runTestsOnHTML(testArray);
-
- printSummary();
-@@ -90,53 +89,52 @@
- * NOTE: The standard doclet uses the same separator "\n" for all OS's
- */
- private static final String[][] testArray = {
--
-- // Test the proper DOCTYPE element is present:
-- {
--"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">",
-- TMPDEST_DIR1 + "index.html" },
--
-- // Test the proper DOCTYPE element is present:
-- {
--"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-- TMPDEST_DIR1 + "overview-summary.html" },
--
-- // Test the proper DOCTYPE element is present:
-- {
--"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-- TMPDEST_DIR1 + "p1" + FS + "package-summary.html" },
--
-- // Test the proper DOCTYPE element is present:
-- {
--"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-- TMPDEST_DIR1 + "p1" + FS + "C.html" },
--
-- // Test the proper DOCTYPE element is present:
-- {
--"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-- TMPDEST_DIR1 + "overview-frame.html" },
--
-- // Test the proper DOCTYPE element is present:
-- {
--"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-- TMPDEST_DIR1 + "allclasses-frame.html" },
--
-- // Test the proper DOCTYPE element is present:
-- {
--"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-- TMPDEST_DIR1 + "p1" + FS + "package-frame.html" },
--
-- // Test that <NOFRAMES> is inside <FRAMESET> element:
-- {
--"</NOFRAMES>" + LS + "</FRAMESET>",
-- TMPDEST_DIR1 + "index.html" },
--
-- // Test the table elements are in the correct order:
-- {
--"</FONT></TD>" + LS + "</TR>",
-- TMPDEST_DIR1 + FS + "p1" + FS + "package-use.html" }
--
-- };
-+ // Test the proper DOCTYPE element is present:
-+ {
-+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">",
-+ TMPDEST_DIR1 + "index.html"
-+ },
-+ // Test the proper DOCTYPE element is present:
-+ {
-+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-+ TMPDEST_DIR1 + "overview-summary.html"
-+ },
-+ // Test the proper DOCTYPE element is present:
-+ {
-+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-+ TMPDEST_DIR1 + "p1" + FS + "package-summary.html"
-+ },
-+ // Test the proper DOCTYPE element is present:
-+ {
-+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-+ TMPDEST_DIR1 + "p1" + FS + "C.html"
-+ },
-+ // Test the proper DOCTYPE element is present:
-+ {
-+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-+ TMPDEST_DIR1 + "overview-frame.html"
-+ },
-+ // Test the proper DOCTYPE element is present:
-+ {
-+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-+ TMPDEST_DIR1 + "allclasses-frame.html"
-+ },
-+ // Test the proper DOCTYPE element is present:
-+ {
-+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">",
-+ TMPDEST_DIR1 + "p1" + FS + "package-frame.html"
-+ },
-+ // Test that <NOFRAMES> is inside <FRAMESET> element:
-+ {
-+ "</noframes>" + LS + "</frameset>",
-+ TMPDEST_DIR1 + "index.html"
-+ },
-+ // Test the table elements are in the correct order:
-+ {
-+ "</td>" + LS + "</tr>",
-+ TMPDEST_DIR1 + FS + "p1" + FS + "package-use.html"
-+ }
-+ };
-
- public static void runTestsOnHTML(String[][] testArray) {
-
-@@ -152,10 +150,7 @@
-
- // Find string in file's contents
- if (findString(fileString, stringToFind) == -1) {
-- System.out.println("\nSub-test " + (subtestNum)
-- + " for bug " + BUGID + " (" + BUGNAME + ") FAILED\n"
-- + "when searching for:\n"
-- + stringToFind);
-+ System.out.println("\nSub-test " + (subtestNum) + " for bug " + BUGID + " (" + BUGNAME + ") FAILED\n" + "when searching for:\n" + stringToFind);
- } else {
- numSubtestsPassed += 1;
- System.out.println("\nSub-test " + (subtestNum) + " passed:\n" + stringToFind);
-@@ -164,11 +159,10 @@
- }
-
- public static void printSummary() {
-- if ( numSubtestsPassed == subtestNum ) {
-+ if (numSubtestsPassed == subtestNum) {
- System.out.println("\nAll " + numSubtestsPassed + " subtests passed");
- } else {
-- throw new Error("\n" + (subtestNum - numSubtestsPassed) + " of " + (subtestNum)
-- + " subtests failed for bug " + BUGID + " (" + BUGNAME + ")\n");
-+ throw new Error("\n" + (subtestNum - numSubtestsPassed) + " of " + (subtestNum) + " subtests failed for bug " + BUGID + " (" + BUGNAME + ")\n");
- }
- }
-
-@@ -176,16 +170,16 @@
- public static String readFileToString(String filename) {
- try {
- File file = new File(filename);
-- if ( !file.exists() ) {
-+ if (!file.exists()) {
- System.out.println("\nFILE DOES NOT EXIST: " + filename);
- }
- BufferedReader in = new BufferedReader(new FileReader(file));
-
- // Create an array of characters the size of the file
-- char[] allChars = new char[(int)file.length()];
-+ char[] allChars = new char[(int) file.length()];
-
- // Read the characters into the allChars array
-- in.read(allChars, 0, (int)file.length());
-+ in.read(allChars, 0, (int) file.length());
- in.close();
-
- // Convert to a string
-diff --git a/test/com/sun/javadoc/VersionNumber/VersionNumber.java b/test/com/sun/javadoc/VersionNumber/VersionNumber.java
---- langtools/test/com/sun/javadoc/VersionNumber/VersionNumber.java
-+++ langtools/test/com/sun/javadoc/VersionNumber/VersionNumber.java
-@@ -84,7 +84,7 @@
-
- // Test the proper DOCTYPE element is present:
- {
-- "<!-- Generated by javadoc (build",
-+ "<!-- Generated by javadoc (version",
- TMPDEST_DIR1 + "p1" + FS + "C.html" },
-
- };
-diff --git a/test/com/sun/javadoc/WindowTitles/WindowTitles.java b/test/com/sun/javadoc/WindowTitles/WindowTitles.java
---- langtools/test/com/sun/javadoc/WindowTitles/WindowTitles.java
-+++ langtools/test/com/sun/javadoc/WindowTitles/WindowTitles.java
-@@ -94,52 +94,52 @@
- */
- private static final String[][] testArray = {
-
-- { "<TITLE>" + LS + "Overview" + LS + "</TITLE>",
-+ { "<title>Overview</title>",
- TMPDIR_STRING1 + "overview-summary.html" },
-
-- { "<TITLE>" + LS + "Class Hierarchy" + LS + "</TITLE>",
-+ { "<title>Class Hierarchy</title>",
- TMPDIR_STRING1 + "overview-tree.html" },
-
-- { "<TITLE>" + LS + "Overview List" + LS + "</TITLE>",
-+ { "<title>Overview List</title>",
- TMPDIR_STRING1 + "overview-frame.html" },
-
-- { "<TITLE>" + LS + "p1" + LS + "</TITLE>",
-+ { "<title>p1</title>",
- TMPDIR_STRING1 + "p1" + FS + "package-summary.html" },
-
-- { "<TITLE>" + LS + "p1" + LS + "</TITLE>",
-+ { "<title>p1</title>",
- TMPDIR_STRING1 + "p1" + FS + "package-frame.html" },
-
-- { "<TITLE>" + LS + "p1 Class Hierarchy" + LS + "</TITLE>",
-+ { "<title>p1 Class Hierarchy</title>",
- TMPDIR_STRING1 + "p1" + FS + "package-tree.html" },
-
-- { "<TITLE>" + LS + "Uses of Package p1" + LS + "</TITLE>",
-+ { "<title>Uses of Package p1</title>",
- TMPDIR_STRING1 + "p1" + FS + "package-use.html" },
-
-- { "<TITLE>" + LS + "C1" + LS + "</TITLE>",
-+ { "<title>C1</title>",
- TMPDIR_STRING1 + "p1" + FS + "C1.html" },
-
-- { "<TITLE>" + LS + "All Classes" + LS + "</TITLE>",
-+ { "<title>All Classes</title>",
- TMPDIR_STRING1 + "allclasses-frame.html" },
-
-- { "<TITLE>" + LS + "All Classes" + LS + "</TITLE>",
-+ { "<title>All Classes</title>",
- TMPDIR_STRING1 + "allclasses-noframe.html" },
-
-- { "<TITLE>" + LS + "Constant Field Values" + LS + "</TITLE>",
-+ { "<title>Constant Field Values</title>",
- TMPDIR_STRING1 + "constant-values.html" },
-
-- { "<TITLE>" + LS + "Deprecated List" + LS + "</TITLE>",
-+ { "<title>Deprecated List</title>",
- TMPDIR_STRING1 + "deprecated-list.html" },
-
-- { "<TITLE>" + LS + "Serialized Form" + LS + "</TITLE>",
-+ { "<title>Serialized Form</title>",
- TMPDIR_STRING1 + "serialized-form.html" },
-
-- { "<TITLE>" + LS + "API Help" + LS + "</TITLE>",
-+ { "<title>API Help</title>",
- TMPDIR_STRING1 + "help-doc.html" },
-
-- { "<TITLE>" + LS + "Index" + LS + "</TITLE>",
-+ { "<title>Index</title>",
- TMPDIR_STRING1 + "index-all.html" },
-
-- { "<TITLE>" + LS + "Uses of Class p1.C1" + LS + "</TITLE>",
-+ { "<title>Uses of Class p1.C1</title>",
- TMPDIR_STRING1 + "p1" + FS + "class-use" + FS + "C1.html" },
- };
-
-@@ -147,7 +147,7 @@
- * Assign value for [ stringToFind, filename ] for split index page
- */
- private static final String[][] testSplitIndexArray = {
-- { "<TITLE>" + LS + "C-Index" + LS + "</TITLE>",
-+ { "<title>C-Index</title>",
- TMPDIR_STRING2 + "index-files" + FS + "index-1.html" },
- };
-
-diff --git a/test/com/sun/javadoc/constantValues/TestConstantValuesDriver.java b/test/com/sun/javadoc/constantValues/TestConstantValuesDriver.java
---- langtools/test/com/sun/javadoc/constantValues/TestConstantValuesDriver.java
-+++ langtools/test/com/sun/javadoc/constantValues/TestConstantValuesDriver.java
-@@ -51,7 +51,7 @@
- tests[i][1] = "TEST"+(i+1)+"PASSES";
- }
- tests[tests.length-1][0] = BUG_ID + FS + "constant-values.html";
-- tests[tests.length-1][1] = "<CODE>\"&lt;Hello World&gt;\"</CODE>";
-+ tests[tests.length-1][1] = "<code>\"&lt;Hello World&gt;\"</code>";
- TestConstantValuesDriver tester = new TestConstantValuesDriver();
- run(tester, ARGS, tests, NO_TEST);
- tester.printSummary();
-diff --git a/test/com/sun/javadoc/testClassCrossReferences/TestClassCrossReferences.java b/test/com/sun/javadoc/testClassCrossReferences/TestClassCrossReferences.java
---- langtools/test/com/sun/javadoc/testClassCrossReferences/TestClassCrossReferences.java
-+++ langtools/test/com/sun/javadoc/testClassCrossReferences/TestClassCrossReferences.java
-@@ -37,18 +37,20 @@
- private static final String BUG_ID = "4652655-4857717";
- private static final String[][] TEST = {
- {BUG_ID + FS + "C.html",
-- "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/math/package-summary.html?is-external=true\"><CODE>Link to math package</CODE></A>"},
-+ "<a href=\"http://java.sun.com/j2se/1.4/docs/api/java/math/package-summary.html?is-external=true\"><code>Link to math package</code></a>"},
- {BUG_ID + FS + "C.html",
-- "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/javax/swing/text/AbstractDocument.AttributeContext.html?is-external=true\" " +
-- "title=\"class or interface in javax.swing.text\"><CODE>Link to AttributeContext innerclass</CODE></A>"},
-+ "<a href=\"http://java.sun.com/j2se/1.4/docs/api/javax/swing/text/AbstractDocument.AttributeContext.html?is-external=true\" " +
-+ "title=\"class or interface in javax.swing.text\"><code>Link to AttributeContext innerclass</code></a>"},
- {BUG_ID + FS + "C.html",
-- "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/math/BigDecimal.html?is-external=true\" " +
-- "title=\"class or interface in java.math\"><CODE>Link to external class BigDecimal</CODE></A>"},
-+ "<a href=\"http://java.sun.com/j2se/1.4/docs/api/java/math/BigDecimal.html?is-external=true\" " +
-+ "title=\"class or interface in java.math\"><code>Link to external class BigDecimal</code></a>"},
- {BUG_ID + FS + "C.html",
-- "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/math/BigInteger.html?is-external=true#gcd(java.math.BigInteger)\" " +
-- "title=\"class or interface in java.math\"><CODE>Link to external member gcd</CODE></A>"},
-+ "<a href=\"http://java.sun.com/j2se/1.4/docs/api/java/math/BigInteger.html?is-external=true#gcd(java.math.BigInteger)\" " +
-+ "title=\"class or interface in java.math\"><code>Link to external member gcd</code></a>"},
- {BUG_ID + FS + "C.html",
-- "<STRONG>Overrides:</STRONG></DT><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE>"}
-+ "<dl>" + NL + "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>" + NL +
-+ "</dl>"}
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
- private static final String[] ARGS =
-diff --git a/test/com/sun/javadoc/testClassTree/TestClassTree.java b/test/com/sun/javadoc/testClassTree/TestClassTree.java
---- langtools/test/com/sun/javadoc/testClassTree/TestClassTree.java
-+++ langtools/test/com/sun/javadoc/testClassTree/TestClassTree.java
-@@ -48,32 +48,29 @@
- //Input for string search tests.
- private static final String[][] TEST = {
- {BUG_ID + FS + "pkg" + FS + "package-tree.html",
-- "<LI TYPE=\"circle\">pkg.<A HREF=\"../pkg/ParentClass.html\" " +
-- "title=\"class in pkg\"><STRONG>ParentClass</STRONG></A><UL>"},
-+ "<ul>" + NL + "<li type=\"circle\">pkg.<a href=\"../pkg/ParentClass.html\" " +
-+ "title=\"class in pkg\"><span class=\"strong\">ParentClass</span></a>"},
-
- {BUG_ID + FS + "pkg" + FS + "package-tree.html",
-- "Annotation Type Hierarchy" + NL + "</H2>" + NL + "<UL>" + NL +
-- "<LI TYPE=\"circle\">pkg.<A HREF=\"../pkg/AnnotationType.html\" " +
-- "title=\"annotation in pkg\"><STRONG>AnnotationType</STRONG></A> " +
-- "(implements java.lang.annotation.Annotation)" + NL + "</UL>"},
-+ "<h2 title=\"Annotation Type Hierarchy\">Annotation Type Hierarchy</h2>" + NL +
-+ "<ul>" + NL + "<li type=\"circle\">pkg.<a href=\"../pkg/AnnotationType.html\" " +
-+ "title=\"annotation in pkg\"><span class=\"strong\">AnnotationType</span></a> " +
-+ "(implements java.lang.annotation.Annotation)</li>" + NL + "</ul>"},
-
- {BUG_ID + FS + "pkg" + FS + "package-tree.html",
-- "<H2>" + NL +
-- "Enum Hierarchy" + NL +
-- "</H2>" + NL +
-- "<UL>" + NL +
-- "<LI TYPE=\"circle\">java.lang.Object<UL>" + NL +
-- "<LI TYPE=\"circle\">java.lang.Enum&lt;E&gt; (implements java.lang.Comparable&lt;T&gt;, java.io.Serializable)" + NL +
-- "<UL>" + NL +
-- "<LI TYPE=\"circle\">pkg.<A HREF=\"../pkg/Coin.html\" title=\"enum in pkg\"><STRONG>Coin</STRONG></A></UL>" + NL +
-- "</UL>" + NL +
-- "</UL>"
-+ "<h2 title=\"Enum Hierarchy\">Enum Hierarchy</h2>" + NL + "<ul>" + NL +
-+ "<li type=\"circle\">java.lang.Object" + NL + "<ul>" + NL +
-+ "<li type=\"circle\">java.lang.Enum&lt;E&gt; (implements java.lang." +
-+ "Comparable&lt;T&gt;, java.io.Serializable)" + NL + "<ul>" + NL +
-+ "<li type=\"circle\">pkg.<a href=\"../pkg/Coin.html\" " +
-+ "title=\"enum in pkg\"><span class=\"strong\">Coin</span></a></li>" + NL +
-+ "</ul>" + NL + "</li>" + NL + "</ul>" + NL + "</li>" + NL + "</ul>"
- },
- };
- private static final String[][] NEGATED_TEST = {
- {BUG_ID + FS + "pkg" + FS + "package-tree.html",
-- "<LI TYPE=\"circle\">class pkg.<A HREF=\"../pkg/ParentClass.html\" " +
-- "title=\"class in pkg\"><STRONG>ParentClass</STRONG></A><UL>"}
-+ "<li type=\"circle\">class pkg.<a href=\"../pkg/ParentClass.html\" " +
-+ "title=\"class in pkg\"><span class=\"strong\">ParentClass</span></a></li>"}
- };
-
- /**
-diff --git a/test/com/sun/javadoc/testConstructorIndent/TestConstructorIndent.java b/test/com/sun/javadoc/testConstructorIndent/TestConstructorIndent.java
---- langtools/test/com/sun/javadoc/testConstructorIndent/TestConstructorIndent.java
-+++ langtools/test/com/sun/javadoc/testConstructorIndent/TestConstructorIndent.java
-@@ -45,10 +45,10 @@
-
- //Input for string search tests.
- private static final String[][] TEST = {
-- {BUG_ID + FS + "C.html", "<DL>" + NL + "<DD>This is just a simple constructor." + NL +
-- "<P>" + NL + "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Parameters:</STRONG>" +
-- "</DT><DD><CODE>i</CODE> - a param.</DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"
-+ {BUG_ID + FS + "C.html", "<div class=\"block\">" +
-+ "This is just a simple constructor.</div>" + NL +
-+ "<dl><dt><span class=\"strong\">Parameters:</span></dt><dd>" +
-+ "<code>i</code> - a param.</dd></dl>"
- }
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
-diff --git a/test/com/sun/javadoc/testDeprecatedDocs/TestDeprecatedDocs.java b/test/com/sun/javadoc/testDeprecatedDocs/TestDeprecatedDocs.java
---- langtools/test/com/sun/javadoc/testDeprecatedDocs/TestDeprecatedDocs.java
-+++ langtools/test/com/sun/javadoc/testDeprecatedDocs/TestDeprecatedDocs.java
-@@ -76,24 +76,21 @@
- {TARGET_FILE, "pkg.DeprecatedClassByAnnotation.method()"},
- {TARGET_FILE, "pkg.DeprecatedClassByAnnotation.field"},
-
-- {TARGET_FILE2, "<STRONG>Deprecated.</STRONG>" + NL +
-- "<P>" + NL +
-- "<PRE><FONT SIZE=\"-1\">@Deprecated" + NL +
-- "</FONT>public class <STRONG>DeprecatedClassByAnnotation</STRONG>"},
-+ {TARGET_FILE2, "<pre>@Deprecated" + NL +
-+ "public class <strong>DeprecatedClassByAnnotation</strong>" + NL +
-+ "extends java.lang.Object</pre>"},
-
-- {TARGET_FILE2, "public int <STRONG>field</STRONG></PRE>" + NL +
-- "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD></DL>"},
-+ {TARGET_FILE2, "<pre>@Deprecated" + NL +
-+ "public&nbsp;int field</pre>" + NL +
-+ "<div class=\"block\"><span class=\"strong\">Deprecated.</span>&nbsp;</div>"},
-
-- {TARGET_FILE2, "<FONT SIZE=\"-1\">@Deprecated" + NL +
-- "</FONT>public <STRONG>DeprecatedClassByAnnotation</STRONG>()</PRE>" + NL +
-- "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>"},
-+ {TARGET_FILE2, "<pre>@Deprecated" + NL +
-+ "public&nbsp;DeprecatedClassByAnnotation()</pre>" + NL +
-+ "<div class=\"block\"><span class=\"strong\">Deprecated.</span>&nbsp;</div>"},
-
-- {TARGET_FILE2, "<FONT SIZE=\"-1\">@Deprecated" + NL +
-- "</FONT>public void <STRONG>method</STRONG>()</PRE>" + NL +
-- "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>"},
-+ {TARGET_FILE2, "<pre>@Deprecated" + NL +
-+ "public&nbsp;void&nbsp;method()</pre>" + NL +
-+ "<div class=\"block\"><span class=\"strong\">Deprecated.</span>&nbsp;</div>"},
- };
-
- private static final String[][] NEGATED_TEST = NO_TEST;
-diff --git a/test/com/sun/javadoc/testDocRootInlineTag/TestDocRootInlineTag.java b/test/com/sun/javadoc/testDocRootInlineTag/TestDocRootInlineTag.java
---- langtools/test/com/sun/javadoc/testDocRootInlineTag/TestDocRootInlineTag.java
-+++ langtools/test/com/sun/javadoc/testDocRootInlineTag/TestDocRootInlineTag.java
-@@ -39,13 +39,13 @@
- private static final String BUG_ID = "4369014-4851991";
- private static final String[][] TEST = {
- {BUG_ID + FS + "TestDocRootTag.html",
-- "<A HREF=\"http://www.java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" " +
-- "title=\"class or interface in java.io\"><CODE>File</CODE></A>"},
-+ "<a href=\"http://www.java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" " +
-+ "title=\"class or interface in java.io\"><code>File</code></a>"},
- {BUG_ID + FS + "TestDocRootTag.html",
- "<a href=\"./glossary.html\">glossary</a>"},
- {BUG_ID + FS + "TestDocRootTag.html",
-- "<A HREF=\"http://www.java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" " +
-- "title=\"class or interface in java.io\"><CODE>Second File Link</CODE></A>"},
-+ "<a href=\"http://www.java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" " +
-+ "title=\"class or interface in java.io\"><code>Second File Link</code></a>"},
- {BUG_ID + FS + "TestDocRootTag.html", "The value of @docRoot is \"./\""},
- {BUG_ID + FS + "index-all.html", "My package page is " +
- "<a href=\"./pkg/package-summary.html\">here</a>"}
-diff --git a/test/com/sun/javadoc/testExternalOverridenMethod/TestExternalOverridenMethod.java b/test/com/sun/javadoc/testExternalOverridenMethod/TestExternalOverridenMethod.java
---- langtools/test/com/sun/javadoc/testExternalOverridenMethod/TestExternalOverridenMethod.java
-+++ langtools/test/com/sun/javadoc/testExternalOverridenMethod/TestExternalOverridenMethod.java
-@@ -39,17 +39,17 @@
- private static final String BUG_ID = "4857717";
- private static final String[][] TEST = {
- {BUG_ID + FS + "pkg" + FS + "XReader.html",
-- "<STRONG>Overrides:</STRONG></DT><DD><CODE><A HREF=\"" +
-- "http://java.sun.com/j2se/1.4.1/docs/api/java/io/FilterReader.html?is-external=true#read()\"" +
-- " title=\"class or interface in java.io\">read</A></CODE> in class " +
-- "<CODE><A HREF=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/FilterReader.html?is-external=true\"" +
-- " title=\"class or interface in java.io\">FilterReader</A>"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/FilterReader.html?is-external=true#read()\" " +
-+ "title=\"class or interface in java.io\">read</a></code>&nbsp;in class&nbsp;<code>" +
-+ "<a href=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/FilterReader.html?is-external=true\" " +
-+ "title=\"class or interface in java.io\">FilterReader</a></code></dd>"},
- {BUG_ID + FS + "pkg" + FS + "XReader.html",
-- "<STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"" +
-- "http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataInput.html?is-external=true#readInt()\"" +
-- " title=\"class or interface in java.io\">readInt</A></CODE> in interface " +
-- "<CODE><A HREF=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataInput.html?is-external=true\"" +
-- " title=\"class or interface in java.io\">DataInput</A>"}};
-+ "<dt><strong>Specified by:</strong></dt>" + NL +
-+ "<dd><code><a href=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataInput.html?is-external=true#readInt()\" " +
-+ "title=\"class or interface in java.io\">readInt</a></code>&nbsp;in interface&nbsp;<code>" +
-+ "<a href=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataInput.html?is-external=true\" " +
-+ "title=\"class or interface in java.io\">DataInput</a></code></dd>"}};
-
-
-
-diff --git a/test/com/sun/javadoc/testHeadings/TestHeadings.java b/test/com/sun/javadoc/testHeadings/TestHeadings.java
---- langtools/test/com/sun/javadoc/testHeadings/TestHeadings.java
-+++ langtools/test/com/sun/javadoc/testHeadings/TestHeadings.java
-@@ -47,80 +47,65 @@
- private static final String[][] TEST = {
- //Package summary
- {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Class</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">" +
-+ "Class</th>" + NL + "<th class=\"colLast\" scope=\"col\"" +
-+ ">Description</th>"
- },
-
- // Class documentation
- {BUG_ID + FS + "pkg1" + FS + "C1.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Field and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Field and Description</th>"
- },
- {BUG_ID + FS + "pkg1" + FS + "C1.html",
-- "<TH ALIGN=\"left\"><STRONG>Methods inherited from class " + "java.lang.Object</STRONG></TH>"
-+ "<h3>Methods inherited from class&nbsp;java.lang.Object</h3>"
- },
-
- // Class use documentation
- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Package</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Package</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Description</th>"
- },
- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-- "<TH ALIGN=\"left\" COLSPAN=\"2\"><FONT SIZE=\"+2\">" + NL +
-- "Uses of <A HREF=\"../../pkg1/C1.html\" " + "title=\"class in pkg1\">C1</A> in " + "<A HREF=\"../../pkg2/package-summary.html\">pkg2</A></FONT></TH>"
-- },
-- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Field and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Field and Description</th>"
- },
-
- // Deprecated
- {BUG_ID + FS + "deprecated-list.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Method and Description</TH>"
-+ "<th class=\"colOne\" scope=\"col\">Method and Description</th>"
- },
-
- // Constant values
- {BUG_ID + FS + "constant-values.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Constant Field</TH>" + NL +
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>Value</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">" +
-+ "Modifier and Type</th>" + NL + "<th scope=\"col\">Constant Field</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Value</th>"
- },
-
- // Serialized Form
- {BUG_ID + FS + "serialized-form.html",
-- "<TH ALIGN=\"center\"><FONT SIZE=\"+2\">" + NL +
-- "<STRONG>Package</STRONG> <STRONG>pkg1</STRONG></FONT></TH>"
-+ "<h2 title=\"Package\">Package&nbsp;pkg1</h2>"
- },
- {BUG_ID + FS + "serialized-form.html",
-- "<TH ALIGN=\"left\" COLSPAN=\"2\"><FONT SIZE=\"+2\">" + NL +
-- "<STRONG>Class <A HREF=\"pkg1/C1.html\" " + "title=\"class in pkg1\">pkg1.C1</A> extends java.lang.Object " + "implements Serializable</STRONG></FONT></TH>"
-+ "<h3>Class <a href=\"pkg1/C1.html\" title=\"class in pkg1\">" +
-+ "pkg1.C1</a> extends java.lang.Object implements Serializable</h3>"
- },
- {BUG_ID + FS + "serialized-form.html",
-- "<TH ALIGN=\"left\" COLSPAN=\"1\"><FONT SIZE=\"+2\">" + NL +
-- "<STRONG>Serialized Fields</STRONG></FONT></TH>"
-+ "<h3>Serialized Fields</h3>"
- },
-
- // Overview Frame
- {BUG_ID + FS + "overview-frame.html",
-- "<TH ALIGN=\"left\" NOWRAP><FONT size=\"+1\" " + "CLASS=\"FrameTitleFont\">" + NL + "<STRONG>Test Files</STRONG></FONT></TH>"
-+ "<h1 title=\"Test Files\" class=\"bar\">Test Files</h1>"
- },
- {BUG_ID + FS + "overview-frame.html",
-- "<TITLE>" + NL +
-- "Overview List" + NL +
-- "</TITLE>"
-+ "<title>Overview List</title>"
- },
-
- // Overview Summary
- {BUG_ID + FS + "overview-summary.html",
-- "<TITLE>" + NL +
-- "Overview" + NL +
-- "</TITLE>"
-+ "<title>Overview</title>"
- },
-
- };
-diff --git a/test/com/sun/javadoc/testHelpOption/TestHelpOption.java b/test/com/sun/javadoc/testHelpOption/TestHelpOption.java
---- langtools/test/com/sun/javadoc/testHelpOption/TestHelpOption.java
-+++ langtools/test/com/sun/javadoc/testHelpOption/TestHelpOption.java
-@@ -91,8 +91,7 @@
-
- private static final String[][] TEST2 = {
- {BUG_ID + FS + "TestHelpOption.html",
-- "<A HREF=\"help-doc.html\"><FONT CLASS=\"NavBarFont1\">" +
-- "<STRONG>Help</STRONG></FONT></A>"
-+ "<li><a href=\"help-doc.html\">Help</a></li>"
- },
- };
- private static final String[][] NEGATED_TEST2 = NO_TEST;
-diff --git a/test/com/sun/javadoc/testHref/TestHref.java b/test/com/sun/javadoc/testHref/TestHref.java
---- langtools/test/com/sun/javadoc/testHref/TestHref.java
-+++ langtools/test/com/sun/javadoc/testHref/TestHref.java
-@@ -47,37 +47,41 @@
- private static final String[][] TEST = {
- //External link.
- {BUG_ID + FS + "pkg" + FS + "C1.html",
-- "HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true#wait(long, int)\""
-+ "href=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true#wait(long, int)\""
- },
- //Member summary table link.
- {BUG_ID + FS + "pkg" + FS + "C1.html",
-- "HREF=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\""
-+ "href=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\""
- },
- //Anchor test.
- {BUG_ID + FS + "pkg" + FS + "C1.html",
-- "<A NAME=\"method(int, int, java.util.ArrayList)\"><!-- --></A>"
-+ "<a name=\"method(int, int, java.util.ArrayList)\">" + NL +
-+ "<!-- -->" + NL +
-+ "</a>"
- },
- //Backward compatibility anchor test.
- {BUG_ID + FS + "pkg" + FS + "C1.html",
-- "<A NAME=\"method(int, int, java.util.ArrayList)\"><!-- --></A>"
-+ "<a name=\"method(int, int, java.util.ArrayList)\">" + NL +
-+ "<!-- -->" + NL +
-+ "</a>"
- },
- //{@link} test.
- {BUG_ID + FS + "pkg" + FS + "C2.html",
-- "Link: <A HREF=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\">"
-+ "Link: <a href=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\">"
- },
- //@see test.
- {BUG_ID + FS + "pkg" + FS + "C2.html",
-- "See Also:</STRONG></DT><DD><A HREF=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\">"
-+ "See Also:</span></dt><dd><a href=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\">"
- },
-
- //Header does not link to the page itself.
- {BUG_ID + FS + "pkg" + FS + "C4.html",
-- "Class C4&lt;E extends C4&lt;E&gt;&gt;</H2>"
-+ "Class C4&lt;E extends C4&lt;E&gt;&gt;</h2>"
- },
-
- //Signature does not link to the page itself.
- {BUG_ID + FS + "pkg" + FS + "C4.html",
-- "public abstract class <STRONG>C4&lt;E extends C4&lt;E&gt;&gt;</STRONG>"
-+ "public abstract class <strong>C4&lt;E extends C4&lt;E&gt;&gt;</strong>"
- },
- };
- private static final String[][] NEGATED_TEST =
-diff --git a/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java b/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java
---- langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java
-+++ langtools/test/com/sun/javadoc/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java
-@@ -43,149 +43,77 @@
- // Optional Element should print properly nested definition list tags
- // for default value.
- private static final String[][] TEST_ALL = {
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<PRE>public class " +
-- "<STRONG>C1</STRONG>" + NL + "extends " +
-- "java.lang.Object" + NL + "implements " +
-- "java.io.Serializable</PRE>"},
-- {BUG_ID + FS + "pkg1" + FS + "C4.html", "<DL>" + NL + "<DD><DL>" + NL +
-- "<DT><STRONG>Default:</STRONG></DT><DD>true</DD>" + NL +
-- "</DL>" + NL + "</DD>" + NL + "</DL>"}};
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<pre>public class <strong>C1</strong>" + NL +
-+ "extends java.lang.Object" + NL + "implements java.io.Serializable</pre>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C4.html", "<dl>" + NL +
-+ "<dt>Default:</dt>" + NL + "<dd>true</dd>" + NL +
-+ "</dl>"}};
-
- // Test for normal run of javadoc in which various ClassDocs and
- // serialized form should have properly nested definition list tags
- // enclosing comments, tags and deprecated information.
- private static final String[][] TEST_CMNT_DEPR = {
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-- "<DT><STRONG>Since:</STRONG></DT>" + NL +
-- " <DD>JDK1.0</DD>" + NL + "<DT><STRONG>See Also:</STRONG></DT><DD>" +
-- "<A HREF=\"../pkg1/C2.html\" title=\"class in pkg1\">" +
-- "<CODE>C2</CODE></A>, " + NL +
-- "<A HREF=\"../serialized-form.html#pkg1.C1\">" +
-- "Serialized Form</A></DD></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-- " 1.5, replaced by" + NL +
-- " <A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I></DD>" +
-- "<DD>This field indicates whether the C1 is undecorated." + NL +
-- "<P>" + NL + "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>" +
-- "Since:</STRONG></DT>" + NL + " <DD>1.4</DD>" + NL + "<DT>" +
-- "<STRONG>See Also:</STRONG></DT><DD>" +
-- "<A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\"><CODE>" +
-- "setUndecorated(boolean)</CODE></A></DD></DL>" + NL +"</DD>" + NL +
-- "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-- "<DD>Constructor." + NL + "<P>" + NL + "</DD>" + NL +
-- "<DD><DL>" + NL + "<DT><STRONG>Parameters:</STRONG></DT><DD>" +
-- "<CODE>title</CODE> - the title</DD><DD><CODE>test</CODE>" +
-- " - boolean value</DD>" + NL + "<DT><STRONG>Throws:</STRONG></DT>" + NL +
-- "<DD><CODE>java.lang.IllegalArgumentException</CODE>" +
-- " - if the <code>owner</code>'s" + NL + " <code>GraphicsConfiguration" +
-- "</code> is not from a screen device</DD>" + NL +"<DD><CODE>" +
-- "HeadlessException</CODE></DD></DL>" + NL + "</DD>" + NL +
-- "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-- "<DD>Method comments." + NL + "<P>" + NL +
-- "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Parameters:" +
-- "</STRONG></DT><DD><CODE>undecorated</CODE> - <code>true</code>" +
-- " if no decorations are" + NL + " to be enabled;" + NL +
-- " <code>false</code> if decorations are to be enabled." +
-- "</DD><DT><STRONG>Since:</STRONG></DT>" + NL +
-- " <DD>1.4</DD>" + NL + "<DT><STRONG>See Also:</STRONG></DT>" +
-- "<DD><A HREF=\"../pkg1/C1.html#readObject()\"><CODE>" +
-- "readObject()</CODE></A></DD></DL>" + NL + "</DD>" + NL +
-- "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL + "<DD><DL>" + NL +
-- "<DT><STRONG>Throws:</STRONG></DT>" + NL + "<DD><CODE>" +
-- "java.io.IOException</CODE></DD><DT><STRONG>See Also:" +
-- "</STRONG></DT><DD>" +
-- "<A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<DL>" + NL +
-- "<DD>No modal exclusion." + NL + "<P>" + NL +"</DD>" + NL +
-- "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL>" + NL + "<DD>Constructor." + NL +
-- "<P>" + NL +"</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL>" + NL + "<DD><STRONG>" +
-- "Deprecated.</STRONG>&nbsp;<I>As of JDK version 1.5, replaced " +
-- "by" + NL + " <A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-- "</DD><DD>Set visible." + NL + "<P>" + NL + "</DD>" +NL +
-- "<DD><DL>" + NL + "<DT><STRONG>Parameters:</STRONG></DT><DD>" +
-- "<CODE>set</CODE> - boolean</DD><DT><STRONG>Since:</STRONG></DT>" + NL +
-- " <DD>1.4</DD></DL>" + NL + "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C3.html", "<DL>" + NL + "<DD>Comment." + NL +
-- "<P>" + NL + "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><DL>" + NL +
-- "<DT><STRONG>Throws:</STRONG></DT>" + NL + "<DD><CODE>" +
-- "java.io.IOException</CODE></DD><DT><STRONG>See Also:</STRONG>" +
-- "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version " +
-- "1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I></DD>" +
-- "<DD>This field indicates whether the C1 is undecorated." + NL +
-- "<P>" + NL + "</DD>" + NL + "<DD>&nbsp;</DD>" + NL +
-- "<DD><DL>" + NL + "<DT><STRONG>Since:</STRONG></DT>" + NL +
-- " <DD>1.4</DD>" + NL + "<DT><STRONG>See Also:</STRONG>" +
-- "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-- " 1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-- "</DD><DD>Reads the object stream." + NL + "<P>" + NL +
-- "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Throws:" +
-- "</STRONG></DT>" + NL + "<DD><CODE><code>" +
-- "IOException</code></CODE></DD>" + NL +
-- "<DD><CODE>java.io.IOException</CODE></DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD><DD>" +
-- "The name for this class." + NL + "<P>" + NL + "</DD>" + NL +
-- "<DD>&nbsp;</DD>" + NL + "</DL>"}};
--
-- // Test with -nocomment option. The ClassDocs and serialized form should
-- // have properly nested definition list tags enclosing deprecated
-- // information and should not display definition lists for comments
-- // and tags.
-- private static final String[][] TEST_NOCMNT = {
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL + "<DD><STRONG>" +
-- "Deprecated.</STRONG>&nbsp;<I>As of JDK version 1.5, replaced by" + NL +
-- " <A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\"><CODE>" +
-- "setUndecorated(boolean)</CODE></A>.</I></DD></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-- " 1.5, replaced by" + NL +
-- " <A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-- "</DD></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C5.html", "<PRE>" + NL +
-- "protected <STRONG>C5</STRONG>()</PRE>" + NL + "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C5.html", "<PRE>" + NL +
-- "public void <STRONG>printInfo</STRONG>()</PRE>" + NL + "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD></DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "boolean <STRONG>" +
-- "undecorated</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-- "Deprecated.</STRONG>&nbsp;<I>As of JDK version 1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\"><CODE>" +
-- "setUndecorated(boolean)</CODE></A>.</I></DD></DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><STRONG>" +
-- "Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-- " 1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-- "</DD></DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "int <STRONG>" +
-- "publicKey</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-- "Deprecated.</STRONG>&nbsp;</DD></DL>"}};
-+ {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl>" +
-+ "<dt><span class=\"strong\">Since:</span></dt>" + NL +
-+ " <dd>JDK1.0</dd></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
-+ " <dd>JDK1.0</dd>" + NL + "<dt><span class=\"strong\">See Also:</span></dt>" +
-+ "<dd><a href=\"../pkg1/C2.html\" title=\"class in pkg1\"><code>" +
-+ "C2</code></a>, " + NL + "<a href=\"../serialized-form.html#pkg1.C1\">" +
-+ "Serialized Form</a></dd></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
-+ " <dd>1.4</dd>" + NL +
-+ "<dt><span class=\"strong\">See Also:</span></dt><dd>" +
-+ "<a href=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>setUndecorated(boolean)</code></a></dd></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Parameters:</span></dt><dd><code>title" +
-+ "</code> - the title</dd><dd><code>test</code> - boolean value" +
-+ "</dd>" + NL + "<dt><span class=\"strong\">Throws:</span></dt>" + NL +
-+ "<dd><code>java.lang.IllegalArgumentException</code> - if the " +
-+ "<code>owner</code>'s" + NL +
-+ " <code>GraphicsConfiguration</code> is not from a screen " +
-+ "device</dd>" + NL + "<dd><code>HeadlessException</code></dd></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Parameters:</span></dt><dd><code>undecorated" +
-+ "</code> - <code>true</code> if no decorations are" + NL +
-+ " to be enabled;" + NL + " <code>false</code> " +
-+ "if decorations are to be enabled.</dd><dt><span class=\"strong\">Since:" +
-+ "</span></dt>" + NL + " <dd>1.4</dd>" + NL +
-+ "<dt><span class=\"strong\">See Also:</span></dt><dd>" +
-+ "<a href=\"../pkg1/C1.html#readObject()\"><code>readObject()" +
-+ "</code></a></dd></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Throws:</span></dt>" + NL +
-+ "<dd><code>java.io.IOException</code></dd><dt><span class=\"strong\">See Also:" +
-+ "</span></dt><dd><a href=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>setUndecorated(boolean)</code></a></dd></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C2.html", "<dl><dt><span class=\"strong\">Parameters:" +
-+ "</span></dt><dd><code>set</code> - boolean</dd><dt><span class=\"strong\">" +
-+ "Since:</span></dt>" + NL + " <dd>1.4</dd></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<dl><dt><span class=\"strong\">Throws:</span>" +
-+ "</dt>" + NL + "<dd><code>" +
-+ "java.io.IOException</code></dd><dt><span class=\"strong\">See Also:</span>" +
-+ "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
-+ "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
-+ " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
-+ "<div class=\"block\">This field indicates whether the C1 is " +
-+ "undecorated.</div>" + NL + "&nbsp;" + NL + "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
-+ " <dd>1.4</dd>" + NL + "<dt><span class=\"strong\">See Also:</span>" +
-+ "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
-+ "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
-+ " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
-+ "<div class=\"block\">Reads the object stream.</div>" + NL +
-+ "<dl><dt><span class=\"strong\">Throws:" +
-+ "</span></dt>" + NL + "<dd><code><code>" +
-+ "IOException</code></code></dd>" + NL +
-+ "<dd><code>java.io.IOException</code></dd></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
-+ "&nbsp;</div>" + NL +
-+ "<div class=\"block\">The name for this class.</div>"}};
-
- // Test with -nodeprecated option. The ClassDocs should have properly nested
- // definition list tags enclosing comments and tags. The ClassDocs should not
-@@ -193,133 +121,104 @@
- // should display properly nested definition list tags for comments, tags
- // and deprecated information.
- private static final String[][] TEST_NODEPR = {
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-- "<DT><STRONG>Since:</STRONG></DT>" + NL +
-- " <DD>JDK1.0</DD>" + NL + "<DT><STRONG>See Also:</STRONG></DT><DD>" +
-- "<A HREF=\"../pkg1/C2.html\" title=\"class in pkg1\">" +
-- "<CODE>C2</CODE></A>, " + NL +
-- "<A HREF=\"../serialized-form.html#pkg1.C1\">" +
-- "Serialized Form</A></DD></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-- "<DD>Constructor." + NL + "<P>" + NL + "</DD>" + NL +
-- "<DD><DL>" + NL + "<DT><STRONG>Parameters:</STRONG></DT><DD>" +
-- "<CODE>title</CODE> - the title</DD><DD><CODE>test</CODE>" +
-- " - boolean value</DD>" + NL + "<DT><STRONG>Throws:</STRONG></DT>" + NL +
-- "<DD><CODE>java.lang.IllegalArgumentException</CODE>" +
-- " - if the <code>owner</code>'s" + NL + " <code>GraphicsConfiguration" +
-- "</code> is not from a screen device</DD>" + NL +"<DD><CODE>" +
-- "HeadlessException</CODE></DD></DL>" + NL + "</DD>" + NL +
-- "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL +
-- "<DD>Method comments." + NL + "<P>" + NL +
-- "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Parameters:" +
-- "</STRONG></DT><DD><CODE>undecorated</CODE> - <code>true</code>" +
-+ {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl>" +
-+ "<dt><span class=\"strong\">Since:</span></dt>" + NL +
-+ " <dd>JDK1.0</dd></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Since:</span>" +
-+ "</dt>" + NL + " <dd>JDK1.0</dd>" + NL + "<dt><span class=\"strong\">See Also:" +
-+ "</span></dt><dd><a href=\"../pkg1/C2.html\" title=\"class in pkg1\">" +
-+ "<code>C2</code></a>, " + NL + "<a href=\"../serialized-form.html#pkg1.C1\">" +
-+ "Serialized Form</a></dd></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Parameters:" +
-+ "</span></dt><dd><code>title</code> - the title</dd><dd><code>" +
-+ "test</code> - boolean value</dd>" + NL + "<dt><span class=\"strong\">Throws:" +
-+ "</span></dt>" + NL + "<dd><code>java.lang.IllegalArgumentException" +
-+ "</code> - if the <code>owner</code>'s" + NL + " <code>GraphicsConfiguration" +
-+ "</code> is not from a screen device</dd>" + NL + "<dd><code>" +
-+ "HeadlessException</code></dd></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Parameters:" +
-+ "</span></dt><dd><code>undecorated</code> - <code>true</code>" +
- " if no decorations are" + NL + " to be enabled;" + NL +
- " <code>false</code> if decorations are to be enabled." +
-- "</DD><DT><STRONG>Since:</STRONG></DT>" + NL +
-- " <DD>1.4</DD>" + NL + "<DT><STRONG>See Also:</STRONG></DT>" +
-- "<DD><A HREF=\"../pkg1/C1.html#readObject()\"><CODE>" +
-- "readObject()</CODE></A></DD></DL>" + NL + "</DD>" + NL +
-- "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL + "<DD><DL>" + NL +
-- "<DT><STRONG>Throws:</STRONG></DT>" + NL + "<DD><CODE>" +
-- "java.io.IOException</CODE></DD><DT><STRONG>See Also:" +
-- "</STRONG></DT><DD>" +
-- "<A HREF=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<DL>" + NL +
-- "<DD>No modal exclusion." + NL + "<P>" + NL +"</DD>" + NL +
-- "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL>" + NL + "<DD>Constructor." + NL +
-- "<P>" + NL +"</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C3.html", "<DL>" + NL + "<DD>Comment." + NL +
-- "<P>" + NL + "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><DL>" + NL +
-- "<DT><STRONG>Throws:</STRONG></DT>" + NL + "<DD><CODE>" +
-- "java.io.IOException</CODE></DD><DT><STRONG>See Also:</STRONG>" +
-- "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version " +
-- "1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I></DD>" +
-- "<DD>This field indicates whether the C1 is undecorated." + NL +
-- "<P>" + NL + "</DD>" + NL + "<DD>&nbsp;</DD>" + NL +
-- "<DD><DL>" + NL + "<DT><STRONG>Since:</STRONG></DT>" + NL +
-- " <DD>1.4</DD>" + NL + "<DT><STRONG>See Also:</STRONG>" +
-- "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-- " 1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-- "</DD><DD>Reads the object stream." + NL + "<P>" + NL +
-- "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Throws:" +
-- "</STRONG></DT>" + NL + "<DD><CODE><code>" +
-- "IOException</code></CODE></DD>" + NL +
-- "<DD><CODE>java.io.IOException</CODE></DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD><DD>" +
-- "The name for this class." + NL + "<P>" + NL + "</DD>" + NL +
-- "<DD>&nbsp;</DD>" + NL + "</DL>"}};
-+ "</dd><dt><span class=\"strong\">Since:</span></dt>" + NL + " <dd>1.4</dd>" + NL +
-+ "<dt><span class=\"strong\">See Also:</span></dt><dd><a href=\"../pkg1/C1.html#readObject()\">" +
-+ "<code>readObject()</code></a></dd></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl><dt><span class=\"strong\">Throws:</span>" +
-+ "</dt>" + NL + "<dd><code>java.io.IOException</code></dd><dt>" +
-+ "<span class=\"strong\">See Also:</span></dt><dd><a href=\"../pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>setUndecorated(boolean)</code></a></dd></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<dl><dt><span class=\"strong\">Throws:</span>" +
-+ "</dt>" + NL + "<dd><code>" +
-+ "java.io.IOException</code></dd><dt><span class=\"strong\">See Also:</span>" +
-+ "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
-+ "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
-+ " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
-+ "<div class=\"block\">This field indicates whether the C1 is " +
-+ "undecorated.</div>" + NL + "&nbsp;" + NL + "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
-+ " <dd>1.4</dd>" + NL + "<dt><span class=\"strong\">See Also:</span>" +
-+ "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
-+ "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
-+ " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
-+ "<div class=\"block\">Reads the object stream.</div>" + NL +
-+ "<dl><dt><span class=\"strong\">Throws:" +
-+ "</span></dt>" + NL + "<dd><code><code>" +
-+ "IOException</code></code></dd>" + NL +
-+ "<dd><code>java.io.IOException</code></dd></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
-+ "&nbsp;</div>" + NL + "<div class=\"block\">" +
-+ "The name for this class.</div>"}};
-
- // Test with -nocomment and -nodeprecated options. The ClassDocs whould
-- // not display definition lists for any member details. The serialized
-- // form should display properly nested definition list tags for
-- // deprecated information only.
-+ // not display definition lists for any member details.
- private static final String[][] TEST_NOCMNT_NODEPR = {
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<PRE>" + NL + "public void " +
-- "<STRONG>readObject</STRONG>()" + NL + " throws" +
-- " java.io.IOException</PRE>" + NL + "<HR>"},
-- {BUG_ID + FS + "pkg1" + FS + "C2.html", "<PRE>" +NL + "public <STRONG>" +
-- "C2</STRONG>()</PRE>" + NL + "<HR>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<PRE>" + NL +
-- "public static final " +
-- "<A HREF=\"../pkg1/C1.ModalExclusionType.html\" " +
-- "title=\"enum in pkg1\">C1.ModalExclusionType</A> <STRONG>" +
-- "APPLICATION_EXCLUDE</STRONG></PRE>" + NL + "<HR>"},
-- {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "boolean <STRONG>" +
-- "undecorated</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-- "Deprecated.</STRONG>&nbsp;<I>As of JDK version 1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\"><CODE>" +
-- "setUndecorated(boolean)</CODE></A>.</I></DD></DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><STRONG>" +
-- "Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<pre>public&nbsp;void&nbsp;readObject()" + NL +
-+ " throws java.io.IOException</pre>" + NL + "</li>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C2.html", "<pre>public&nbsp;C2()</pre>" + NL +
-+ "</li>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<pre>public " +
-+ "static final&nbsp;<a href=\"../pkg1/C1.ModalExclusionType.html\" " +
-+ "title=\"enum in pkg1\">C1.ModalExclusionType</a> " +
-+ "APPLICATION_EXCLUDE</pre>" + NL + "</li>"},
-+ {BUG_ID + FS + "serialized-form.html", "<pre>boolean " +
-+ "undecorated</pre>" + NL + "<div class=\"block\"><span class=\"strong\">" +
-+ "Deprecated.</span>&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
-+ " <a href=\"pkg1/C1.html#setUndecorated(boolean)\"><code>" +
-+ "setUndecorated(boolean)</code></a>.</i></div>" + NL + "</li>"},
-+ {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">" +
-+ "Deprecated.</span>&nbsp;<i>As of JDK version" +
- " 1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-- "</DD></DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "int <STRONG>" +
-- "publicKey</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-- "Deprecated.</STRONG>&nbsp;</DD></DL>"}};
-+ " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL + "</li>"}};
-
- // Test for valid HTML generation which should not comprise of empty
- // definition list tags.
- private static final String[][] NEGATED_TEST = {
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<DL>" + NL + "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<DL></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<DL>" + NL + "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C2.html", "<DL>" + NL + "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C2.ModalType.html", "<DL></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C2.ModalType.html", "<DL>" + NL + "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C3.html", "<DL></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C3.html", "<DL>" + NL + "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C4.html", "<DL></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C4.html", "<DL>" + NL + "</DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C5.html", "<DL></DL>"},
-- {BUG_ID + FS + "pkg1" + FS + "C5.html", "<DL>" + NL + "</DL>"},
-- {BUG_ID + FS + "overview-tree.html", "<DL></DL>"},
-- {BUG_ID + FS + "overview-tree.html", "<DL>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL></DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "</DL>"}};
-+ {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<dl>" + NL + "</dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<dl>" + NL + "</dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<dl></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<dl>" + NL + "</dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C2.html", "<dl></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C2.html", "<dl>" + NL + "</dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C2.ModalType.html", "<dl></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C2.ModalType.html", "<dl>" + NL + "</dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C3.html", "<dl></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C3.html", "<dl>" + NL + "</dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C4.html", "<dl></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C4.html", "<dl>" + NL + "</dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C5.html", "<dl></dl>"},
-+ {BUG_ID + FS + "pkg1" + FS + "C5.html", "<dl>" + NL + "</dl>"},
-+ {BUG_ID + FS + "overview-tree.html", "<dl></dl>"},
-+ {BUG_ID + FS + "overview-tree.html", "<dl>" + NL + "</dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<dl></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<dl>" + NL + "</dl>"}};
-
- private static final String[] ARGS1 =
- new String[] {
-@@ -346,7 +245,7 @@
- run(tester, ARGS1, TEST_ALL, NEGATED_TEST);
- run(tester, ARGS1, TEST_CMNT_DEPR, NEGATED_TEST);
- run(tester, ARGS2, TEST_ALL, NEGATED_TEST);
-- run(tester, ARGS2, TEST_NOCMNT, TEST_CMNT_DEPR);
-+ run(tester, ARGS2, NO_TEST, TEST_CMNT_DEPR);
- run(tester, ARGS3, TEST_ALL, NEGATED_TEST);
- run(tester, ARGS3, TEST_NODEPR, TEST_NOCMNT_NODEPR);
- run(tester, ARGS4, TEST_ALL, NEGATED_TEST);
-diff --git a/test/com/sun/javadoc/testHtmlDocument/TestHtmlDocument.java b/test/com/sun/javadoc/testHtmlDocument/TestHtmlDocument.java
-new file mode 100644
---- /dev/null
-+++ langtools/test/com/sun/javadoc/testHtmlDocument/TestHtmlDocument.java
-@@ -0,0 +1,155 @@
-+/*
-+ * Copyright (c) 2010, 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.
-+ */
-+
-+/*
-+ * @test
-+ * @bug 6851834
-+ * @summary This test verifies the HTML document generation for javadoc output.
-+ * @author Bhavesh Patel
-+ * @build TestHtmlDocument
-+ * @run main TestHtmlDocument
-+ */
-+
-+import java.io.*;
-+import com.sun.tools.doclets.formats.html.markup.*;
-+
-+/**
-+ * The class reads each file, complete with newlines, into a string to easily
-+ * compare the existing markup with the generated markup.
-+ */
-+public class TestHtmlDocument {
-+
-+ private static final String BUGID = "6851834";
-+ private static final String BUGNAME = "TestHtmlDocument";
-+ private static final String FS = System.getProperty("file.separator");
-+ private static String srcdir = System.getProperty("test.src", ".");
-+
-+ // Entry point
-+ public static void main(String[] args) throws IOException {
-+ // Check whether the generated markup is same as the existing markup.
-+ if (generateHtmlTree().equals(readFileToString(srcdir + FS + "testMarkup.html"))) {
-+ System.out.println("\nTest passed for bug " + BUGID + " (" + BUGNAME + ")\n");
-+ } else {
-+ throw new Error("\nTest failed for bug " + BUGID + " (" + BUGNAME + ")\n");
-+ }
-+ }
-+
-+ // Generate the HTML output using the HTML document generation within doclet.
-+ public static String generateHtmlTree() {
-+ // Document type for the HTML document
-+ DocType htmlDocType = DocType.Transitional();
-+ HtmlTree html = new HtmlTree(HtmlTag.HTML);
-+ HtmlTree head = new HtmlTree(HtmlTag.HEAD);
-+ HtmlTree title = new HtmlTree(HtmlTag.TITLE);
-+ // String content within the document
-+ StringContent titleContent = new StringContent("Markup test");
-+ title.addContent(titleContent);
-+ head.addContent(title);
-+ // Test META tag
-+ HtmlTree meta = new HtmlTree(HtmlTag.META);
-+ meta.addAttr(HtmlAttr.NAME, "keywords");
-+ meta.addAttr(HtmlAttr.CONTENT, "testContent");
-+ head.addContent(meta);
-+ // Test invalid META tag
-+ HtmlTree invmeta = new HtmlTree(HtmlTag.META);
-+ head.addContent(invmeta);
-+ // Test LINK tag
-+ HtmlTree link = new HtmlTree(HtmlTag.LINK);
-+ link.addAttr(HtmlAttr.REL, "testRel");
-+ link.addAttr(HtmlAttr.HREF, "testLink.html");
-+ head.addContent(link);
-+ // Test invalid LINK tag
-+ HtmlTree invlink = new HtmlTree(HtmlTag.LINK);
-+ head.addContent(invlink);
-+ html.addContent(head);
-+ // Comment within the document
-+ Comment bodyMarker = new Comment("======== START OF BODY ========");
-+ html.addContent(bodyMarker);
-+ HtmlTree body = new HtmlTree(HtmlTag.BODY);
-+ Comment pMarker = new Comment("======== START OF PARAGRAPH ========");
-+ body.addContent(pMarker);
-+ HtmlTree p = new HtmlTree(HtmlTag.P);
-+ StringContent bodyContent = new StringContent(
-+ "This document is generated from sample source code and HTML " +
-+ "files with examples of a wide variety of Java language constructs: packages, " +
-+ "subclasses, subinterfaces, nested classes, nested interfaces," +
-+ "inheriting from other packages, constructors, fields," +
-+ "methods, and so forth. ");
-+ p.addContent(bodyContent);
-+ StringContent anchorContent = new StringContent("Click Here");
-+ p.addContent(HtmlTree.A("testLink.html", anchorContent));
-+ StringContent pContent = new StringContent(" to <test> out a link.");
-+ p.addContent(pContent);
-+ body.addContent(p);
-+ HtmlTree p1 = new HtmlTree(HtmlTag.P);
-+ // Test another version of A tag.
-+ HtmlTree anchor = new HtmlTree(HtmlTag.A);
-+ anchor.addAttr(HtmlAttr.HREF, "testLink.html");
-+ anchor.addAttr(HtmlAttr.NAME, "Another version of a tag");
-+ p1.addContent(anchor);
-+ body.addContent(p1);
-+ // Test for empty tags.
-+ HtmlTree dl = new HtmlTree(HtmlTag.DL);
-+ html.addContent(dl);
-+ // Test for empty nested tags.
-+ HtmlTree dlTree = new HtmlTree(HtmlTag.DL);
-+ dlTree.addContent(new HtmlTree(HtmlTag.DT));
-+ dlTree.addContent(new HtmlTree (HtmlTag.DD));
-+ html.addContent(dlTree);
-+ HtmlTree dlDisplay = new HtmlTree(HtmlTag.DL);
-+ dlDisplay.addContent(new HtmlTree(HtmlTag.DT));
-+ HtmlTree dd = new HtmlTree (HtmlTag.DD);
-+ StringContent ddContent = new StringContent("Test DD");
-+ dd.addContent(ddContent);
-+ dlDisplay.addContent(dd);
-+ body.addContent(dlDisplay);
-+ StringContent emptyString = new StringContent("");
-+ body.addContent(emptyString);
-+ Comment emptyComment = new Comment("");
-+ body.addContent(emptyComment);
-+ HtmlTree hr = new HtmlTree(HtmlTag.HR);
-+ body.addContent(hr);
-+ html.addContent(body);
-+ HtmlDocument htmlDoc = new HtmlDocument(htmlDocType, html);
-+ return htmlDoc.toString();
-+ }
-+
-+ // Read the file into a String
-+ public static String readFileToString(String filename) throws IOException {
-+ File file = new File(filename);
-+ if ( !file.exists() ) {
-+ System.out.println("\nFILE DOES NOT EXIST: " + filename);
-+ }
-+ BufferedReader in = new BufferedReader(new FileReader(file));
-+ // Create an array of characters the size of the file
-+ char[] allChars = new char[(int)file.length()];
-+ // Read the characters into the allChars array
-+ in.read(allChars, 0, (int)file.length());
-+ in.close();
-+ // Convert to a string
-+ String allCharsString = new String(allChars);
-+ return allCharsString;
-+ }
-+}
-diff --git a/test/com/sun/javadoc/testHtmlDocument/testLink.html b/test/com/sun/javadoc/testHtmlDocument/testLink.html
-new file mode 100644
---- /dev/null
-+++ langtools/test/com/sun/javadoc/testHtmlDocument/testLink.html
-@@ -0,0 +1,9 @@
-+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-+<html>
-+<head>
-+<title>Markup test</title>
-+</head>
-+<body>
-+This is a test for link.
-+</body>
-+</html>
-diff --git a/test/com/sun/javadoc/testHtmlDocument/testMarkup.html b/test/com/sun/javadoc/testHtmlDocument/testMarkup.html
-new file mode 100644
---- /dev/null
-+++ langtools/test/com/sun/javadoc/testHtmlDocument/testMarkup.html
-@@ -0,0 +1,18 @@
-+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-+<html>
-+<head>
-+<title>Markup test</title>
-+<meta name="keywords" content="testContent">
-+<link rel="testRel" href="testLink.html">
-+</head>
-+<!-- ======== START OF BODY ======== -->
-+<body>
-+<!-- ======== START OF PARAGRAPH ======== -->
-+<p>This document is generated from sample source code and HTML files with examples of a wide variety of Java language constructs: packages, subclasses, subinterfaces, nested classes, nested interfaces,inheriting from other packages, constructors, fields,methods, and so forth. <a href="testLink.html">Click Here</a> to &lt;test&gt; out a link.</p>
-+<p><a href="testLink.html" name="Another version of a tag"></a></p>
-+<dl>
-+<dd>Test DD</dd>
-+</dl>
-+<hr>
-+</body>
-+</html>
-diff --git a/test/com/sun/javadoc/testHtmlStrongTag/TestHtmlStrongTag.java b/test/com/sun/javadoc/testHtmlStrongTag/TestHtmlStrongTag.java
---- langtools/test/com/sun/javadoc/testHtmlStrongTag/TestHtmlStrongTag.java
-+++ langtools/test/com/sun/javadoc/testHtmlStrongTag/TestHtmlStrongTag.java
-@@ -38,7 +38,7 @@
-
- private static final String BUG_ID = "6786028";
- private static final String[][] TEST1 = {
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<STRONG>See Also:</STRONG>"}};
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<span class=\"strong\">See Also:</span>"}};
- private static final String[][] NEGATED_TEST1 = {
- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<STRONG>Method Summary</STRONG>"},
- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<B>"},
-diff --git a/test/com/sun/javadoc/testHtmlTableTags/TestHtmlTableTags.java b/test/com/sun/javadoc/testHtmlTableTags/TestHtmlTableTags.java
---- langtools/test/com/sun/javadoc/testHtmlTableTags/TestHtmlTableTags.java
-+++ langtools/test/com/sun/javadoc/testHtmlTableTags/TestHtmlTableTags.java
-@@ -50,139 +50,128 @@
-
- //Package summary
- {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Class Summary table, " +
-+ "<table class=\"packageSummary\" border=\"0\" cellpadding=\"3\"" +
-+ " cellspacing=\"0\" summary=\"Class Summary table, " +
- "listing classes, and an explanation\">"
- },
- {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Interface Summary table, " +
-+ "<table class=\"packageSummary\" border=\"0\" cellpadding=\"3\"" +
-+ " cellspacing=\"0\" summary=\"Interface Summary table, " +
- "listing interfaces, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Enum Summary table, " +
-+ "<table class=\"packageSummary\" border=\"0\" cellpadding=\"3\"" +
-+ " cellspacing=\"0\" summary=\"Enum Summary table, " +
- "listing enums, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Annotation Types Summary table, " +
-+ "<table class=\"packageSummary\" border=\"0\" cellpadding=\"3\"" +
-+ " cellspacing=\"0\" summary=\"Annotation Types Summary table, " +
- "listing annotation types, and an explanation\">"
- },
- // Class documentation
- {BUG_ID + FS + "pkg1" + FS + "C1.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Field Summary table, " +
-- "listing fields, and an explanation\">"
-+ "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
-+ "cellspacing=\"0\" summary=\"Field Summary table, listing fields, " +
-+ "and an explanation\">"
- },
- {BUG_ID + FS + "pkg1" + FS + "C1.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Method Summary table, " +
-- "listing methods, and an explanation\">"
-+ "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
-+ "cellspacing=\"0\" summary=\"Method Summary table, listing methods, " +
-+ "and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "C2.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Nested Class Summary table, " +
-- "listing nested classes, and an explanation\">"
-+ "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
-+ "cellspacing=\"0\" summary=\"Nested Class Summary table, listing " +
-+ "nested classes, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "C2.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Constructor Summary table, " +
-- "listing constructors, and an explanation\">"
-+ "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
-+ "cellspacing=\"0\" summary=\"Constructor Summary table, listing " +
-+ "constructors, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "C2.ModalExclusionType.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Enum Constant Summary table, " +
-- "listing enum constants, and an explanation\">"
-+ "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
-+ "cellspacing=\"0\" summary=\"Enum Constant Summary table, listing " +
-+ "enum constants, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "C3.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Required Element Summary table, " +
-+ "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
-+ "cellspacing=\"0\" summary=\"Required Element Summary table, " +
- "listing required elements, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "C4.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Optional Element Summary table, " +
-+ "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
-+ "cellspacing=\"0\" summary=\"Optional Element Summary table, " +
- "listing optional elements, and an explanation\">"
- },
- // Class use documentation
- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "I1.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-- "listing packages, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
-+ "table, listing packages, and an explanation\">"
- },
- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-- "listing fields, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
-+ "table, listing fields, and an explanation\">"
- },
- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-- "listing methods, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
-+ "table, listing methods, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-- "listing fields, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
-+ "table, listing fields, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-- "listing methods, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
-+ "table, listing methods, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.ModalExclusionType.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-- "listing packages, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
-+ "table, listing packages, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.ModalExclusionType.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-- "listing methods, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
-+ "table, listing methods, and an explanation\">"
- },
- // Package use documentation
- {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-- "listing packages, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
-+ "table, listing packages, and an explanation\">"
- },
- {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-- "listing classes, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
-+ "table, listing classes, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-- "listing packages, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
-+ "table, listing packages, and an explanation\">"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Use table, " +
-- "listing classes, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" summary=\"Use " +
-+ "table, listing classes, and an explanation\">"
- },
- // Deprecated
- {BUG_ID + FS + "deprecated-list.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Deprecated Fields table, " +
-- "listing deprecated fields, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" " +
-+ "summary=\"Deprecated Fields table, listing deprecated fields, " +
-+ "and an explanation\">"
- },
- {BUG_ID + FS + "deprecated-list.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Deprecated Methods table, " +
-- "listing deprecated methods, and an explanation\">"
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" " +
-+ "summary=\"Deprecated Methods table, listing deprecated methods, " +
-+ "and an explanation\">"
- },
- // Constant values
- {BUG_ID + FS + "constant-values.html",
-- "<TABLE BORDER=\"1\" CELLPADDING=\"3\" CELLSPACING=\"0\" " +
-- "SUMMARY=\"Constant Field Values table, listing " +
-+ "<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" " +
-+ "summary=\"Constant Field Values table, listing " +
- "constant fields, and values\">"
- },
- // Overview Summary
- {BUG_ID + FS + "overview-summary.html",
-- "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" " +
-- "CELLSPACING=\"0\" SUMMARY=\"Packages table, " +
-+ "<table class=\"overviewSummary\" border=\"0\" cellpadding=\"3\" " +
-+ "cellspacing=\"0\" summary=\"Packages table, " +
- "listing packages, and an explanation\">"
- },
-
-@@ -192,125 +181,117 @@
-
- //Package summary
- {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Class Summary</CAPTION>"
-+ "<caption><span>Class Summary</span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Interface Summary</CAPTION>"
-+ "<caption><span>Interface Summary</span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Enum Summary</CAPTION>"
-+ "<caption><span>Enum Summary</span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Annotation Types Summary</CAPTION>"
-+ "<caption><span>Annotation Types Summary</span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- // Class documentation
- {BUG_ID + FS + "pkg1" + FS + "C1.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Field Summary</CAPTION>"
-+ "<caption><span>Fields</span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg1" + FS + "C1.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Method Summary</CAPTION>"
-+ "<caption><span>Methods</span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "C2.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Nested Class Summary</CAPTION>"
-+ "<caption><span>Nested Classes</span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "C2.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Constructor Summary</CAPTION>"
-+ "<caption><span>Constructors</span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "C2.ModalExclusionType.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Enum Constant Summary</CAPTION>"
-+ "<caption><span>Enum Constants</span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "C3.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Required Element Summary</CAPTION>"
-+ "<caption><span>Required Elements</span><span class=\"tabEnd\">&nbsp;" +
-+ "</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "C4.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Optional Element Summary</CAPTION>"
-+ "<caption><span>Optional Elements</span><span class=\"tabEnd\">&nbsp;" +
-+ "</span></caption>"
- },
- // Class use documentation
- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "I1.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Packages that use <A HREF=\"../../pkg1/I1.html\" " +
-- "title=\"interface in pkg1\">I1</A></CAPTION>"
-+ "<caption><span>Packages that use <a href=\"../../pkg1/I1.html\" " +
-+ "title=\"interface in pkg1\">I1</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Fields in <A HREF=\"../../pkg2/package-summary.html\">pkg2</A> " +
-- "declared as <A HREF=\"../../pkg1/C1.html\" title=\"class in pkg1\">" +
-- "C1</A></CAPTION>"
-+ "<caption><span>Fields in <a href=\"../../pkg2/package-summary.html\">" +
-+ "pkg2</a> declared as <a href=\"../../pkg1/C1.html\" " +
-+ "title=\"class in pkg1\">C1</a></span><span class=\"tabEnd\">&nbsp;" +
-+ "</span></caption>"
- },
- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2</A> " +
-- "with parameters of type <A HREF=\"../../pkg1/C1.html\" " +
-- "title=\"class in pkg1\">C1</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg2/package-summary.html\">" +
-+ "pkg2</a> that return <a href=\"../../pkg1/C1.html\" " +
-+ "title=\"class in pkg1\">C1</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Fields in <A HREF=\"../../pkg1/package-summary.html\">pkg1</A> " +
-- "declared as <A HREF=\"../../pkg2/C2.html\" title=\"class in pkg2\">" +
-- "C2</A></CAPTION>"
-+ "<caption><span>Fields in <a href=\"../../pkg1/package-summary.html\">" +
-+ "pkg1</a> declared as <a href=\"../../pkg2/C2.html\" " +
-+ "title=\"class in pkg2\">C2</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg1/package-summary.html\">pkg1</A> " +
-- "with parameters of type <A HREF=\"../../pkg2/C2.html\" " +
-- "title=\"class in pkg2\">C2</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg1/package-summary.html\">" +
-+ "pkg1</a> that return <a href=\"../../pkg2/C2.html\" " +
-+ "title=\"class in pkg2\">C2</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.ModalExclusionType.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2</A> " +
-- "that return <A HREF=\"../../pkg2/C2.ModalExclusionType.html\" " +
-- "title=\"enum in pkg2\">C2.ModalExclusionType</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg2/package-summary.html\">" +
-+ "pkg2</a> that return <a href=\"../../pkg2/C2.ModalExclusionType.html\" " +
-+ "title=\"enum in pkg2\">C2.ModalExclusionType</a></span>" +
-+ "<span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- // Package use documentation
- {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Packages that use <A HREF=\"../pkg1/package-summary.html\">" +
-- "pkg1</A></CAPTION>"
-+ "<caption><span>Packages that use <a href=\"../pkg1/package-summary.html\">" +
-+ "pkg1</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Classes in <A HREF=\"../pkg1/package-summary.html\">pkg1</A> " +
-- "used by <A HREF=\"../pkg1/package-summary.html\">pkg1</A></CAPTION>"
-+ "<caption><span>Classes in <a href=\"../pkg1/package-summary.html\">" +
-+ "pkg1</a> used by <a href=\"../pkg1/package-summary.html\">pkg1</a>" +
-+ "</span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Packages that use <A HREF=\"../pkg2/package-summary.html\">" +
-- "pkg2</A></CAPTION>"
-+ "<caption><span>Packages that use <a href=\"../pkg2/package-summary.html\">" +
-+ "pkg2</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Classes in <A HREF=\"../pkg2/package-summary.html\">pkg2</A> " +
-- "used by <A HREF=\"../pkg1/package-summary.html\">pkg1</A></CAPTION>"
-+ "<caption><span>Classes in <a href=\"../pkg2/package-summary.html\">" +
-+ "pkg2</a> used by <a href=\"../pkg1/package-summary.html\">pkg1</a>" +
-+ "</span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- // Deprecated
- {BUG_ID + FS + "deprecated-list.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Deprecated Fields</CAPTION>"
-+ "<caption><span>Deprecated Fields</span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "deprecated-list.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Deprecated Methods</CAPTION>"
-+ "<caption><span>Deprecated Methods</span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- // Constant values
- {BUG_ID + FS + "constant-values.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "pkg1.<A HREF=\"pkg1/C1.html\" title=\"class in pkg1\">C1</A></CAPTION>"
-+ "<caption><span>pkg1.<a href=\"pkg1/C1.html\" title=\"class in pkg1\">" +
-+ "C1</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- // Overview Summary
- {BUG_ID + FS + "overview-summary.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Packages</CAPTION>"
-+ "<caption><span>Packages</span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
-
- /*
-@@ -319,135 +300,115 @@
-
- //Package summary
- {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Class</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">" +
-+ "Class</th>" + NL + "<th class=\"colLast\" scope=\"col\"" +
-+ ">Description</th>"
- },
- {BUG_ID + FS + "pkg1" + FS + "package-summary.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Interface</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">" +
-+ "Interface</th>" + NL + "<th class=\"colLast\" scope=\"col\"" +
-+ ">Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Enum</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">" +
-+ "Enum</th>" + NL + "<th class=\"colLast\" scope=\"col\"" +
-+ ">Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Annotation Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">" +
-+ "Annotation Type</th>" + NL + "<th class=\"colLast\"" +
-+ " scope=\"col\">Description</th>"
- },
- // Class documentation
- {BUG_ID + FS + "pkg1" + FS + "C1.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Field and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Field and Description</th>"
- },
- {BUG_ID + FS + "pkg1" + FS + "C1.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Method and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Method and Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "C2.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Class and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Class and Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "C2.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Constructor and Description</TH>"
-+ "<th class=\"colOne\" scope=\"col\">Constructor and Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "C2.ModalExclusionType.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Enum Constant and Description</TH>"
-+ "<th class=\"colOne\" scope=\"col\">Enum Constant and Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "C3.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Required Element and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Required Element and Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "C4.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Optional Element and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Optional Element and Description</th>"
- },
- // Class use documentation
- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "I1.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Package</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Package</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Description</th>"
- },
- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Field and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Field and Description</th>"
- },
- {BUG_ID + FS + "pkg1" + FS + "class-use" + FS + "C1.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Method and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Method and Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Field and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Field and Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Method and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Method and Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.ModalExclusionType.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Package</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Package</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "C2.ModalExclusionType.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Method and Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Method and Description</th>"
- },
- // Package use documentation
- {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Package</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Package</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Description</th>"
- },
- {BUG_ID + FS + "pkg1" + FS + "package-use.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Class and Description</TH>"
-+ "<th class=\"colOne\" scope=\"col\">Class and Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Package</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">Package</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Description</th>"
- },
- {BUG_ID + FS + "pkg2" + FS + "package-use.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Class and Description</TH>"
-+ "<th class=\"colOne\" scope=\"col\">Class and Description</th>"
- },
- // Deprecated
- {BUG_ID + FS + "deprecated-list.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Field and Description</TH>"
-+ "<th class=\"colOne\" scope=\"col\">Field and Description</th>"
- },
- {BUG_ID + FS + "deprecated-list.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Method and Description</TH>"
-+ "<th class=\"colOne\" scope=\"col\">Method and Description</th>"
- },
- // Constant values
- {BUG_ID + FS + "constant-values.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Modifier and Type</TH>" + NL + "<TH CLASS=\"TableHeader\"" +
-- " SCOPE=\"col\" NOWRAP>Constant Field</TH>" + NL +
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>Value</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">" +
-+ "Modifier and Type</th>" + NL + "<th" +
-+ " scope=\"col\">Constant Field</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Value</th>"
- },
- // Overview Summary
- {BUG_ID + FS + "overview-summary.html",
-- "<TH CLASS=\"TableHeader\" SCOPE=\"col\" NOWRAP>" +
-- "Package</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Description</TH>"
-+ "<th class=\"colFirst\" scope=\"col\">" +
-+ "Package</th>" + NL + "<th class=\"colLast\" scope=\"col\"" +
-+ ">Description</th>"
- }
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
-diff --git a/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java b/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java
---- langtools/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java
-+++ langtools/test/com/sun/javadoc/testHtmlTag/TestHtmlTag.java
-@@ -40,20 +40,20 @@
-
- private static final String BUG_ID = "6786682";
- private static final String[][] TEST1 = {
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML lang=\"" + Locale.getDefault().getLanguage() + "\">"},
-- {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<HTML lang=\"" + Locale.getDefault().getLanguage() + "\">"}};
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<html lang=\"" + Locale.getDefault().getLanguage() + "\">"},
-+ {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<html lang=\"" + Locale.getDefault().getLanguage() + "\">"}};
- private static final String[][] NEGATED_TEST1 = {
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML>"}};
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<html>"}};
- private static final String[][] TEST2 = {
-- {BUG_ID + FS + "pkg2" + FS + "C2.html", "<HTML lang=\"ja\">"},
-- {BUG_ID + FS + "pkg2" + FS + "package-summary.html", "<HTML lang=\"ja\">"}};
-+ {BUG_ID + FS + "pkg2" + FS + "C2.html", "<html lang=\"ja\">"},
-+ {BUG_ID + FS + "pkg2" + FS + "package-summary.html", "<html lang=\"ja\">"}};
- private static final String[][] NEGATED_TEST2 = {
-- {BUG_ID + FS + "pkg2" + FS + "C2.html", "<HTML>"}};
-+ {BUG_ID + FS + "pkg2" + FS + "C2.html", "<html>"}};
- private static final String[][] TEST3 = {
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML lang=\"en\">"},
-- {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<HTML lang=\"en\">"}};
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<html lang=\"en\">"},
-+ {BUG_ID + FS + "pkg1" + FS + "package-summary.html", "<html lang=\"en\">"}};
- private static final String[][] NEGATED_TEST3 = {
-- {BUG_ID + FS + "pkg1" + FS + "C1.html", "<HTML>"}};
-+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<html>"}};
-
- private static final String[] ARGS1 =
- new String[] {
-diff --git a/test/com/sun/javadoc/testIndex/TestIndex.java b/test/com/sun/javadoc/testIndex/TestIndex.java
---- langtools/test/com/sun/javadoc/testIndex/TestIndex.java
-+++ langtools/test/com/sun/javadoc/testIndex/TestIndex.java
-@@ -48,35 +48,34 @@
- private static final String[][] TEST = {
- //Make sure the horizontal scroll bar does not appear in class frame.
- {BUG_ID + FS + "index.html",
-- "<FRAME src=\"overview-summary.html\" name=\"classFrame\" " +
-- "title=\"Package, class and interface descriptions\" " +
-- "scrolling=\"yes\">"},
-+ "<frame src=\"overview-summary.html\" name=\"classFrame\" title=\"" +
-+ "Package, class and interface descriptions\" scrolling=\"yes\">"},
-
- //Test index-all.html
- {BUG_ID + FS + "index-all.html",
-- "<A HREF=\"./pkg/C.html\" title=\"class in pkg\"><STRONG>C</STRONG></A>" +
-- " - Class in <A HREF=\"./pkg/package-summary.html\">pkg</A>"},
-+ "<a href=\"./pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">C</span></a>" +
-+ " - Class in <a href=\"./pkg/package-summary.html\">pkg</a>"},
- {BUG_ID + FS + "index-all.html",
-- "<A HREF=\"./pkg/Interface.html\" title=\"interface in pkg\">" +
-- "<STRONG>Interface</STRONG></A> - Interface in " +
-- "<A HREF=\"./pkg/package-summary.html\">pkg</A>"},
-+ "<a href=\"./pkg/Interface.html\" title=\"interface in pkg\">" +
-+ "<span class=\"strong\">Interface</span></a> - Interface in " +
-+ "<a href=\"./pkg/package-summary.html\">pkg</a>"},
- {BUG_ID + FS + "index-all.html",
-- "<A HREF=\"./pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
-- "<STRONG>AnnotationType</STRONG></A> - Annotation Type in " +
-- "<A HREF=\"./pkg/package-summary.html\">pkg</A>"},
-+ "<a href=\"./pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
-+ "<span class=\"strong\">AnnotationType</span></a> - Annotation Type in " +
-+ "<a href=\"./pkg/package-summary.html\">pkg</a>"},
- {BUG_ID + FS + "index-all.html",
-- "<A HREF=\"./pkg/Coin.html\" title=\"enum in pkg\">" +
-- "<STRONG>Coin</STRONG></A> - Enum in " +
-- "<A HREF=\"./pkg/package-summary.html\">pkg</A>"},
-+ "<a href=\"./pkg/Coin.html\" title=\"enum in pkg\">" +
-+ "<span class=\"strong\">Coin</span></a> - Enum in " +
-+ "<a href=\"./pkg/package-summary.html\">pkg</a>"},
- {BUG_ID + FS + "index-all.html",
-- "Class in <A HREF=\"./package-summary.html\">&lt;Unnamed&gt;</A>"},
-+ "Class in <a href=\"./package-summary.html\">&lt;Unnamed&gt;</a>"},
- {BUG_ID + FS + "index-all.html",
-- "<DT><A HREF=\"./pkg/C.html#Java\"><STRONG>Java</STRONG></A> - " + NL +
-- "Static variable in class pkg.<A HREF=\"./pkg/C.html\" title=\"class in pkg\">C</A>" + NL +
-- "</DT><DD>&nbsp;</DD>" + NL + NL +
-- "<DT><A HREF=\"./pkg/C.html#JDK\"><STRONG>JDK</STRONG></A> - " + NL +
-- "Static variable in class pkg.<A HREF=\"./pkg/C.html\" title=\"class in pkg\">C</A>" + NL +
-- "</DT><DD>&nbsp;</DD>"},
-+ "<dl>" + NL + "<dt><span class=\"strong\"><a href=\"./pkg/C.html#Java\">" +
-+ "Java</a></span> - Static variable in class pkg.<a href=\"./pkg/C.html\" " +
-+ "title=\"class in pkg\">C</a></dt>" + NL + "<dd>&nbsp;</dd>" + NL +
-+ "<dt><span class=\"strong\"><a href=\"./pkg/C.html#JDK\">JDK</a></span> " +
-+ "- Static variable in class pkg.<a href=\"./pkg/C.html\" title=\"class in pkg\">" +
-+ "C</a></dt>" + NL + "<dd>&nbsp;</dd>" + NL + "</dl>"},
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
-
-diff --git a/test/com/sun/javadoc/testInlineLinkLabel/TestInlineLinkLabel.java b/test/com/sun/javadoc/testInlineLinkLabel/TestInlineLinkLabel.java
---- langtools/test/com/sun/javadoc/testInlineLinkLabel/TestInlineLinkLabel.java
-+++ langtools/test/com/sun/javadoc/testInlineLinkLabel/TestInlineLinkLabel.java
-@@ -37,10 +37,10 @@
- private static final String BUG_ID = "4524136";
- private static final String[][] TEST = {
- //Search for the label to the package link.
-- {BUG_ID + FS + "pkg" + FS + "C1.html" , "<A HREF=\"../pkg/package-summary.html\"><CODE>Here is a link to a package</CODE></A>"},
-+ {BUG_ID + FS + "pkg" + FS + "C1.html" , "<a href=\"../pkg/package-summary.html\"><code>Here is a link to a package</code></a>"},
-
- //Search for the label to the class link
-- {BUG_ID + FS + "pkg" + FS + "C1.html" , "<A HREF=\"../pkg/C2.html\" title=\"class in pkg\"><CODE>Here is a link to a class</CODE></A>"}
-+ {BUG_ID + FS + "pkg" + FS + "C1.html" , "<a href=\"../pkg/C2.html\" title=\"class in pkg\"><code>Here is a link to a class</code></a>"}
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
- private static final String[] ARGS =
-diff --git a/test/com/sun/javadoc/testInterface/TestInterface.java b/test/com/sun/javadoc/testInterface/TestInterface.java
---- langtools/test/com/sun/javadoc/testInterface/TestInterface.java
-+++ langtools/test/com/sun/javadoc/testInterface/TestInterface.java
-@@ -48,51 +48,62 @@
- //Input for string search tests.
- private static final String[][] TEST = {
- {BUG_ID + FS + "pkg" + FS + "Interface.html",
-- "int <STRONG>method</STRONG>()"},
-+ "<pre>int&nbsp;method()</pre>"},
- {BUG_ID + FS + "pkg" + FS + "Interface.html",
-- "static final int <STRONG>field</STRONG>"},
-+ "<pre>static final&nbsp;int field</pre>"},
-
-
- // Make sure known implementing class list is correct and omits type parameters.
- {BUG_ID + FS + "pkg" + FS + "Interface.html",
-- "<DT><STRONG>All Known Implementing Classes:</STRONG></DT> " +
-- "<DD><A HREF=\"../pkg/Child.html\" " +
-- "title=\"class in pkg\">Child</A>, " +
-- "<A HREF=\"../pkg/Parent.html\" title=\"class in pkg\">" +
-- "Parent</A></DD>"},
-+ "<dl>" + NL + "<dt>All Known Implementing Classes:</dt>" + NL +
-+ "<dd><a href=\"../pkg/Child.html\" title=\"class in pkg\">Child" +
-+ "</a>, <a href=\"../pkg/Parent.html\" title=\"class in pkg\">Parent" +
-+ "</a></dd>" + NL + "</dl>"},
-
- // Make sure "All Implemented Interfaces": has substituted type parameters
- {BUG_ID + FS + "pkg" + FS + "Child.html",
-- "<STRONG>All Implemented Interfaces:</STRONG></DT> <DD>" +
-- "<A HREF=\"../pkg/Interface.html\" title=\"interface in pkg\">" +
-- "Interface</A>&lt;T&gt;"
-+ "<dl>" + NL + "<dt>All Implemented Interfaces:</dt>" + NL +
-+ "<dd><a href=\"../pkg/Interface.html\" title=\"interface in pkg\">" +
-+ "Interface</a>&lt;T&gt;</dd>" + NL + "</dl>"
- },
- //Make sure Class Tree has substituted type parameters.
- {BUG_ID + FS + "pkg" + FS + "Child.html",
-- "<PRE>" + NL +
-- "java.lang.Object" + NL +
-- " <IMG SRC=\"../resources/inherit.gif\" ALT=\"extended by \"><A HREF=\"../pkg/Parent.html\" title=\"class in pkg\">pkg.Parent</A>&lt;T&gt;" + NL +
-- " <IMG SRC=\"../resources/inherit.gif\" ALT=\"extended by \"><STRONG>pkg.Child&lt;T&gt;</STRONG>" + NL +
-- "</PRE>"
-+ "<ul class=\"inheritance\">" + NL + "<li>java.lang.Object</li>" + NL +
-+ "<li>" + NL + "<ul class=\"inheritance\">" + NL +
-+ "<li><a href=\"../pkg/Parent.html\" title=\"class in pkg\">" +
-+ "pkg.Parent</a>&lt;T&gt;</li>" + NL + "<li>" + NL +
-+ "<ul class=\"inheritance\">" + NL + "<li>pkg.Child&lt;T&gt;</li>" + NL +
-+ "</ul>" + NL + "</li>" + NL + "</ul>" + NL + "</li>" + NL + "</ul>"
- },
- //Make sure "Direct Know Subclasses" omits type parameters
- {BUG_ID + FS + "pkg" + FS + "Parent.html",
-- "<STRONG>Direct Known Subclasses:</STRONG></DT> <DD><A HREF=\"../pkg/Child.html\" title=\"class in pkg\">Child</A>"
-+ "<dl>" + NL + "<dt>Direct Known Subclasses:</dt>" + NL +
-+ "<dd><a href=\"../pkg/Child.html\" title=\"class in pkg\">Child" +
-+ "</a></dd>" + NL + "</dl>"
- },
- //Make sure "Specified By" has substituted type parameters.
- {BUG_ID + FS + "pkg" + FS + "Child.html",
-- "<STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"../pkg/Interface.html#method()\">method</A></CODE> in interface <CODE><A HREF=\"../pkg/Interface.html\" title=\"interface in pkg\">Interface</A>&lt;<A HREF=\"../pkg/Child.html\" title=\"type parameter in Child\">T</A>&gt;</CODE>"
-+ "<dt><strong>Specified by:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg/Interface.html#method()\">method</a>" +
-+ "</code>&nbsp;in interface&nbsp;<code>" +
-+ "<a href=\"../pkg/Interface.html\" title=\"interface in pkg\">" +
-+ "Interface</a>&lt;<a href=\"../pkg/Child.html\" title=\"type parameter in Child\">" +
-+ "T</a>&gt;</code></dd>"
- },
- //Make sure "Overrides" has substituted type parameters.
- {BUG_ID + FS + "pkg" + FS + "Child.html",
-- "<STRONG>Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg/Parent.html#method()\">method</A></CODE> in class <CODE><A HREF=\"../pkg/Parent.html\" title=\"class in pkg\">Parent</A>&lt;<A HREF=\"../pkg/Child.html\" title=\"type parameter in Child\">T</A>&gt;</CODE>"
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg/Parent.html#method()\">method</a>" +
-+ "</code>&nbsp;in class&nbsp;<code><a href=\"../pkg/Parent.html\" " +
-+ "title=\"class in pkg\">Parent</a>&lt;<a href=\"../pkg/Child.html\" " +
-+ "title=\"type parameter in Child\">T</a>&gt;</code></dd>"
- },
- };
- private static final String[][] NEGATED_TEST = {
- {BUG_ID + FS + "pkg" + FS + "Interface.html",
-- "public int <STRONG>method</STRONG>()"},
-+ "public int&nbsp;method()"},
- {BUG_ID + FS + "pkg" + FS + "Interface.html",
-- "public static final int <STRONG>field</STRONG>"},
-+ "public static final&nbsp;int field"},
- };
-
- /**
-diff --git a/test/com/sun/javadoc/testJavascript/TestJavascript.java b/test/com/sun/javadoc/testJavascript/TestJavascript.java
---- langtools/test/com/sun/javadoc/testJavascript/TestJavascript.java
-+++ langtools/test/com/sun/javadoc/testJavascript/TestJavascript.java
-@@ -45,11 +45,11 @@
- //Input for string search tests.
- private static final String[][] TEST = {
- {BUG_ID + FS + "pkg" + FS + "C.html",
-- "<A HREF=\"../index.html?pkg/C.html\" target=\"_top\"><STRONG>FRAMES</STRONG></A>"},
-+ "<a href=\"../index.html?pkg/C.html\" target=\"_top\">FRAMES</a>"},
- {BUG_ID + FS + "TestJavascript.html",
-- "<A HREF=\"index.html?TestJavascript.html\" target=\"_top\"><STRONG>FRAMES</STRONG></A>"},
-+ "<a href=\"index.html?TestJavascript.html\" target=\"_top\">FRAMES</a>"},
- {BUG_ID + FS + "index.html",
-- "<SCRIPT type=\"text/javascript\">" + NL +
-+ "<script type=\"text/javascript\">" + NL +
- " targetPage = \"\" + window.location.search;" + NL +
- " if (targetPage != \"\" && targetPage != \"undefined\")" + NL +
- " targetPage = targetPage.substring(1);" + NL +
-@@ -59,7 +59,7 @@
- " if (targetPage != \"\" && targetPage != \"undefined\")" + NL +
- " top.classFrame.location = top.targetPage;" + NL +
- " }" + NL +
-- "</SCRIPT>"},
-+ "</script>"},
-
- //Make sure title javascript only runs if is-external is not true
- {BUG_ID + FS + "pkg" + FS + "C.html",
-diff --git a/test/com/sun/javadoc/testLinkOption/TestLinkOption.java b/test/com/sun/javadoc/testLinkOption/TestLinkOption.java
---- langtools/test/com/sun/javadoc/testLinkOption/TestLinkOption.java
-+++ langtools/test/com/sun/javadoc/testLinkOption/TestLinkOption.java
-@@ -46,25 +46,25 @@
-
- private static final String[][] TEST1 = {
- {BUG_ID + "-1" + FS + "pkg" + FS + "C.html",
-- "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/String.html?is-external=true\" " +
-- "title=\"class or interface in java.lang\"><CODE>Link to String Class</CODE></A>"
-+ "<a href=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/String.html?is-external=true\" " +
-+ "title=\"class or interface in java.lang\"><code>Link to String Class</code></a>"
- },
- //Make sure the parameters are indented properly when the -link option is used.
- {BUG_ID + "-1" + FS + "pkg" + FS + "C.html",
- "(int&nbsp;p1," + NL +
-- " int&nbsp;p2," + NL +
-- " int&nbsp;p3)"
-+ " int&nbsp;p2," + NL +
-+ " int&nbsp;p3)"
- },
- {BUG_ID + "-1" + FS + "pkg" + FS + "C.html",
- "(int&nbsp;p1," + NL +
-- " int&nbsp;p2," + NL +
-- " " +
-- "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true\" " +
-- "title=\"class or interface in java.lang\">Object</A>&nbsp;p3)"
-+ " int&nbsp;p2," + NL +
-+ " <a href=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">" +
-+ "Object</a>&nbsp;p3)"
- },
- {BUG_ID + "-1" + FS + "java" + FS + "lang" + FS + "StringBuilderChild.html",
-- "public abstract class <STRONG>StringBuilderChild</STRONG>" + NL +
-- "extends <A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</A>"
-+ "<pre>public abstract class <strong>StringBuilderChild</strong>" + NL +
-+ "extends <a href=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true\" " +
-+ "title=\"class or interface in java.lang\">Object</a></pre>"
- },
-
- };
-@@ -79,8 +79,8 @@
-
- private static final String[][] TEST2 = {
- {BUG_ID + "-2" + FS + "pkg2" + FS + "C2.html",
-- "This is a link to <A HREF=\"../../" + BUG_ID + "-1/pkg/C.html?is-external=true\" " +
-- "title=\"class or interface in pkg\"><CODE>Class C</CODE></A>."
-+ "This is a link to <a href=\"../../" + BUG_ID + "-1/pkg/C.html?is-external=true\" " +
-+ "title=\"class or interface in pkg\"><code>Class C</code></a>."
- }
- };
- private static final String[][] NEGATED_TEST2 = NO_TEST;
-diff --git a/test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java b/test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java
---- langtools/test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java
-+++ langtools/test/com/sun/javadoc/testLinkTaglet/TestLinkTaglet.java
-@@ -46,20 +46,22 @@
- //Input for string search tests.
- private static final String[][] TEST = {
- {BUG_ID + FS + "pkg" + FS + "C.html",
-- "Qualified Link: <A HREF=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><CODE>C.InnerC</CODE></A>.<br/>\n" +
-- " Unqualified Link1: <A HREF=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><CODE>C.InnerC</CODE></A>.<br/>\n" +
-- " Unqualified Link2: <A HREF=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><CODE>C.InnerC</CODE></A>.<br/>\n" +
-- " Qualified Link: <A HREF=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><CODE>method(pkg.C.InnerC, pkg.C.InnerC2)</CODE></A>.<br/>\n" +
-- " Unqualified Link: <A HREF=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><CODE>method(C.InnerC, C.InnerC2)</CODE></A>.<br/>\n" +
-- " Unqualified Link: <A HREF=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><CODE>method(InnerC, InnerC2)</CODE></A>.<br/>"
-+ "Qualified Link: <a href=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><code>C.InnerC</code></a>.<br/>\n" +
-+ " Unqualified Link1: <a href=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><code>C.InnerC</code></a>.<br/>\n" +
-+ " Unqualified Link2: <a href=\"../pkg/C.InnerC.html\" title=\"class in pkg\"><code>C.InnerC</code></a>.<br/>\n" +
-+ " Qualified Link: <a href=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><code>method(pkg.C.InnerC, pkg.C.InnerC2)</code></a>.<br/>\n" +
-+ " Unqualified Link: <a href=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><code>method(C.InnerC, C.InnerC2)</code></a>.<br/>\n" +
-+ " Unqualified Link: <a href=\"../pkg/C.html#method(pkg.C.InnerC, pkg.C.InnerC2)\"><code>method(InnerC, InnerC2)</code></a>.<br/>"
- },
- {BUG_ID + FS + "pkg" + FS + "C.InnerC.html",
-- "Link to member in outer class: <A HREF=\"../pkg/C.html#MEMBER\"><CODE>C.MEMBER</CODE></A> <br/>\n" +
-- " Link to member in inner class: <A HREF=\"../pkg/C.InnerC2.html#MEMBER2\"><CODE>C.InnerC2.MEMBER2</CODE></A> <br/>\n" +
-- " Link to another inner class: <A HREF=\"../pkg/C.InnerC2.html\" title=\"class in pkg\"><CODE>C.InnerC2</CODE></A>"
-+ "Link to member in outer class: <a href=\"../pkg/C.html#MEMBER\"><code>C.MEMBER</code></a> <br/>\n" +
-+ " Link to member in inner class: <a href=\"../pkg/C.InnerC2.html#MEMBER2\"><code>C.InnerC2.MEMBER2</code></a> <br/>\n" +
-+ " Link to another inner class: <a href=\"../pkg/C.InnerC2.html\" title=\"class in pkg\"><code>C.InnerC2</code></a>"
- },
- {BUG_ID + FS + "pkg" + FS + "C.InnerC2.html",
-- "Enclosing class:</STRONG></DT><DD><A HREF=\"../pkg/C.html\" title=\"class in pkg\">C</A>"
-+ "<dl>" + NL + "<dt>Enclosing class:</dt>" + NL +
-+ "<dd><a href=\"../pkg/C.html\" title=\"class in pkg\">C</a></dd>" + NL +
-+ "</dl>"
- },
- };
- private static final String[][] NEGATED_TEST = {
-diff --git a/test/com/sun/javadoc/testLinkToSerialForm/TestLinkToSerialForm.java b/test/com/sun/javadoc/testLinkToSerialForm/TestLinkToSerialForm.java
---- langtools/test/com/sun/javadoc/testLinkToSerialForm/TestLinkToSerialForm.java
-+++ langtools/test/com/sun/javadoc/testLinkToSerialForm/TestLinkToSerialForm.java
-@@ -37,8 +37,8 @@
-
- private static final String BUG_ID = "4521661";
- private static final String[][] TEST = {
-- {BUG_ID + FS + "serialized-form.html", "<A NAME=\"pkg.C\">"},
-- {BUG_ID + FS + "pkg" + FS + "C.html", "<A HREF=\"../serialized-form.html#pkg.C\">"}
-+ {BUG_ID + FS + "serialized-form.html", "<a name=\"pkg.C\">"},
-+ {BUG_ID + FS + "pkg" + FS + "C.html", "<a href=\"../serialized-form.html#pkg.C\">"}
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
- private static final String[] ARGS =
-diff --git a/test/com/sun/javadoc/testMemberInheritence/TestMemberInheritence.java b/test/com/sun/javadoc/testMemberInheritence/TestMemberInheritence.java
---- langtools/test/com/sun/javadoc/testMemberInheritence/TestMemberInheritence.java
-+++ langtools/test/com/sun/javadoc/testMemberInheritence/TestMemberInheritence.java
-@@ -40,55 +40,57 @@
- private static final String[][] TEST = {
- //Public field should be inherited
- {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-- "<A HREF=\"../pkg/BaseClass.html#pubField\">"},
-+ "<a href=\"../pkg/BaseClass.html#pubField\">"},
-
- //Public method should be inherited
- {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-- "<A HREF=\"../pkg/BaseClass.html#pubMethod()\">"},
-+ "<a href=\"../pkg/BaseClass.html#pubMethod()\">"},
-
- //Public inner class should be inherited.
- {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-- "<A HREF=\"../pkg/BaseClass.pubInnerClass.html\" title=\"class in pkg\">"},
-+ "<a href=\"../pkg/BaseClass.pubInnerClass.html\" title=\"class in pkg\">"},
-
- //Protected field should be inherited
- {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-- "<A HREF=\"../pkg/BaseClass.html#proField\">"},
-+ "<a href=\"../pkg/BaseClass.html#proField\">"},
-
- //Protected method should be inherited
- {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-- "<A HREF=\"../pkg/BaseClass.html#proMethod()\">"},
-+ "<a href=\"../pkg/BaseClass.html#proMethod()\">"},
-
- //Protected inner class should be inherited.
- {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-- "<A HREF=\"../pkg/BaseClass.proInnerClass.html\" title=\"class in pkg\">"},
-+ "<a href=\"../pkg/BaseClass.proInnerClass.html\" title=\"class in pkg\">"},
-
- // New labels as of 1.5.0
- {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-- "<STRONG>Nested classes/interfaces inherited from class pkg." +
-- "<A HREF=\"../pkg/BaseClass.html\" title=\"class in pkg\">" +
-- "BaseClass</A></STRONG>"},
-+ "Nested classes/interfaces inherited from class&nbsp;pkg." +
-+ "<a href=\"../pkg/BaseClass.html\" title=\"class in pkg\">BaseClass</a>"},
- {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-- "<STRONG>Nested classes/interfaces inherited from interface pkg." +
-- "<A HREF=\"../pkg/BaseInterface.html\" title=\"interface in pkg\">" +
-- "BaseInterface</A></STRONG>"},
-+ "Nested classes/interfaces inherited from interface&nbsp;pkg." +
-+ "<a href=\"../pkg/BaseInterface.html\" title=\"interface in pkg\">BaseInterface</a>"},
-
- // Test overriding/implementing methods with generic parameters.
- {BUG_ID + FS + "pkg" + FS + "BaseClass.html",
-- "<DT><STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"../pkg/BaseInterface.html#getAnnotation(java.lang.Class)\">getAnnotation</A></CODE> in interface <CODE><A HREF=\"../pkg/BaseInterface.html\" title=\"interface in pkg\">BaseInterface</A></CODE></DD>"+NL+"</DL>"},
-+ "<dl>" + NL + "<dt><strong>Specified by:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg/BaseInterface.html#getAnnotation(java.lang.Class)\">" +
-+ "getAnnotation</a></code>&nbsp;in interface&nbsp;<code>" +
-+ "<a href=\"../pkg/BaseInterface.html\" title=\"interface in pkg\">" +
-+ "BaseInterface</a></code></dd>" + NL + "</dl>"},
-
- // Test diamond inheritence member summary (6256068)
- {BUG_ID + FS + "diamond" + FS + "Z.html",
-- "<TD><CODE><A HREF=\"../diamond/A.html#aMethod()\">aMethod</A></CODE></TD>"},
-+ "<code><a href=\"../diamond/A.html#aMethod()\">aMethod</a></code>"},
-
- // Test that doc is inherited from closed parent (6270645)
- {BUG_ID + FS + "inheritDist" + FS + "C.html",
-- "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m1-B</TD>"},
-+ "<div class=\"block\">m1-B</div>"},
-
- };
-
- private static final String[][] NEGATED_TEST = {
- {BUG_ID + FS + "pkg" + FS + "SubClass.html",
-- "<A HREF=\"../pkg/BaseClass.html#staticMethod()\">staticMethod</A></CODE>"},
-+ "<a href=\"../pkg/BaseClass.html#staticMethod()\">staticMethod</a></code>"},
- };
- private static final String[] ARGS =
- new String[] {
-diff --git a/test/com/sun/javadoc/testMemberSummary/TestMemberSummary.java b/test/com/sun/javadoc/testMemberSummary/TestMemberSummary.java
---- langtools/test/com/sun/javadoc/testMemberSummary/TestMemberSummary.java
-+++ langtools/test/com/sun/javadoc/testMemberSummary/TestMemberSummary.java
-@@ -48,21 +48,23 @@
- private static final String[][] TEST = {
- // Check return type in member summary.
- {BUG_ID + FS + "pkg" + FS + "PublicChild.html",
-- "<CODE>&nbsp;<A HREF=\"../pkg/PublicChild.html\" " +
-- "title=\"class in pkg\">PublicChild</A></CODE></FONT></TD>" + NL +
-- "<TD><CODE><STRONG><A HREF=\"../pkg/PublicChild.html#" +
-- "returnTypeTest()\">returnTypeTest</A></STRONG>()</CODE>"
-+ "<code><a href=\"../pkg/PublicChild.html\" title=\"class in pkg\">PublicChild</a></code></td>" + NL +
-+ "<td class=\"colLast\"><code><strong><a href=\"../pkg/PublicChild.html#returnTypeTest()\">" +
-+ "returnTypeTest</a></strong>()</code>"
- },
- // Check return type in member detail.
- {BUG_ID + FS + "pkg" + FS + "PublicChild.html",
-- "public <A HREF=\"../pkg/PublicChild.html\" " +
-- "title=\"class in pkg\">PublicChild</A> " +
-- "<STRONG>returnTypeTest</STRONG>()"
-+ "<pre>public&nbsp;<a href=\"../pkg/PublicChild.html\" title=\"class in pkg\">" +
-+ "PublicChild</a>&nbsp;returnTypeTest()</pre>"
- },
-
- // Legacy anchor dimensions (6290760)
- {BUG_ID + FS + "pkg2" + FS + "A.html",
-- "<A NAME=\"f(java.lang.Object[])\"><!-- --></A><A NAME=\"f(T[])\"><!-- --></A>"
-+ "<a name=\"f(java.lang.Object[])\">" + NL +
-+ "<!-- -->" + NL +
-+ "</a><a name=\"f(T[])\">" + NL +
-+ "<!-- -->" + NL +
-+ "</a>"
- },
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
-diff --git a/test/com/sun/javadoc/testNavagation/TestNavagation.java b/test/com/sun/javadoc/testNavagation/TestNavagation.java
---- langtools/test/com/sun/javadoc/testNavagation/TestNavagation.java
-+++ langtools/test/com/sun/javadoc/testNavagation/TestNavagation.java
-@@ -45,24 +45,24 @@
-
- //Input for string search tests.
- private static final String[][] TEST = {
-- {BUG_ID + FS + "pkg" + FS + "A.html", "&nbsp;PREV CLASS&nbsp;"},
-+ {BUG_ID + FS + "pkg" + FS + "A.html", "<li>PREV CLASS</li>"},
- {BUG_ID + FS + "pkg" + FS + "A.html",
-- "<A HREF=\"../pkg/C.html\" title=\"class in pkg\"><STRONG>NEXT CLASS</STRONG></A>"},
-+ "<a href=\"../pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">NEXT CLASS</span></a>"},
- {BUG_ID + FS + "pkg" + FS + "C.html",
-- "<A HREF=\"../pkg/A.html\" title=\"annotation in pkg\"><STRONG>PREV CLASS</STRONG></A>"},
-+ "<a href=\"../pkg/A.html\" title=\"annotation in pkg\"><span class=\"strong\">PREV CLASS</span></a>"},
- {BUG_ID + FS + "pkg" + FS + "C.html",
-- "<A HREF=\"../pkg/E.html\" title=\"enum in pkg\"><STRONG>NEXT CLASS</STRONG></A>"},
-+ "<a href=\"../pkg/E.html\" title=\"enum in pkg\"><span class=\"strong\">NEXT CLASS</span></a>"},
- {BUG_ID + FS + "pkg" + FS + "E.html",
-- "<A HREF=\"../pkg/C.html\" title=\"class in pkg\"><STRONG>PREV CLASS</STRONG></A>"},
-+ "<a href=\"../pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">PREV CLASS</span></a>"},
- {BUG_ID + FS + "pkg" + FS + "E.html",
-- "<A HREF=\"../pkg/I.html\" title=\"interface in pkg\"><STRONG>NEXT CLASS</STRONG></A>"},
-+ "<a href=\"../pkg/I.html\" title=\"interface in pkg\"><span class=\"strong\">NEXT CLASS</span></a>"},
- {BUG_ID + FS + "pkg" + FS + "I.html",
-- "<A HREF=\"../pkg/E.html\" title=\"enum in pkg\"><STRONG>PREV CLASS</STRONG></A>"},
-- {BUG_ID + FS + "pkg" + FS + "I.html", "&nbsp;NEXT CLASS"},
-+ "<a href=\"../pkg/E.html\" title=\"enum in pkg\"><span class=\"strong\">PREV CLASS</span></a>"},
-+ {BUG_ID + FS + "pkg" + FS + "I.html", "<li>NEXT CLASS</li>"},
- // Test for 4664607
- {BUG_ID + FS + "pkg" + FS + "I.html",
-- "<TD COLSPAN=2 BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" + NL +
-- "<A NAME=\"navbar_top_firstrow\"><!-- --></A>"}
-+ "<a href=\"#skip-navbar_top\" title=\"Skip navigation links\"></a><a name=\"navbar_top_firstrow\">" + NL +
-+ "<!-- -->" + NL + "</a>"}
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
-
-diff --git a/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java b/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java
---- langtools/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java
-+++ langtools/test/com/sun/javadoc/testNewLanguageFeatures/TestNewLanguageFeatures.java
-@@ -51,18 +51,18 @@
- // ENUM TESTING
- //=================================
- //Make sure enum header is correct.
-- {BUG_ID + FS + "pkg" + FS + "Coin.html", "Enum Coin</H2>"},
-+ {BUG_ID + FS + "pkg" + FS + "Coin.html", "Enum Coin</h2>"},
- //Make sure enum signature is correct.
-- {BUG_ID + FS + "pkg" + FS + "Coin.html", "public enum "+
-- "<STRONG>Coin</STRONG>" + NL + "extends java.lang.Enum&lt;" +
-- "<A HREF=\"../pkg/Coin.html\" title=\"enum in pkg\">Coin</A>&gt;"
-+ {BUG_ID + FS + "pkg" + FS + "Coin.html", "<pre>public enum <strong>Coin</strong>" + NL +
-+ "extends java.lang.Enum&lt;<a href=\"../pkg/Coin.html\" " +
-+ "title=\"enum in pkg\">Coin</a>&gt;</pre>"
- },
- //Check for enum constant section
-- {BUG_ID + FS + "pkg" + FS + "Coin.html", "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Enum Constant Summary</CAPTION>"},
-+ {BUG_ID + FS + "pkg" + FS + "Coin.html", "<caption><span>Enum Constants" +
-+ "</span><span class=\"tabEnd\">&nbsp;</span></caption>"},
- //Detail for enum constant
- {BUG_ID + FS + "pkg" + FS + "Coin.html",
-- "<STRONG><A HREF=\"../pkg/Coin.html#Dime\">Dime</A></STRONG>"},
-+ "<strong><a href=\"../pkg/Coin.html#Dime\">Dime</a></strong>"},
- //Automatically insert documentation for values() and valueOf().
- {BUG_ID + FS + "pkg" + FS + "Coin.html",
- "Returns an array containing the constants of this enum type,"},
-@@ -77,38 +77,39 @@
- //=================================
- //Make sure the header is correct.
- {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-- "Class TypeParameters&lt;E&gt;</H2>"},
-+ "Class TypeParameters&lt;E&gt;</h2>"},
- //Check class type parameters section.
- {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-- "<DT><STRONG>Type Parameters:</STRONG></DT><DD><CODE>E</CODE> - " +
-+ "<dt><span class=\"strong\">Type Parameters:</span></dt><dd><code>E</code> - " +
- "the type parameter for this class."},
- //Type parameters in @see/@link
- {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-- "<DT><STRONG>See Also:</STRONG></DT><DD><A HREF=\"../pkg/TypeParameters.html\" " +
-- "title=\"class in pkg\"><CODE>TypeParameters</CODE></A></DD></DL>"},
-+ "<dl><dt><span class=\"strong\">See Also:</span></dt><dd>" +
-+ "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-+ "<code>TypeParameters</code></a></dd></dl>"},
- //Method that uses class type parameter.
- {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-- "(<A HREF=\"../pkg/TypeParameters.html\" title=\"type " +
-- "parameter in TypeParameters\">E</A>&nbsp;param)"},
-+ "(<a href=\"../pkg/TypeParameters.html\" title=\"type " +
-+ "parameter in TypeParameters\">E</a>&nbsp;param)"},
- //Method type parameter section.
- {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-- "<STRONG>Type Parameters:</STRONG></DT><DD><CODE>T</CODE> - This is the first " +
-- "type parameter.</DD><DD><CODE>V</CODE> - This is the second type " +
-+ "<span class=\"strong\">Type Parameters:</span></dt><dd><code>T</code> - This is the first " +
-+ "type parameter.</dd><dd><code>V</code> - This is the second type " +
- "parameter."},
- //Signature of method with type parameters
- {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-- "public &lt;T extends java.util.List,V&gt; " +
-- "java.lang.String[] <STRONG>methodThatHasTypeParameters</STRONG>"},
-+ "public&nbsp;&lt;T extends java.util.List,V&gt;&nbsp;" +
-+ "java.lang.String[]&nbsp;methodThatHasTypeParameters"},
- //Wildcard testing.
- {BUG_ID + FS + "pkg" + FS + "Wildcards.html",
-- "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-- "TypeParameters</A>&lt;? super java.lang.String&gt;&nbsp;a"},
-+ "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-+ "TypeParameters</a>&lt;? super java.lang.String&gt;&nbsp;a"},
- {BUG_ID + FS + "pkg" + FS + "Wildcards.html",
-- "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-- "TypeParameters</A>&lt;? extends java.lang.StringBuffer&gt;&nbsp;b"},
-+ "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-+ "TypeParameters</a>&lt;? extends java.lang.StringBuffer&gt;&nbsp;b"},
- {BUG_ID + FS + "pkg" + FS + "Wildcards.html",
-- "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-- "TypeParameters</A>&nbsp;c"},
-+ "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-+ "TypeParameters</a>&nbsp;c"},
- //Bad type parameter warnings.
- {WARNING_OUTPUT, "warning - @param argument " +
- "\"<BadClassTypeParam>\" is not a type parameter name."},
-@@ -117,18 +118,27 @@
-
- //Signature of subclass that has type parameters.
- {BUG_ID + FS + "pkg" + FS + "TypeParameterSubClass.html",
-- "public class <STRONG>TypeParameterSubClass&lt;T extends java.lang.String&gt;" +
-- "</STRONG>" + NL + "extends <A HREF=\"../pkg/TypeParameterSuperClass.html\" " +
-- "title=\"class in pkg\">TypeParameterSuperClass</A>&lt;T&gt;"},
-+ "<pre>public class <strong>TypeParameterSubClass&lt;T extends " +
-+ "java.lang.String&gt;</strong>" + NL + "extends " +
-+ "<a href=\"../pkg/TypeParameterSuperClass.html\" title=\"class in pkg\">" +
-+ "TypeParameterSuperClass</a>&lt;T&gt;</pre>"},
-
- //Interface generic parameter substitution
- //Signature of subclass that has type parameters.
- {BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
-- "<STRONG>All Implemented Interfaces:</STRONG></DT> <DD><A HREF=\"../pkg/SubInterface.html\" title=\"interface in pkg\">SubInterface</A>&lt;E&gt;, <A HREF=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">SuperInterface</A>&lt;E&gt;</DD>"},
-+ "<dl>" + NL + "<dt>All Implemented Interfaces:</dt>" + NL +
-+ "<dd><a href=\"../pkg/SubInterface.html\" title=\"interface in pkg\">" +
-+ "SubInterface</a>&lt;E&gt;, <a href=\"../pkg/SuperInterface.html\" " +
-+ "title=\"interface in pkg\">SuperInterface</a>&lt;E&gt;</dd>" + NL +
-+ "</dl>"},
- {BUG_ID + FS + "pkg" + FS + "SuperInterface.html",
-- "<STRONG>All Known Subinterfaces:</STRONG></DT> <DD><A HREF=\"../pkg/SubInterface.html\" title=\"interface in pkg\">SubInterface</A>&lt;V&gt;</DD>"},
-+ "<dl>" + NL + "<dt>All Known Subinterfaces:</dt>" + NL +
-+ "<dd><a href=\"../pkg/SubInterface.html\" title=\"interface in pkg\">" +
-+ "SubInterface</a>&lt;V&gt;</dd>" + NL + "</dl>"},
- {BUG_ID + FS + "pkg" + FS + "SubInterface.html",
-- "<STRONG>All Superinterfaces:</STRONG></DT> <DD><A HREF=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">SuperInterface</A>&lt;V&gt;</DD>"},
-+ "<dl>" + NL + "<dt>All Superinterfaces:</dt>" + NL +
-+ "<dd><a href=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">" +
-+ "SuperInterface</a>&lt;V&gt;</dd>" + NL + "</dl>"},
-
- //=================================
- // VAR ARG TESTING
-@@ -137,39 +147,40 @@
- {BUG_ID + FS + "pkg" + FS + "VarArgs.html", "(int[][]...&nbsp;i)"},
- {BUG_ID + FS + "pkg" + FS + "VarArgs.html", "(int[]...)"},
- {BUG_ID + FS + "pkg" + FS + "VarArgs.html",
-- "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-- "TypeParameters</A>...&nbsp;t"},
-+ "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-+ "TypeParameters</a>...&nbsp;t"},
-
- //=================================
- // ANNOTATION TYPE TESTING
- //=================================
- //Make sure the summary links are correct.
- {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-- "SUMMARY:&nbsp;<A HREF=\"#annotation_type_required_element_summary\">" +
-- "REQUIRED</A>&nbsp;|&nbsp;<A HREF=\"#annotation_type_optional_element_summary\">" +
-- "OPTIONAL</A>"},
-+ "<li>SUMMARY:&nbsp;</li>" + NL +
-+ "<li><a href=\"#annotation_type_required_element_summary\">" +
-+ "REQUIRED</a>&nbsp;|&nbsp;</li>" + NL + "<li>" +
-+ "<a href=\"#annotation_type_optional_element_summary\">OPTIONAL</a></li>"},
- //Make sure the detail links are correct.
- {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-- "DETAIL:&nbsp;<A HREF=\"#annotation_type_element_detail\">ELEMENT</A>"},
-+ "<li>DETAIL:&nbsp;</li>" + NL +
-+ "<li><a href=\"#annotation_type_element_detail\">ELEMENT</a></li>"},
- //Make sure the heading is correct.
- {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-- "Annotation Type AnnotationType</H2>"},
-+ "Annotation Type AnnotationType</h2>"},
- //Make sure the signature is correct.
- {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-- "public @interface <STRONG>AnnotationType</STRONG>"},
-+ "public @interface <strong>AnnotationType</strong>"},
- //Make sure member summary headings are correct.
- {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Required Element Summary</CAPTION>"},
-+ "<h3>Required Element Summary</h3>"},
- {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-- "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Optional Element Summary</CAPTION>"},
-+ "<h3>Optional Element Summary</h3>"},
- //Make sure element detail heading is correct
- {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
- "Element Detail"},
- //Make sure default annotation type value is printed when necessary.
- {BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
-- "<STRONG>Default:</STRONG></DT><DD>\"unknown\"</DD>"},
-+ "<dl>" + NL + "<dt>Default:</dt>" + NL + "<dd>\"unknown\"</dd>" + NL +
-+ "</dl>"},
-
- //=================================
- // ANNOTATION TYPE USAGE TESTING
-@@ -177,51 +188,65 @@
-
- //PACKAGE
- {BUG_ID + FS + "pkg" + FS + "package-summary.html",
-- "<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Package Annotation\"," + NL +
-- " <A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)"},
-+ "<a href=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</a>(<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>=\"Package Annotation\"," + NL +
-+ " <a href=\"../pkg/AnnotationType.html#required()\">required</a>=1994)"},
-
- //CLASS
- {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-- "<FONT SIZE=\"-1\">" +
-- "<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Class Annotation\","+NL +
-- " <A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)"+NL +
-- "</FONT>public class <STRONG>AnnotationTypeUsage</STRONG>" + NL +
-- "extends java.lang.Object"},
-+ "<pre><a href=\"../pkg/AnnotationType.html\" " +
-+ "title=\"annotation in pkg\">@AnnotationType</a>(" +
-+ "<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>" +
-+ "=\"Class Annotation\"," + NL +
-+ " <a href=\"../pkg/AnnotationType.html#required()\">" +
-+ "required</a>=1994)" + NL + "public class <strong>" +
-+ "AnnotationTypeUsage</strong>" + NL + "extends java.lang.Object</pre>"},
-
- //FIELD
- {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-- "<FONT SIZE=\"-1\">" +
-- "<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Field Annotation\","+NL +
-- " <A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)"+NL +
-- "</FONT>public int <STRONG>field</STRONG>"},
-+ "<pre><a href=\"../pkg/AnnotationType.html\" " +
-+ "title=\"annotation in pkg\">@AnnotationType</a>(" +
-+ "<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>" +
-+ "=\"Field Annotation\"," + NL +
-+ " <a href=\"../pkg/AnnotationType.html#required()\">" +
-+ "required</a>=1994)" + NL + "public&nbsp;int field</pre>"},
-
- //CONSTRUCTOR
- {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-- "<FONT SIZE=\"-1\">" +
-- "<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Constructor Annotation\","+NL +
-- " <A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)"+NL +
-- "</FONT>public <STRONG>AnnotationTypeUsage</STRONG>()"},
-+ "<pre><a href=\"../pkg/AnnotationType.html\" " +
-+ "title=\"annotation in pkg\">@AnnotationType</a>(" +
-+ "<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>" +
-+ "=\"Constructor Annotation\"," + NL +
-+ " <a href=\"../pkg/AnnotationType.html#required()\">" +
-+ "required</a>=1994)" + NL + "public&nbsp;AnnotationTypeUsage()</pre>"},
-
- //METHOD
- {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-- "<FONT SIZE=\"-1\">" +
-- "<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Method Annotation\","+NL +
-- " <A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)"+NL +
-- "</FONT>public void <STRONG>method</STRONG>()"},
-+ "<pre><a href=\"../pkg/AnnotationType.html\" " +
-+ "title=\"annotation in pkg\">@AnnotationType</a>(" +
-+ "<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>" +
-+ "=\"Method Annotation\"," + NL +
-+ " <a href=\"../pkg/AnnotationType.html#required()\">" +
-+ "required</a>=1994)" + NL + "public&nbsp;void&nbsp;method()</pre>"},
-
- //METHOD PARAMS
- {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-- "<PRE>" + NL +
-- "public void <STRONG>methodWithParams</STRONG>(<FONT SIZE=\"-1\"><A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Parameter Annotation\",<A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)</FONT>" + NL +
-- " int&nbsp;documented," + NL +
-- " int&nbsp;undocmented)</PRE>"},
-+ "<pre>public&nbsp;void&nbsp;methodWithParams(" +
-+ "<a href=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
-+ "@AnnotationType</a>(<a href=\"../pkg/AnnotationType.html#optional()\">" +
-+ "optional</a>=\"Parameter Annotation\",<a " +
-+ "href=\"../pkg/AnnotationType.html#required()\">required</a>=1994)" + NL +
-+ " int&nbsp;documented," + NL +
-+ " int&nbsp;undocmented)</pre>"},
-
- //CONSTRUCTOR PARAMS
- {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-- "<PRE>" + NL +
-- "public <STRONG>AnnotationTypeUsage</STRONG>(<FONT SIZE=\"-1\"><A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Constructor Param Annotation\",<A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)</FONT>" + NL +
-- " int&nbsp;documented," + NL +
-- " int&nbsp;undocmented)</PRE>"},
-+ "<pre>public&nbsp;AnnotationTypeUsage(<a " +
-+ "href=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
-+ "@AnnotationType</a>(<a href=\"../pkg/AnnotationType.html#optional()\">" +
-+ "optional</a>=\"Constructor Param Annotation\",<a " +
-+ "href=\"../pkg/AnnotationType.html#required()\">required</a>=1994)" + NL +
-+ " int&nbsp;documented," + NL +
-+ " int&nbsp;undocmented)</pre>"},
-
- //=================================
- // ANNOTATION TYPE USAGE TESTING (All Different Types).
-@@ -229,59 +254,59 @@
-
- //Integer
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "<A HREF=\"../pkg1/A.html#d()\">d</A>=3.14,"},
-+ "<a href=\"../pkg1/A.html#d()\">d</a>=3.14,"},
-
- //Double
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "<A HREF=\"../pkg1/A.html#d()\">d</A>=3.14,"},
-+ "<a href=\"../pkg1/A.html#d()\">d</a>=3.14,"},
-
- //Boolean
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "<A HREF=\"../pkg1/A.html#b()\">b</A>=true,"},
-+ "<a href=\"../pkg1/A.html#b()\">b</a>=true,"},
-
- //String
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "<A HREF=\"../pkg1/A.html#s()\">s</A>=\"sigh\","},
-+ "<a href=\"../pkg1/A.html#s()\">s</a>=\"sigh\","},
-
- //Class
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "<A HREF=\"../pkg1/A.html#c()\">c</A>=<A HREF=\"../pkg2/Foo.html\" title=\"class in pkg2\">Foo.class</A>,"},
-+ "<a href=\"../pkg1/A.html#c()\">c</a>=<a href=\"../pkg2/Foo.html\" title=\"class in pkg2\">Foo.class</a>,"},
-
- //Bounded Class
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "<A HREF=\"../pkg1/A.html#w()\">w</A>=<A HREF=\"../pkg/TypeParameterSubClass.html\" title=\"class in pkg\">TypeParameterSubClass.class</A>,"},
-+ "<a href=\"../pkg1/A.html#w()\">w</a>=<a href=\"../pkg/TypeParameterSubClass.html\" title=\"class in pkg\">TypeParameterSubClass.class</a>,"},
-
- //Enum
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "<A HREF=\"../pkg1/A.html#e()\">e</A>=<A HREF=\"../pkg/Coin.html#Penny\">Penny</A>,"},
-+ "<a href=\"../pkg1/A.html#e()\">e</a>=<a href=\"../pkg/Coin.html#Penny\">Penny</a>,"},
-
- //Annotation Type
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "<A HREF=\"../pkg1/A.html#a()\">a</A>=<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"foo\",<A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994),"},
-+ "<a href=\"../pkg1/A.html#a()\">a</a>=<a href=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</a>(<a href=\"../pkg/AnnotationType.html#optional()\">optional</a>=\"foo\",<a href=\"../pkg/AnnotationType.html#required()\">required</a>=1994),"},
-
- //String Array
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "<A HREF=\"../pkg1/A.html#sa()\">sa</A>={\"up\",\"down\"},"},
-+ "<a href=\"../pkg1/A.html#sa()\">sa</a>={\"up\",\"down\"},"},
-
- //Primitive
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "<A HREF=\"../pkg1/A.html#primitiveClassTest()\">primitiveClassTest</A>=boolean.class,"},
-+ "<a href=\"../pkg1/A.html#primitiveClassTest()\">primitiveClassTest</a>=boolean.class,"},
-
- //XXX: Add array test case after this if fixed:
- //5020899: Incorrect internal representation of class-valued annotation elements
-
- //Make sure that annotations are surrounded by <pre> and </pre>
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "<PRE><FONT SIZE=\"-1\"><A HREF=\"../pkg1/A.html\" title=\"annotation in pkg1\">@A</A>"},
-+ "<pre><a href=\"../pkg1/A.html\" title=\"annotation in pkg1\">@A</a>"},
- {BUG_ID + FS + "pkg1" + FS + "B.html",
-- "</FONT>public interface <STRONG>B</STRONG></PRE>"},
-+ "public interface <strong>B</strong></pre>"},
-
-
- //==============================================================
- // Handle multiple bounds.
- //==============================================================
- {BUG_ID + FS + "pkg" + FS + "MultiTypeParameters.html",
-- "public &lt;T extends java.lang.Number & java.lang.Runnable&gt; T <STRONG>foo</STRONG>(T&nbsp;t)"},
-+ "public&nbsp;&lt;T extends java.lang.Number & java.lang.Runnable&gt;&nbsp;T&nbsp;foo(T&nbsp;t)"},
-
- //==============================================================
- // Test Class-Use Documenation for Type Parameters.
-@@ -289,347 +314,356 @@
-
- //ClassUseTest1: <T extends Foo & Foo2>
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type <A HREF=\"../../pkg2/Foo.html\" " +
-- "title=\"class in pkg2\">Foo</A></CAPTION>"
-+ "<caption><span>Classes in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">" +
-+ "Foo</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-- "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest1.html\" title=\"class in pkg2\">ClassUseTest1&lt;T extends Foo & Foo2&gt;</A></STRONG></CODE>"
-+ "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
-+ "ClassUseTest1.html\" title=\"class in pkg2\">ClassUseTest1" +
-+ "&lt;T extends Foo & Foo2&gt;</a></strong></code>&nbsp;</td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type <A HREF=\"../../pkg2/Foo.html\" " +
-- "title=\"class in pkg2\">Foo</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/Foo.html\" title=\"class in " +
-+ "pkg2\">Foo</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-- "<TD><CODE><STRONG>ClassUseTest1.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest1.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
-+ "<td class=\"colLast\"><span class=\"strong\">ClassUseTest1." +
-+ "</span><code><strong><a href=\"../../pkg2/" +
-+ "ClassUseTest1.html#method(T)\">method</a></strong>" +
-+ "(T&nbsp;t)</code>&nbsp;</td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Fields in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type <A HREF=\"../../pkg2/Foo.html\" " +
-- "title=\"class in pkg2\">Foo</A></CAPTION>"
-+ "<caption><span>Fields in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">" +
-+ "Foo</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html",
-- "<A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A>&lt;<A HREF=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</A>&gt;</CODE></FONT></TD>"
-+ "td class=\"colFirst\"><code><a href=\"../../pkg2/" +
-+ "ParamTest.html\" title=\"class in pkg2\">ParamTest</a>" +
-+ "&lt;<a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\"" +
-+ ">Foo</a>&gt;</code></td>"
- },
-
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Fields in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> declared as <A HREF=\"../../pkg2/ParamTest.html\" " +
-- "title=\"class in pkg2\">ParamTest</A></CAPTION>"
-+ "<caption><span>Fields in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> declared as <a href=\"../" +
-+ "../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest" +
-+ "</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-- "<A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A>&lt;<A HREF=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</A>&gt;</CODE></FONT></TD>"
-+ "<td class=\"colFirst\"><code><a href=\"../../pkg2/" +
-+ "ParamTest.html\" title=\"class in pkg2\">ParamTest</a>&lt;<a " +
-+ "href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</a" +
-+ ">&gt;</code></td>"
- },
-
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo2.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type <A HREF=\"../../pkg2/Foo2.html\" " +
-- "title=\"interface in pkg2\">Foo2</A></CAPTION>"
-+ "<caption><span>Classes in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/Foo2.html\" title=\"interface " +
-+ "in pkg2\">Foo2</a></span><span class=\"tabEnd\">&nbsp;" +
-+ "</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo2.html",
-- "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest1.html\" title=\"class in pkg2\">ClassUseTest1&lt;T extends Foo & Foo2&gt;</A></STRONG></CODE>"
-+ "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
-+ "ClassUseTest1.html\" title=\"class in pkg2\">" +
-+ "ClassUseTest1&lt;T extends Foo & Foo2&gt;</a></strong>" +
-+ "</code>&nbsp;</td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo2.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type <A HREF=\"../../pkg2/Foo2.html\" " +
-- "title=\"interface in pkg2\">Foo2</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/Foo2.html\" title=\"interface " +
-+ "in pkg2\">Foo2</a></span><span class=\"tabEnd\">&nbsp;" +
-+ "</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo2.html",
-- "<TD><CODE><STRONG>ClassUseTest1.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest1.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
-+ "<td class=\"colLast\"><span class=\"strong\">" +
-+ "ClassUseTest1.</span><code><strong><a href=\"../../" +
-+ "pkg2/ClassUseTest1.html#method(T)\">method</a></strong>" +
-+ "(T&nbsp;t)</code>&nbsp;</td>"
- },
-
- //ClassUseTest2: <T extends ParamTest<Foo3>>
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type <A HREF=\"../../pkg2/ParamTest.html\" " +
-- "title=\"class in pkg2\">ParamTest</A></CAPTION>"
-+ "<caption><span>Classes in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/ParamTest.html\" title=\"class " +
-+ "in pkg2\">ParamTest</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-- "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest2.html\" title=\"class in pkg2\">ClassUseTest2&lt;T extends ParamTest&lt;<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>&gt;&gt;</A></STRONG></CODE>"
-+ "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
-+ "ClassUseTest2.html\" title=\"class in pkg2\">ClassUseTest2&lt;T " +
-+ "extends ParamTest&lt;<a href=\"../../pkg2/Foo3.html\" title=\"class " +
-+ "in pkg2\">Foo3</a>&gt;&gt;</a></strong></code>&nbsp;</td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type <A HREF=\"../../pkg2/ParamTest.html\" " +
-- "title=\"class in pkg2\">ParamTest</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/ParamTest.html\" title=\"class " +
-+ "in pkg2\">ParamTest</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-- "<TD><CODE><STRONG>ClassUseTest2.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest2.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
-+ "<td class=\"colLast\"><span class=\"strong\">ClassUseTest2." +
-+ "</span><code><strong><a href=\"../../pkg2/" +
-+ "ClassUseTest2.html#method(T)\">method</a></strong>" +
-+ "(T&nbsp;t)</code>&nbsp;</td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Fields in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> declared as <A HREF=\"../../pkg2/ParamTest.html\" " +
-- "title=\"class in pkg2\">ParamTest</A></CAPTION>"
-+ "<caption><span>Fields in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> declared as <a href=\"../" +
-+ "../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest" +
-+ "</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-- "<A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A>&lt;<A HREF=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</A>&gt;</CODE></FONT></TD>"
-+ "<td class=\"colFirst\"><code><a href=\"../../pkg2/" +
-+ "ParamTest.html\" title=\"class in pkg2\">ParamTest</a>" +
-+ "&lt;<a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">" +
-+ "Foo</a>&gt;</code></td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type <A HREF=\"../../pkg2/ParamTest.html\" " +
-- "title=\"class in pkg2\">ParamTest</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/ParamTest.html\" title=\"class " +
-+ "in pkg2\">ParamTest</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html",
-- "&lt;T extends <A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A>&lt;<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>&gt;&gt;"
-+ "<td class=\"colFirst\"><code>&lt;T extends <a href=\"../" +
-+ "../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest" +
-+ "</a>&lt;<a href=\"../../pkg2/Foo3.html\" title=\"class in " +
-+ "pkg2\">Foo3</a>&gt;&gt;&nbsp;<br><a href=\"../../pkg2/" +
-+ "ParamTest.html\" title=\"class in pkg2\">ParamTest</a>" +
-+ "&lt;<a href=\"../../pkg2/Foo3.html\" title=\"class in " +
-+ "pkg2\">Foo3</a>&gt;</code></td>"
- },
-
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type <A HREF=\"../../pkg2/Foo3.html\" " +
-- "title=\"class in pkg2\">Foo3</A></CAPTION>"
-+ "<caption><span>Classes in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">" +
-+ "Foo3</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-- "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest2.html\" title=\"class in pkg2\">ClassUseTest2&lt;T extends ParamTest&lt;<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>&gt;&gt;</A></STRONG></CODE>"
-+ "<td class=\"colLast\"><code><strong><a href=\"../../" +
-+ "pkg2/ClassUseTest2.html\" title=\"class in pkg2\">" +
-+ "ClassUseTest2&lt;T extends ParamTest&lt;<a href=\"../../" +
-+ "pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</a>&gt;&gt;" +
-+ "</a></strong></code>&nbsp;</td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type <A HREF=\"../../pkg2/Foo3.html\" " +
-- "title=\"class in pkg2\">Foo3</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/Foo3.html\" title=\"class in " +
-+ "pkg2\">Foo3</a></span><span class=\"tabEnd\">&nbsp;" +
-+ "</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-- "<TD><CODE><STRONG>ClassUseTest2.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest2.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
-+ "<td class=\"colLast\"><span class=\"strong\">ClassUseTest2." +
-+ "</span><code><strong><a href=\"../../pkg2/" +
-+ "ClassUseTest2.html#method(T)\">method</a></strong>" +
-+ "(T&nbsp;t)</code>&nbsp;</td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> that return types with arguments of type " +
-- "<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">" +
-- "Foo3</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> that return types with " +
-+ "arguments of type <a href=\"../../pkg2/Foo3.html\" title" +
-+ "=\"class in pkg2\">Foo3</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html",
-- "&lt;T extends <A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A>&lt;<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>&gt;&gt;"
-+ "<td class=\"colFirst\"><code>&lt;T extends <a href=\"../../" +
-+ "pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</a>&lt;" +
-+ "<a href=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3" +
-+ "</a>&gt;&gt;&nbsp;<br><a href=\"../../pkg2/ParamTest.html\" " +
-+ "title=\"class in pkg2\">ParamTest</a>&lt;<a href=\"../../pkg2/" +
-+ "Foo3.html\" title=\"class in pkg2\">Foo3</a>&gt;</code></td>"
- },
-
- //ClassUseTest3: <T extends ParamTest2<List<? extends Foo4>>>
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type " +
-- "<A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
-- "ParamTest2</A></CAPTION>"
-+ "<caption><span>Classes in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/ParamTest2.html\" title=\"class " +
-+ "in pkg2\">ParamTest2</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-- "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest3.html\" title=\"class in pkg2\">ClassUseTest3&lt;T extends ParamTest2&lt;java.util.List&lt;? extends Foo4&gt;&gt;&gt;</A></STRONG></CODE>"
-+ "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" +
-+ "ClassUseTest3.html\" title=\"class in pkg2\">" +
-+ "ClassUseTest3&lt;T extends ParamTest2&lt;java.util.List" +
-+ "&lt;? extends Foo4&gt;&gt;&gt;</a></strong></code>&nbsp;</td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type " +
-- "<A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
-- "ParamTest2</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/ParamTest2.html\" title=\"class " +
-+ "in pkg2\">ParamTest2</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-- "<TD><CODE><STRONG>ClassUseTest3.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest3.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
-+ "<td class=\"colLast\"><span class=\"strong\">ClassUseTest3" +
-+ ".</span><code><strong><a href=\"../../pkg2/ClassUseTest3." +
-+ "html#method(T)\">method</a></strong>(T&nbsp;t)</code>&nbsp;</td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type " +
-- "<A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
-- "ParamTest2</A></CAPTION>"
-- },
-- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest2.html",
-- "&lt;T extends <A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">ParamTest2</A>&lt;java.util.List&lt;? extends <A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</A>&gt;&gt;&gt;"
-+ "<td class=\"colFirst\"><code>&lt;T extends <a href=\"../" +
-+ "../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
-+ "ParamTest2</a>&lt;java.util.List&lt;? extends <a href=\".." +
-+ "/../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</a>&gt;" +
-+ "&gt;&gt;&nbsp;<br><a href=\"../../pkg2/ParamTest2.html\" " +
-+ "title=\"class in pkg2\">ParamTest2</a>&lt;java.util.List" +
-+ "&lt;? extends <a href=\"../../pkg2/Foo4.html\" title=\"" +
-+ "class in pkg2\">Foo4</a>&gt;&gt;</code></td>"
- },
-
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Classes in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type " +
-- "<A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">" +
-- "Foo4</A></CAPTION>"
-+ "<caption><span>Classes in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/Foo4.html\" title=\"class in " +
-+ "pkg2\">Foo4</a></span><span class=\"tabEnd\">&nbsp;" +
-+ "</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-- "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest3.html\" title=\"class in pkg2\">ClassUseTest3&lt;T extends ParamTest2&lt;java.util.List&lt;? extends Foo4&gt;&gt;&gt;</A></STRONG></CODE>"
-+ "<td class=\"colLast\"><code><strong><a href=\"../../" +
-+ "pkg2/ClassUseTest3.html\" title=\"class in pkg2\">" +
-+ "ClassUseTest3&lt;T extends ParamTest2&lt;java.util.List" +
-+ "&lt;? extends Foo4&gt;&gt;&gt;</a></strong></code>&nbsp;</td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type parameters of type <A HREF=\"../../pkg2/Foo4.html\" " +
-- "title=\"class in pkg2\">Foo4</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type parameters of " +
-+ "type <a href=\"../../pkg2/Foo4.html\" title=\"class in " +
-+ "pkg2\">Foo4</a></span><span class=\"tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-- "<TD><CODE><STRONG>ClassUseTest3.</STRONG><STRONG><A HREF=\"../../pkg2/ClassUseTest3.html#method(T)\">method</A></STRONG>(T&nbsp;t)</CODE>"
-+ "<td class=\"colLast\"><span class=\"strong\">ClassUseTest3." +
-+ "</span><code><strong><a href=\"../../pkg2/ClassUseTest3." +
-+ "html#method(T)\">method</a></strong>(T&nbsp;t)</code>" +
-+ "&nbsp;</td>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Methods in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> that return types with arguments of type " +
-- "<A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">" +
-- "Foo4</A></CAPTION>"
-+ "<caption><span>Methods in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> that return types with " +
-+ "arguments of type <a href=\"../../pkg2/Foo4.html\" " +
-+ "title=\"class in pkg2\">Foo4</a></span><span class=\"" +
-+ "tabEnd\">&nbsp;</span></caption>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-- "&lt;T extends <A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">ParamTest2</A>&lt;java.util.List&lt;? extends <A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</A>&gt;&gt;&gt;"
-+ "<td class=\"colFirst\"><code>&lt;T extends <a href=\"../" +
-+ "../pkg2/ParamTest2.html\" title=\"class in pkg2\">" +
-+ "ParamTest2</a>&lt;java.util.List&lt;? extends <a href=\".." +
-+ "/../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</a>&gt;" +
-+ "&gt;&gt;&nbsp;<br><a href=\"../../pkg2/ParamTest2.html\" " +
-+ "title=\"class in pkg2\">ParamTest2</a>&lt;java.util.List" +
-+ "&lt;? extends <a href=\"../../pkg2/Foo4.html\" title=\"" +
-+ "class in pkg2\">Foo4</a>&gt;&gt;</code></td>"
- },
-
- //Type parameters in constructor and method args
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Method parameters in <A HREF=\"../../pkg2/package-summary.html\">pkg2" +
-- "</A> with type arguments of type <A HREF=\"../../pkg2/Foo4.html\" " +
-- "title=\"class in pkg2\">Foo4</A></CAPTION>" + NL +
-- "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Modifier and Type" +
-- "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Method and Description</TH>" + NL +
-- "</TR>" + NL +
-- "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-- "<TD ALIGN=\"right\" VALIGN=\"top\" WIDTH=\"1%\"><FONT SIZE=\"-1\">" + NL +
-- "<CODE>&nbsp;void</CODE></FONT></TD>" + NL +
-- "<TD><CODE><STRONG>ClassUseTest3.</STRONG><STRONG>" +
-- "<A HREF=\"../../pkg2/ClassUseTest3.html#method(java.util.Set)\">" +
-- "method</A></STRONG>(java.util.Set&lt;<A HREF=\"../../pkg2/Foo4.html\" " +
-- "title=\"class in pkg2\">Foo4</A>&gt;&nbsp;p)</CODE>"
-+ "<caption><span>Method parameters in <a href=\"../../pkg2/" +
-+ "package-summary.html\">pkg2</a> with type arguments of " +
-+ "type <a href=\"../../pkg2/Foo4.html\" title=\"class in " +
-+ "pkg2\">Foo4</a></span><span class=\"tabEnd\">&nbsp;" +
-+ "</span></caption>" + NL + "<tr>" + NL +
-+ "<th class=\"colFirst\" scope=\"col\">Modifier and Type</th>" + NL +
-+ "<th class=\"colLast\" scope=\"col\">Method and Description</th>" + NL +
-+ "</tr>" + NL + "<tbody>" + NL + "<tr class=\"altColor\">" + NL +
-+ "<td class=\"colFirst\"><code>void</code></td>" + NL +
-+ "<td class=\"colLast\"><span class=\"strong\">ClassUseTest3." +
-+ "</span><code><strong><a href=\"../../pkg2/ClassUseTest3." +
-+ "html#method(java.util.Set)\">method</a></strong>(java." +
-+ "util.Set&lt;<a href=\"../../pkg2/Foo4.html\" title=\"" +
-+ "class in pkg2\">Foo4</a>&gt;&nbsp;p)</code>&nbsp;</td>" + NL +
-+ "</tr>" + NL + "</tbody>"
- },
- {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html",
-- "<CAPTION CLASS=\"TableSubCaption\">" + NL +
-- "Constructor parameters in <A HREF=\"../../pkg2/package-summary.html\">" +
-- "pkg2</A> with type arguments of type <A HREF=\"../../pkg2/Foo4.html\" " +
-- "title=\"class in pkg2\">Foo4</A></CAPTION>" + NL +
-- "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Constructor and Description" +
-- "</TH>" + NL + "</TR>" + NL +
-- "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-- "<TD><CODE><STRONG><A HREF=\"../../pkg2/ClassUseTest3.html#ClassUseTest3" +
-- "(java.util.Set)\">ClassUseTest3</A></STRONG>(java.util.Set&lt;" +
-- "<A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">" +
-- "Foo4</A>&gt;&nbsp;p)</CODE>"
-+ "<caption><span>Constructor parameters in <a href=\"../../" +
-+ "pkg2/package-summary.html\">pkg2</a> with type arguments " +
-+ "of type <a href=\"../../pkg2/Foo4.html\" title=\"class in " +
-+ "pkg2\">Foo4</a></span><span class=\"tabEnd\">&nbsp;" +
-+ "</span></caption>"
- },
-
- //=================================
- // Annotatation Type Usage
- //=================================
- {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-- "Packages with annotations of type " +
-- "<A HREF=\"../../pkg/AnnotationType.html\" " +
-- "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-- "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Package" +
-- "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Description</TH>" + NL + "</TR>" + NL +
-- "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-- "<TD><A HREF=\"../../pkg/package-summary.html\"><STRONG>pkg" +
-- "</STRONG></A></TD>"
-+ "<caption><span>Packages with annotations of type <a href=\"" +
-+ "../../pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
-+ "AnnotationType</a></span><span class=\"tabEnd\">&nbsp;" +
-+ "</span></caption>"
- },
-
- {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-- "Classes in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-- "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-- "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-- "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Modifier and Type" +
-- "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Class and Description</TH>" + NL +
-- "</TR>" + NL +
-- "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-- "<TD ALIGN=\"right\" VALIGN=\"top\" WIDTH=\"1%\"><FONT SIZE=\"-1\">" + NL +
-- "<CODE>&nbsp;class</CODE></FONT></TD>" + NL +
-- "<TD><CODE><STRONG><A HREF=\"../../pkg/AnnotationTypeUsage.html\" " +
-- "title=\"class in pkg\">AnnotationTypeUsage</A></STRONG></CODE>"
-+ "<caption><span>Classes in <a href=\"../../pkg/" +
-+ "package-summary.html\">pkg</a> with annotations of type " +
-+ "<a href=\"../../pkg/AnnotationType.html\" title=\"" +
-+ "annotation in pkg\">AnnotationType</a></span><span class" +
-+ "=\"tabEnd\">&nbsp;</span></caption>"
- },
-
- {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-- "Fields in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-- "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-- "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-- "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Modifier and Type" +
-- "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Field and Description</TH>" + NL +
-- "</TR>" + NL +
-- "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-- "<TD ALIGN=\"right\" VALIGN=\"top\" WIDTH=\"1%\"><FONT SIZE=\"-1\">" + NL +
-- "<CODE>&nbsp;int</CODE></FONT></TD>" + NL +
-- "<TD><CODE><STRONG>AnnotationTypeUsage.</STRONG><STRONG>" +
-- "<A HREF=\"../../pkg/AnnotationTypeUsage.html#field\">field" +
-- "</A></STRONG></CODE>"
-+ "<caption><span>Fields in <a href=\"../../pkg/" +
-+ "package-summary.html\">pkg</a> with annotations of type " +
-+ "<a href=\"../../pkg/AnnotationType.html\" title=\"annotation " +
-+ "in pkg\">AnnotationType</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
-
- {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-- "Methods in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-- "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-- "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-- "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Modifier and Type" +
-- "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Method and Description</TH>" + NL +
-- "</TR>" + NL +
-- "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-- "<TD ALIGN=\"right\" VALIGN=\"top\" WIDTH=\"1%\"><FONT SIZE=\"-1\">" + NL +
-- "<CODE>&nbsp;void</CODE></FONT></TD>" + NL +
-- "<TD><CODE><STRONG>AnnotationTypeUsage.</STRONG><STRONG>" +
-- "<A HREF=\"../../pkg/AnnotationTypeUsage.html#method()\">" +
-- "method</A></STRONG>()</CODE>"
-+ "<caption><span>Methods in <a href=\"../../pkg/" +
-+ "package-summary.html\">pkg</a> with annotations of type " +
-+ "<a href=\"../../pkg/AnnotationType.html\" title=\"annotation " +
-+ "in pkg\">AnnotationType</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
-
- {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-- "Method parameters in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-- "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-- "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-- "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Modifier and Type" +
-- "</TH>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Method and Description</TH>" + NL +
-- "</TR>" + NL +
-- "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-- "<TD ALIGN=\"right\" VALIGN=\"top\" WIDTH=\"1%\"><FONT SIZE=\"-1\">" + NL +
-- "<CODE>&nbsp;void</CODE></FONT></TD>" + NL +
-- "<TD><CODE><STRONG>AnnotationTypeUsage.</STRONG><STRONG>" +
-- "<A HREF=\"../../pkg/AnnotationTypeUsage.html#methodWithParams" +
-- "(int, int)\">methodWithParams</A></STRONG>(int&nbsp;documented," + NL +
-- " int&nbsp;undocmented)</CODE>"
-+ "<caption><span>Method parameters in <a href=\"../../pkg/" +
-+ "package-summary.html\">pkg</a> with annotations of type " +
-+ "<a href=\"../../pkg/AnnotationType.html\" title=\"annotation " +
-+ "in pkg\">AnnotationType</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
-
- {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-- "Constructors in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-- "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-- "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-- "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Constructor and Description" +
-- "</TH>" + NL + "</TR>" + NL +
-- "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-- "<TD><CODE><STRONG><A HREF=\"../../pkg/" +
-- "AnnotationTypeUsage.html#AnnotationTypeUsage()\">" +
-- "AnnotationTypeUsage</A></STRONG>()</CODE>"
-+ "<caption><span>Constructors in <a href=\"../../pkg/" +
-+ "package-summary.html\">pkg</a> with annotations of type " +
-+ "<a href=\"../../pkg/AnnotationType.html\" title=\"annotation " +
-+ "in pkg\">AnnotationType</a></span><span class=\"tabEnd\">" +
-+ "&nbsp;</span></caption>"
- },
-
- {BUG_ID + FS + "pkg" + FS + "class-use" + FS + "AnnotationType.html",
-- "Constructor parameters in <A HREF=\"../../pkg/package-summary.html\">pkg" +
-- "</A> with annotations of type <A HREF=\"../../pkg/AnnotationType.html\" " +
-- "title=\"annotation in pkg\">AnnotationType</A></CAPTION>" + NL +
-- "<TR>" + NL + "<TH CLASS=\"TableHeader\" SCOPE=\"col\"" +
-- " NOWRAP>Constructor and Description" +
-- "</TH>" + NL + "</TR>" + NL +
-- "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" + NL +
-- "<TD><CODE><STRONG><A HREF=\"../../pkg/" +
-- "AnnotationTypeUsage.html#AnnotationTypeUsage(int, int)\">" +
-- "AnnotationTypeUsage</A></STRONG>(int&nbsp;documented," + NL +
-- " int&nbsp;undocmented)</CODE>"
-+ "<caption><span>Constructor parameters in <a href=\"../../" +
-+ "pkg/package-summary.html\">pkg</a> with annotations of " +
-+ "type <a href=\"../../pkg/AnnotationType.html\" title=\"" +
-+ "annotation in pkg\">AnnotationType</a></span><span class=\"" +
-+ "tabEnd\">&nbsp;</span></caption>"
- },
-
- //=================================
- // TYPE PARAMETER IN INDEX
- //=================================
- {BUG_ID + FS + "index-all.html",
-- "<A HREF=\"./pkg2/Foo.html#method(java.util.Vector)\"><STRONG>method(Vector&lt;Object&gt;)</STRONG></A>"
-+ "<span class=\"strong\"><a href=\"./pkg2/Foo.html#method(java.util.Vector)\">" +
-+ "method(Vector&lt;Object&gt;)</a></span>"
- },
- //=================================
- // TYPE PARAMETER IN INDEX
- //=================================
- {BUG_ID + FS + "index-all.html",
-- "<A HREF=\"./pkg2/Foo.html#method(java.util.Vector)\"><STRONG>method(Vector&lt;Object&gt;)</STRONG></A>"
-+ "<span class=\"strong\"><a href=\"./pkg2/Foo.html#method(java.util.Vector)\">" +
-+ "method(Vector&lt;Object&gt;)</a></span>"
- },
- };
- private static final String[][] NEGATED_TEST = {
-@@ -637,15 +671,15 @@
- // ENUM TESTING
- //=================================
- //NO constructor section
-- {BUG_ID + FS + "pkg" + FS + "Coin.html", "<STRONG>Constructor Summary</STRONG>"},
-+ {BUG_ID + FS + "pkg" + FS + "Coin.html", "<span class=\"strong\">Constructor Summary</span>"},
- //=================================
- // TYPE PARAMETER TESTING
- //=================================
- //No type parameters in class frame.
- {BUG_ID + FS + "allclasses-frame.html",
-- "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-- "TypeParameters</A>&lt;<A HREF=\"../pkg/TypeParameters.html\" " +
-- "title=\"type parameter in TypeParameters\">E</A>&gt;"
-+ "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" +
-+ "TypeParameters</a>&lt;<a href=\"../pkg/TypeParameters.html\" " +
-+ "title=\"type parameter in TypeParameters\">E</a>&gt;"
- },
-
- //==============================================================
-@@ -654,31 +688,27 @@
-
- //CLASS
- {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-- "<FONT SIZE=\"-1\">" + NL +
-- "<A HREF=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</A>(<A HREF=\"../pkg/AnnotationType.html#optional\">optional</A>=\"Class Annotation\"," + NL +
-- " <A HREF=\"../pkg/AnnotationType.html#required\">required</A>=1994)" + NL +
-- "</FONT>public class <STRONG>AnnotationTypeUsage</STRONG></DT><DT>extends java.lang.Object</DT></DL>"},
-+ "<a href=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</a>(<a href=\"../pkg/AnnotationType.html#optional\">optional</a>=\"Class Annotation\"," + NL +
-+ " <a href=\"../pkg/AnnotationType.html#required\">required</a>=1994)" + NL +
-+ "public class <strong>AnnotationTypeUsage</strong></dt><dt>extends java.lang.Object</dt>"},
-
- //FIELD
- {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-- "<FONT SIZE=\"-1\">" + NL +
-- "<A HREF=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</A>(<A HREF=\"../pkg/AnnotationType.html#optional\">optional</A>=\"Field Annotation\"," + NL +
-- " <A HREF=\"../pkg/AnnotationType.html#required\">required</A>=1994)" + NL +
-- "</FONT>public int <STRONG>field</STRONG>"},
-+ "<a href=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</a>(<a href=\"../pkg/AnnotationType.html#optional\">optional</a>=\"Field Annotation\"," + NL +
-+ " <a href=\"../pkg/AnnotationType.html#required\">required</a>=1994)" + NL +
-+ "public int <strong>field</strong>"},
-
- //CONSTRUCTOR
- {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-- "<FONT SIZE=\"-1\">" + NL +
-- "<A HREF=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</A>(<A HREF=\"../pkg/AnnotationType.html#optional\">optional</A>=\"Constructor Annotation\"," + NL +
-- " <A HREF=\"../pkg/AnnotationType.html#required\">required</A>=1994)" + NL +
-- "</FONT>public <STRONG>AnnotationTypeUsage</STRONG>()"},
-+ "<a href=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</a>(<a href=\"../pkg/AnnotationType.html#optional\">optional</a>=\"Constructor Annotation\"," + NL +
-+ " <a href=\"../pkg/AnnotationType.html#required\">required</a>=1994)" + NL +
-+ "public <strong>AnnotationTypeUsage</strong>()"},
-
- //METHOD
- {BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
-- "<FONT SIZE=\"-1\">" + NL +
-- "<A HREF=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</A>(<A HREF=\"../pkg/AnnotationType.html#optional\">optional</A>=\"Method Annotation\"," + NL +
-- " <A HREF=\"../pkg/AnnotationType.html#required\">required</A>=1994)" + NL +
-- "</FONT>public void <STRONG>method</STRONG>()"},
-+ "<a href=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</a>(<a href=\"../pkg/AnnotationType.html#optional\">optional</a>=\"Method Annotation\"," + NL +
-+ " <a href=\"../pkg/AnnotationType.html#required\">required</a>=1994)" + NL +
-+ "public void <strong>method</strong>()"},
-
- //=================================
- // Make sure annotation types do not
-diff --git a/test/com/sun/javadoc/testOverridenMethods/TestMultiInheritence.java b/test/com/sun/javadoc/testOverridenMethods/TestMultiInheritence.java
---- langtools/test/com/sun/javadoc/testOverridenMethods/TestMultiInheritence.java
-+++ langtools/test/com/sun/javadoc/testOverridenMethods/TestMultiInheritence.java
-@@ -46,27 +46,34 @@
- //Method foo() is inherited from BOTH I2 and I3
- private static final String[][] TEST = {
- {BUG_ID + FS + "pkg3" + FS + "I1.html",
-- "Methods inherited from interface pkg3." + "<A HREF=\"../pkg3/I2.html\" title=\"interface in pkg3\">I2</A>"},
-+ "Methods inherited from interface&nbsp;pkg3." +
-+ "<a href=\"../pkg3/I2.html\" title=\"interface in pkg3\">" +
-+ "I2</a>"},
- {BUG_ID + FS + "pkg3" + FS +"I1.html",
-- "Methods inherited from interface pkg3." +
-- "<A HREF=\"../pkg3/I3.html\" title=\"interface in pkg3\">I3</A>"},
-+ "Methods inherited from interface&nbsp;pkg3." +
-+ "<a href=\"../pkg3/I3.html\" title=\"interface in pkg3\">" +
-+ "I3</a>"},
- {BUG_ID + FS + "pkg3" + FS + "I0.html",
-- "Methods inherited from interface pkg3." +
-- "<A HREF=\"../pkg3/I2.html\" title=\"interface in pkg3\">I2</A>"},
-+ "Methods inherited from interface&nbsp;pkg3." +
-+ "<a href=\"../pkg3/I2.html\" title=\"interface in pkg3\">" +
-+ "I2</a>"},
- {BUG_ID + FS + "pkg3" + FS +"I0.html",
-- "Methods inherited from interface pkg3." +
-- "<A HREF=\"../pkg3/I3.html\" title=\"interface in pkg3\">I3</A>"},
-+ "Methods inherited from interface&nbsp;pkg3." +
-+ "<a href=\"../pkg3/I3.html\" title=\"interface in pkg3\">" +
-+ "I3</a>"},
- };
-
- //Method foo() is NOT inherited from I4 because it is overriden by
- //I3.
- private static final String[][] NEGATED_TEST = {
- {BUG_ID + FS + "pkg3" + FS + "I1.html",
-- "Methods inherited from interface pkg3." +
-- "<A HREF=\"../pkg3/I4.html\" title=\"interface in pkg3\">I4</A>"},
-+ "Methods inherited from interface&nbsp;pkg3." +
-+ "<a href=\"../pkg3/I4.html\" title=\"interface in pkg3\">" +
-+ "I4</a>"},
- {BUG_ID + FS + "pkg3" + FS + "I0.html",
-- "Methods inherited from interface pkg3." +
-- "<A HREF=\"../pkg3/I4.html\" title=\"interface in pkg3\">I4</A>"},
-+ "Methods inherited from interface&nbsp;pkg3." +
-+ "<a href=\"../pkg3/I4.html\" title=\"interface in pkg3\">" +
-+ "I4</a>"},
- };
-
- /**
-diff --git a/test/com/sun/javadoc/testOverridenMethods/TestOverridenMethodDocCopy.java b/test/com/sun/javadoc/testOverridenMethods/TestOverridenMethodDocCopy.java
---- langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenMethodDocCopy.java
-+++ langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenMethodDocCopy.java
-@@ -46,9 +46,9 @@
- //Input for string search tests.
- private static final String[][] TEST = {
- {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-- "<STRONG>Description copied from class: <CODE>" +
-- "<A HREF=\"../pkg1/BaseClass.html#overridenMethodWithDocsToCopy()\">" +
-- "BaseClass</A></CODE></STRONG>"
-+ "<strong>Description copied from class:&nbsp;<code>" +
-+ "<a href=\"../pkg1/BaseClass.html#overridenMethodWithDocsToCopy()\">" +
-+ "BaseClass</a></code></strong>"
- }
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
-diff --git a/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethods.java b/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethods.java
---- langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethods.java
-+++ langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethods.java
-@@ -40,11 +40,13 @@
- private static final String[][] TEST = {
- //The public method should be overriden
- {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod"},
-
- //The public method in different package should be overriden
- {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"}
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod"}
- };
-
- private static final String[][] NEGATED_TEST = {
-@@ -52,20 +54,23 @@
- //The package private method should be overriden since the base and sub class are in the same
- //package. However, the link should not show up because the package private methods are not documented.
- {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod"},
-
- //The private method in should not be overriden
- {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod"},
-
- //The private method in different package should not be overriden
- {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod"},
-
- //The package private method should not be overriden since the base and sub class are in
- //different packages.
- {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
-+ "Overrides:</strong></dt><dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod"}
- };
-
- private static final String[] ARGS =
-diff --git a/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java b/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java
---- langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java
-+++ langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPackageFlag.java
-@@ -40,32 +40,44 @@
- private static final String[][] TEST = {
- //The public method should be overriden
- {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod()\">" +
-+ "publicMethod</a></code>&nbsp;in class&nbsp;<code>" +
-+ "<a href=\"../pkg1/BaseClass.html\" title=\"class in pkg1\">BaseClass</a></code></dd>"},
-
- //The public method in different package should be overriden
- {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod()\">" +
-+ "publicMethod</a></code>&nbsp;in class&nbsp;<code>" +
-+ "<a href=\"../pkg1/BaseClass.html\" title=\"class in pkg1\">BaseClass</a></code></dd>"},
-
- //The package private method should be overriden since the base and sub class are in the same
- //package.
- {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod()\">" +
-+ "packagePrivateMethod</a></code>&nbsp;in class&nbsp;<code>" +
-+ "<a href=\"../pkg1/BaseClass.html\" title=\"class in pkg1\">BaseClass</a></code></dd>"}
- };
-
- private static final String[][] NEGATED_TEST = {
-
- //The private method in should not be overriden
- {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod()\">"},
-
- //The private method in different package should not be overriden
- {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod()\">"},
-
- //The package private method should not be overriden since the base and sub class are in
- //different packages.
- {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod()\">"},
- };
-
- private static final String[] ARGS =
-diff --git a/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java b/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java
---- langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java
-+++ langtools/test/com/sun/javadoc/testOverridenMethods/TestOverridenPrivateMethodsWithPrivateFlag.java
-@@ -40,32 +40,38 @@
- private static final String[][] TEST = {
- //The public method should be overriden
- {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod"},
-
- //The package private method should be overriden since the base and sub class are in the same
- //package.
- {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod"},
-
- //The public method in different package should be overriden
- {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#publicMethod"},
- };
-
- private static final String[][] NEGATED_TEST = {
-
- //The private method in should not be overriden
- {BUG_ID + FS + "pkg1" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod"},
-
- //The private method in different package should not be overriden
- {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#privateMethod"},
-
- //The package private method should not be overriden since the base and sub class are in
- //different packages.
- {BUG_ID + FS + "pkg2" + FS + "SubClass.html",
-- "Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg1/BaseClass.html#packagePrivateMethod"}
-
-
- };
-diff --git a/test/com/sun/javadoc/testPackagePage/TestPackagePage.java b/test/com/sun/javadoc/testPackagePage/TestPackagePage.java
---- langtools/test/com/sun/javadoc/testPackagePage/TestPackagePage.java
-+++ langtools/test/com/sun/javadoc/testPackagePage/TestPackagePage.java
-@@ -43,37 +43,32 @@
- },
- //With just one package, all general pages link to the single package page.
- {BUG_ID + "-1" + FS + "com" + FS + "pkg" + FS + "C.html",
-- "<A HREF=\"../../com/pkg/package-summary.html\">" +
-- "<FONT CLASS=\"NavBarFont1\"><STRONG>Package</STRONG></FONT></A>"
-+ "<a href=\"../../com/pkg/package-summary.html\">Package</a>"
- },
- {BUG_ID + "-1" + FS + "com" + FS + "pkg" + FS + "package-tree.html",
-- "<A HREF=\"../../com/pkg/package-summary.html\">" +
-- "<FONT CLASS=\"NavBarFont1\"><STRONG>Package</STRONG></FONT></A>"
-+ "<li><a href=\"../../com/pkg/package-summary.html\">Package</a></li>"
- },
- {BUG_ID + "-1" + FS + "deprecated-list.html",
-- "<A HREF=\"com/pkg/package-summary.html\">" +
-- "<FONT CLASS=\"NavBarFont1\"><STRONG>Package</STRONG></FONT></A>"
-+ "<li><a href=\"com/pkg/package-summary.html\">Package</a></li>"
- },
- {BUG_ID + "-1" + FS + "index-all.html",
-- "<A HREF=\"./com/pkg/package-summary.html\">" +
-- "<FONT CLASS=\"NavBarFont1\"><STRONG>Package</STRONG></FONT></A>"
-+ "<li><a href=\"./com/pkg/package-summary.html\">Package</a></li>"
- },
- {BUG_ID + "-1" + FS + "help-doc.html",
-- "<A HREF=\"com/pkg/package-summary.html\">" +
-- "<FONT CLASS=\"NavBarFont1\"><STRONG>Package</STRONG></FONT></A>"
-+ "<li><a href=\"com/pkg/package-summary.html\">Package</a></li>"
- },
- };
-
- private static final String[][] TEST2 = {
- //With multiple packages, there is no package link in general pages.
- {BUG_ID + "-2" + FS + "deprecated-list.html",
-- " <FONT CLASS=\"NavBarFont1\">Package</FONT>&nbsp;"
-+ "<li>Package</li>"
- },
- {BUG_ID + "-2" + FS + "index-all.html",
-- " <FONT CLASS=\"NavBarFont1\">Package</FONT>&nbsp;"
-+ "<li>Package</li>"
- },
- {BUG_ID + "-2" + FS + "help-doc.html",
-- " <FONT CLASS=\"NavBarFont1\">Package</FONT>&nbsp;"
-+ "<li>Package</li>"
- },
- };
-
-diff --git a/test/com/sun/javadoc/testParamTaglet/TestParamTaglet.java b/test/com/sun/javadoc/testParamTaglet/TestParamTaglet.java
---- langtools/test/com/sun/javadoc/testParamTaglet/TestParamTaglet.java
-+++ langtools/test/com/sun/javadoc/testParamTaglet/TestParamTaglet.java
-@@ -48,20 +48,20 @@
- private static final String[][] TEST = {
- //Regular param tags.
- {BUG_ID + FS + "pkg" + FS + "C.html",
-- "<STRONG>Parameters:</STRONG></DT><DD><CODE>param1</CODE> - testing 1 2 3.</DD>" +
-- "<DD><CODE>param2</CODE> - testing 1 2 3."
-+ "<span class=\"strong\">Parameters:</span></dt><dd><code>param1</code> - testing 1 2 3.</dd>" +
-+ "<dd><code>param2</code> - testing 1 2 3."
- },
- //Param tags that don't match with any real parameters.
- {BUG_ID + FS + "pkg" + FS + "C.html",
-- "<STRONG>Parameters:</STRONG></DT><DD><CODE><I>p1</I></CODE> - testing 1 2 3.</DD>" +
-- "<DD><CODE><I>p2</I></CODE> - testing 1 2 3."
-+ "<span class=\"strong\">Parameters:</span></dt><dd><code><I>p1</I></code> - testing 1 2 3.</dd>" +
-+ "<dd><code><I>p2</I></code> - testing 1 2 3."
- },
- //{@inherit} doc misuse does not cause doclet to throw exception.
- // Param is printed with nothing inherited.
- //XXX: in the future when Configuration is available during doc inheritence,
- //print a warning for this mistake.
- {BUG_ID + FS + "pkg" + FS + "C.html",
-- "<CODE><I>inheritBug</I></CODE> -"
-+ "<code><I>inheritBug</I></code> -"
- },
-
- };
-diff --git a/test/com/sun/javadoc/testPrivateClasses/TestPrivateClasses.java b/test/com/sun/javadoc/testPrivateClasses/TestPrivateClasses.java
---- langtools/test/com/sun/javadoc/testPrivateClasses/TestPrivateClasses.java
-+++ langtools/test/com/sun/javadoc/testPrivateClasses/TestPrivateClasses.java
-@@ -58,50 +58,50 @@
- private static final String[][] TEST1 = {
- // Field inheritence from non-public superclass.
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-- "<A HREF=\"../pkg/PublicChild.html#fieldInheritedFromParent\">" +
-- "fieldInheritedFromParent</A>"
-+ "<a href=\"../pkg/PublicChild.html#fieldInheritedFromParent\">" +
-+ "fieldInheritedFromParent</a>"
- },
-
- // Method inheritence from non-public superclass.
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-- "<A HREF=\"../pkg/PublicChild.html#methodInheritedFromParent(int)\">" +
-- "methodInheritedFromParent</A>"
-+ "<a href=\"../pkg/PublicChild.html#methodInheritedFromParent(int)\">" +
-+ "methodInheritedFromParent</a>"
- },
-
- // Field inheritence from non-public superinterface.
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicInterface.html",
-- "<A HREF=\"../pkg/PublicInterface.html#fieldInheritedFromInterface\">" +
-- "fieldInheritedFromInterface</A>"
-+ "<a href=\"../pkg/PublicInterface.html#fieldInheritedFromInterface\">" +
-+ "fieldInheritedFromInterface</a>"
- },
-
- // Method inheritence from non-public superinterface.
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicInterface.html",
-- "<A HREF=\"../pkg/PublicInterface.html#methodInterface(int)\">" +
-- "methodInterface</A>"
-+ "<a href=\"../pkg/PublicInterface.html#methodInterface(int)\">" +
-+ "methodInterface</a>"
- },
-
- // private class does not show up in tree
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-- "<PRE>" + NL +
-- "java.lang.Object" + NL +
-- " <IMG SRC=\"../resources/inherit.gif\" " +
-- "ALT=\"extended by \"><STRONG>pkg.PublicChild</STRONG>" + NL +
-- "</PRE>"
-+ "<ul class=\"inheritance\">" + NL + "<li>java.lang.Object</li>" + NL +
-+ "<li>" + NL + "<ul class=\"inheritance\">" + NL + "<li>pkg.PublicChild</li>" + NL +
-+ "</ul>" + NL + "</li>" + NL + "</ul>"
- },
-
- // Method is documented as though it is declared in the inheriting method.
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-- "public void <STRONG>methodInheritedFromParent</STRONG>(int&nbsp;p1)"
-+ "<pre>public&nbsp;void&nbsp;methodInheritedFromParent(int&nbsp;p1)"
- },
-
- //Make sure implemented interfaces from private superclass are inherited
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicInterface.html",
-- "<STRONG>All Known Implementing Classes:</STRONG></DT> <DD><A HREF=\"../pkg/PublicChild.html\" " +
-- "title=\"class in pkg\">PublicChild</A>"},
-+ "<dl>" + NL + "<dt>All Known Implementing Classes:</dt>" + NL +
-+ "<dd><a href=\"../pkg/PublicChild.html\" title=\"class in pkg\">" +
-+ "PublicChild</a></dd>" + NL + "</dl>"},
-
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-- "<STRONG>All Implemented Interfaces:</STRONG></DT> <DD><A HREF=\"../pkg/PublicInterface.html\" " +
-- "title=\"interface in pkg\">PublicInterface</A>"},
-+ "<dl>" + NL + "<dt>All Implemented Interfaces:</dt>" + NL +
-+ "<dd><a href=\"../pkg/PublicInterface.html\" title=\"interface in pkg\">" +
-+ "PublicInterface</a></dd>" + NL + "</dl>"},
-
- //Generic interface method test.
- {BUG_ID + "-1" + FS + "pkg2" + FS + "C.html",
-@@ -110,12 +110,12 @@
- private static final String[][] NEGATED_TEST1 = {
- // Should not document that a method overrides method from private class.
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-- "<STRONG>Overrides:</STRONG>"},
-+ "<strong>Overrides:</strong>"},
- // Should not document that a method specified by private interface.
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
-- "<STRONG>Specified by:</STRONG>"},
-+ "<strong>Specified by:</strong>"},
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicInterface.html",
-- "<STRONG>Specified by:</STRONG>"},
-+ "<strong>Specified by:</strong>"},
- // Should not mention that any documentation was copied.
- {BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
- "Description copied from"},
-@@ -137,64 +137,64 @@
- //Do not inherit private interface method with generic parameters.
- //This method has been implemented.
- {BUG_ID + "-1" + FS + "pkg2" + FS + "C.html",
-- "<STRONG><A HREF=\"../pkg2/I.html#hello(T)\">hello</A></STRONG>"},
-+ "<strong><a href=\"../pkg2/I.html#hello(T)\">hello</a></strong>"},
- };
-
- // Test output when -private flag is used.
- private static final String[][] TEST2 = {
- // Field inheritence from non-public superclass.
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-- "Fields inherited from class " +
-- "pkg.<A HREF=\"../pkg/PrivateParent.html\" " +
-- "title=\"class in pkg\">PrivateParent</A>"
-+ "Fields inherited from class&nbsp;pkg." +
-+ "<a href=\"../pkg/PrivateParent.html\" title=\"class in pkg\">" +
-+ "PrivateParent</a>"
- },
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-- "<A HREF=\"../pkg/PrivateParent.html#fieldInheritedFromParent\">" +
-- "fieldInheritedFromParent</A>"
-+ "<a href=\"../pkg/PrivateParent.html#fieldInheritedFromParent\">" +
-+ "fieldInheritedFromParent</a>"
- },
- // Field inheritence from non-public superinterface.
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicInterface.html",
-- "Fields inherited from interface " +
-- "pkg.<A HREF=\"../pkg/PrivateInterface.html\" " +
-- "title=\"interface in pkg\">PrivateInterface</A>"
-+ "Fields inherited from interface&nbsp;pkg." +
-+ "<a href=\"../pkg/PrivateInterface.html\" title=\"interface in pkg\">" +
-+ "PrivateInterface</a>"
- },
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicInterface.html",
-- "<A HREF=\"../pkg/PrivateInterface.html#fieldInheritedFromInterface\">" +
-- "fieldInheritedFromInterface</A>"
-+ "<a href=\"../pkg/PrivateInterface.html#fieldInheritedFromInterface\">" +
-+ "fieldInheritedFromInterface</a>"
- },
- // Method inheritence from non-public superclass.
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-- "Methods inherited from class " +
-- "pkg.<A HREF=\"../pkg/PrivateParent.html\" " +
-- "title=\"class in pkg\">PrivateParent</A>"
-+ "Methods inherited from class&nbsp;pkg." +
-+ "<a href=\"../pkg/PrivateParent.html\" title=\"class in pkg\">" +
-+ "PrivateParent</a>"
- },
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-- "<A HREF=\"../pkg/PrivateParent.html#methodInheritedFromParent(int)\">" +
-- "methodInheritedFromParent</A>"
-+ "<a href=\"../pkg/PrivateParent.html#methodInheritedFromParent(int)\">" +
-+ "methodInheritedFromParent</a>"
- },
- // Should document that a method overrides method from private class.
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-- "<STRONG>Overrides:</STRONG></DT><DD><CODE>" +
-- "<A HREF=\"../pkg/PrivateParent.html#methodOverridenFromParent(char[], int, T, V, java.util.List)\">" +
-- "methodOverridenFromParent</A></CODE> in class <CODE>" +
-- "<A HREF=\"../pkg/PrivateParent.html\" title=\"class in pkg\">" +
-- "PrivateParent</A></CODE></DD>" + NL + "</DL>"},
-+ "<dt><strong>Overrides:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg/PrivateParent.html#methodOverridenFromParent(char[], int, T, V, java.util.List)\">" +
-+ "methodOverridenFromParent</a></code>&nbsp;in class&nbsp;<code>" +
-+ "<a href=\"../pkg/PrivateParent.html\" title=\"class in pkg\">" +
-+ "PrivateParent</a></code></dd>"},
- // Should document that a method is specified by private interface.
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-- "<STRONG>Specified by:</STRONG></DT><DD><CODE>" +
-- "<A HREF=\"../pkg/PrivateInterface.html#methodInterface(int)\">" +
-- "methodInterface</A></CODE> in interface <CODE>" +
-- "<A HREF=\"../pkg/PrivateInterface.html\" title=\"interface in pkg\">" +
-- "PrivateInterface</A></CODE></DD>" + NL + "</DL>" + NL + "</DD>"},
-+ "<dt><strong>Specified by:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg/PrivateInterface.html#methodInterface(int)\">" +
-+ "methodInterface</a></code>&nbsp;in interface&nbsp;<code>" +
-+ "<a href=\"../pkg/PrivateInterface.html\" title=\"interface in pkg\">" +
-+ "PrivateInterface</a></code></dd>"},
- // Method inheritence from non-public superinterface.
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicInterface.html",
-- "Methods inherited from interface " +
-- "pkg.<A HREF=\"../pkg/PrivateInterface.html\" " +
-- "title=\"interface in pkg\">PrivateInterface</A>"
-+ "Methods inherited from interface&nbsp;pkg." +
-+ "<a href=\"../pkg/PrivateInterface.html\" title=\"interface in pkg\">" +
-+ "PrivateInterface</a>"
- },
- {BUG_ID + "-2" + FS + "pkg" + FS + "PrivateInterface.html",
-- "<A HREF=\"../pkg/PrivateInterface.html#methodInterface(int)\">" +
-- "methodInterface</A>"
-+ "<a href=\"../pkg/PrivateInterface.html#methodInterface(int)\">" +
-+ "methodInterface</a>"
- },
- // Should mention that any documentation was copied.
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-@@ -209,26 +209,31 @@
-
- //Make sure implemented interfaces from private superclass are inherited
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicInterface.html",
-- "<STRONG>All Known Implementing Classes:</STRONG></DT> <DD><A HREF=\"../pkg/PrivateParent.html\" " +
-- "title=\"class in pkg\">PrivateParent</A>, " +
-- "<A HREF=\"../pkg/PublicChild.html\" title=\"class in pkg\">PublicChild</A>"},
-+ "<dl>" + NL + "<dt>All Known Implementing Classes:</dt>" + NL +
-+ "<dd><a href=\"../pkg/PrivateParent.html\" title=\"class in pkg\">" +
-+ "PrivateParent</a>, " +
-+ "<a href=\"../pkg/PublicChild.html\" title=\"class in pkg\">PublicChild" +
-+ "</a></dd>" + NL + "</dl>"},
-
- {BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
-- "<STRONG>All Implemented Interfaces:</STRONG></DT> <DD><A HREF=\"../pkg/PrivateInterface.html\" " +
-- "title=\"interface in pkg\">PrivateInterface</A>, " +
-- "<A HREF=\"../pkg/PublicInterface.html\" title=\"interface in pkg\">" +
-- "PublicInterface</A>"},
-+ "<dl>" + NL + "<dt>All Implemented Interfaces:</dt>" + NL +
-+ "<dd><a href=\"../pkg/PrivateInterface.html\" title=\"interface in pkg\">" +
-+ "PrivateInterface</a>, " +
-+ "<a href=\"../pkg/PublicInterface.html\" title=\"interface in pkg\">" +
-+ "PublicInterface</a></dd>" + NL + "</dl>"},
-
- //Since private flag is used, we can document that private interface method
- //with generic parameters has been implemented.
- {BUG_ID + "-2" + FS + "pkg2" + FS + "C.html",
-- "<STRONG>Description copied from interface: " +
-- "<CODE><A HREF=\"../pkg2/I.html#hello(T)\">I</A></CODE></STRONG>"},
-+ "<strong>Description copied from interface:&nbsp;<code>" +
-+ "<a href=\"../pkg2/I.html#hello(T)\">I</a></code></strong>"},
-
- {BUG_ID + "-2" + FS + "pkg2" + FS + "C.html",
-- "<STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"../pkg2/I.html#hello(T)\">" +
-- "hello</A></CODE> in interface <CODE><A HREF=\"../pkg2/I.html\" " +
-- "title=\"interface in pkg2\">I</A>"},
-+ "<dt><strong>Specified by:</strong></dt>" + NL +
-+ "<dd><code><a href=\"../pkg2/I.html#hello(T)\">hello</a></code>" +
-+ "&nbsp;in interface&nbsp;<code>" +
-+ "<a href=\"../pkg2/I.html\" title=\"interface in pkg2\">I</a>" +
-+ "&lt;java.lang.String&gt;</code></dd>"},
- };
- private static final String[][] NEGATED_TEST2 = NO_TEST;
-
-diff --git a/test/com/sun/javadoc/testSerializedForm/TestSerializedForm.java b/test/com/sun/javadoc/testSerializedForm/TestSerializedForm.java
---- langtools/test/com/sun/javadoc/testSerializedForm/TestSerializedForm.java
-+++ langtools/test/com/sun/javadoc/testSerializedForm/TestSerializedForm.java
-@@ -47,11 +47,11 @@
-
- private static final String[][] TEST = {
- {BUG_ID + FS + "serialized-form.html",
-- "protected java.lang.Object <STRONG>readResolve</STRONG>()"},
-+ "protected&nbsp;java.lang.Object&nbsp;readResolve()"},
- {BUG_ID + FS + "serialized-form.html",
-- "protected java.lang.Object <STRONG>writeReplace</STRONG>()"},
-+ "protected&nbsp;java.lang.Object&nbsp;writeReplace()"},
- {BUG_ID + FS + "serialized-form.html",
-- "protected java.lang.Object <STRONG>readObjectNoData</STRONG>()"},
-+ "protected&nbsp;java.lang.Object&nbsp;readObjectNoData()"},
- {BUG_ID + FS + "serialized-form.html",
- "See Also"},
- };
-diff --git a/test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java b/test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java
---- langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java
-+++ langtools/test/com/sun/javadoc/testSerializedFormDeprecationInfo/TestSerializedFormDeprecationInfo.java
-@@ -41,58 +41,47 @@
- // Test for normal run of javadoc. The serialized-form.html should
- // display the inline comments, tags and deprecation information if any.
- private static final String[][] TEST_CMNT_DEPR = {
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><DL>" + NL +
-- "<DT><STRONG>Throws:</STRONG></DT>" + NL + "<DD><CODE>" +
-- "java.io.IOException</CODE></DD><DT><STRONG>See Also:</STRONG>" +
-- "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version " +
-- "1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I></DD>" +
-- "<DD>This field indicates whether the C1 is undecorated." + NL +
-- "<P>" + NL + "</DD>" + NL + "<DD>&nbsp;</DD>" + NL +
-- "<DD><DL>" + NL + "<DT><STRONG>Since:</STRONG></DT>" + NL +
-- " <DD>1.4</DD>" + NL + "<DT><STRONG>See Also:</STRONG>" +
-- "</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-- " 1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-- "</DD><DD>Reads the object stream." + NL + "<P>" + NL +
-- "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Throws:" +
-- "</STRONG></DT>" + NL + "<DD><CODE><code>" +
-- "IOException</code></CODE></DD>" + NL +
-- "<DD><CODE>java.io.IOException</CODE></DD></DL>" + NL +
-- "</DD>" + NL + "</DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
-- "<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD><DD>" +
-- "The name for this class." + NL + "<P>" + NL + "</DD>" + NL +
-- "<DD>&nbsp;</DD>" + NL + "</DL>"}};
-+ {BUG_ID + FS + "serialized-form.html", "<dl>" +
-+ "<dt><span class=\"strong\">Throws:</span></dt>" + NL + "<dd><code>" +
-+ "java.io.IOException</code></dd><dt><span class=\"strong\">See Also:</span>" +
-+ "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
-+ "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
-+ " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
-+ "<div class=\"block\">This field indicates whether the C1 " +
-+ "is undecorated.</div>" + NL + "&nbsp;" + NL +
-+ "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
-+ " <dd>1.4</dd>" + NL + "<dt><span class=\"strong\">See Also:</span>" +
-+ "</dt><dd><a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>C1.setUndecorated(boolean)</code></a></dd></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
-+ "&nbsp;<i>As of JDK version 1.5, replaced by" + NL +
-+ " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL +
-+ "<div class=\"block\">Reads the object stream.</div>" + NL +
-+ "<dl><dt><span class=\"strong\">Throws:</span></dt>" + NL + "<dd><code><code>" +
-+ "IOException</code></code></dd>" + NL +
-+ "<dd><code>java.io.IOException</code></dd></dl>"},
-+ {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">Deprecated.</span>" +
-+ "&nbsp;</div>" + NL + "<div class=\"block\">" +
-+ "The name for this class.</div>"}};
-
- // Test with -nocomment option. The serialized-form.html should
- // not display the inline comments and tags but should display deprecation
- // information if any.
- private static final String[][] TEST_NOCMNT = {
-- {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "boolean <STRONG>" +
-- "undecorated</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-- "Deprecated.</STRONG>&nbsp;<I>As of JDK version 1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\"><CODE>" +
-- "setUndecorated(boolean)</CODE></A>.</I></DD></DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><STRONG>" +
-- "Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
-+ {BUG_ID + FS + "serialized-form.html", "<pre>boolean undecorated</pre>" + NL +
-+ "<div class=\"block\"><span class=\"strong\">Deprecated.</span>&nbsp;<i>" +
-+ "As of JDK version 1.5, replaced by" + NL +
-+ " <a href=\"pkg1/C1.html#setUndecorated(boolean)\"><code>" +
-+ "setUndecorated(boolean)</code></a>.</i></div>" + NL + "</li>"},
-+ {BUG_ID + FS + "serialized-form.html", "<span class=\"strong\">" +
-+ "Deprecated.</span>&nbsp;<i>As of JDK version" +
- " 1.5, replaced by" + NL +
-- " <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-- "<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
-- "</DD></DL>"},
-- {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "int <STRONG>" +
-- "publicKey</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
-- "Deprecated.</STRONG>&nbsp;</DD></DL>"}};
-+ " <a href=\"pkg1/C1.html#setUndecorated(boolean)\">" +
-+ "<code>setUndecorated(boolean)</code></a>.</i></div>" + NL + "</li>"}};
-
- // Test with -nodeprecated option. The serialized-form.html should
- // ignore the -nodeprecated tag and display the deprecation info. This
-diff --git a/test/com/sun/javadoc/testSimpleTag/TestSimpleTag.java b/test/com/sun/javadoc/testSimpleTag/TestSimpleTag.java
---- langtools/test/com/sun/javadoc/testSimpleTag/TestSimpleTag.java
-+++ langtools/test/com/sun/javadoc/testSimpleTag/TestSimpleTag.java
-@@ -42,13 +42,13 @@
- private static final String[][] TEST =
- new String[][] {
- {"./" + BUG_ID + "/C.html",
-- "<STRONG>Todo:</STRONG>"},
-+ "<span class=\"strong\">Todo:</span>"},
- {"./" + BUG_ID + "/C.html",
-- "<STRONG>EJB Beans:</STRONG>"},
-+ "<span class=\"strong\">EJB Beans:</span>"},
- {"./" + BUG_ID + "/C.html",
-- "<STRONG>Regular Tag:</STRONG>"},
-+ "<span class=\"strong\">Regular Tag:</span>"},
- {"./" + BUG_ID + "/C.html",
-- "<STRONG>Back-Slash-Tag:</STRONG>"},
-+ "<span class=\"strong\">Back-Slash-Tag:</span>"},
- };
-
- private static final String[] ARGS = new String[] {
-diff --git a/test/com/sun/javadoc/testStylesheet/TestStylesheet.java b/test/com/sun/javadoc/testStylesheet/TestStylesheet.java
---- langtools/test/com/sun/javadoc/testStylesheet/TestStylesheet.java
-+++ langtools/test/com/sun/javadoc/testStylesheet/TestStylesheet.java
-@@ -45,32 +45,24 @@
- //Input for string search tests.
- private static final String[][] TEST = {
- {BUG_ID + FS + "stylesheet.css",
-- "body { background-color: #FFFFFF; color:#000000 }"},
-+ "/* Javadoc style sheet */"},
- {BUG_ID + FS + "stylesheet.css",
-- ".TableHeadingColor { background: #CCCCFF; color:#000000 }"},
-+ "/*" + NL + "Overall document style" + NL + "*/"},
- {BUG_ID + FS + "stylesheet.css",
-- ".TableSubHeadingColor { background: #EEEEFF; color:#000000 }"},
-+ "/*" + NL + "Heading styles" + NL + "*/"},
- {BUG_ID + FS + "stylesheet.css",
-- ".TableRowColor { background: #FFFFFF; color:#000000 }"},
-+ "/*" + NL + "Navigation bar styles" + NL + "*/"},
- {BUG_ID + FS + "stylesheet.css",
-- ".FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 }"},
-+ "body {" + NL + " font-family:Helvetica, Arial, sans-serif;" + NL +
-+ " color:#000000;" + NL + "}"},
- {BUG_ID + FS + "stylesheet.css",
-- ".FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }"},
-- {BUG_ID + FS + "stylesheet.css",
-- ".FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }"},
-- {BUG_ID + FS + "stylesheet.css",
-- ".NavBarCell1 { background-color:#EEEEFF; color:#000000}"},
-- {BUG_ID + FS + "stylesheet.css",
-- ".NavBarCell1Rev { background-color:#00008B; color:#FFFFFF}"},
-- {BUG_ID + FS + "stylesheet.css",
-- ".NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;}"},
-- {BUG_ID + FS + "stylesheet.css",
-- ".NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;}"},
-- {BUG_ID + FS + "stylesheet.css",
-- ".NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}"},
-- {BUG_ID + FS + "stylesheet.css",
-- ".NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}"},
--
-+ "dl dd ul li {" + NL + " list-style:none;" + NL +
-+ " margin:10px 0 10px 0;" + NL + "}"},
-+ // Test whether a link to the stylesheet file is inserted properly
-+ // in the class documentation.
-+ {BUG_ID + FS + "pkg" + FS + "A.html",
-+ "<link rel=\"stylesheet\" type=\"text/css\" " +
-+ "href=\"../stylesheet.css\" title=\"Style\">"}
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
-
-diff --git a/test/com/sun/javadoc/testSummaryHeading/TestSummaryHeading.java b/test/com/sun/javadoc/testSummaryHeading/TestSummaryHeading.java
---- langtools/test/com/sun/javadoc/testSummaryHeading/TestSummaryHeading.java
-+++ langtools/test/com/sun/javadoc/testSummaryHeading/TestSummaryHeading.java
-@@ -46,8 +46,7 @@
-
- //Input for string search tests.
- private static final String[][] TEST = {
-- {BUG_ID + FS + "C.html", "<CAPTION CLASS=\"TableCaption\">" + NL +
-- "Method Summary</CAPTION>"}
-+ {BUG_ID + FS + "C.html", "<h3>Method Summary</h3>"}
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
-
-diff --git a/test/com/sun/javadoc/testSuperclassInSerialForm/TestSuperClassInSerialForm.java b/test/com/sun/javadoc/testSuperclassInSerialForm/TestSuperClassInSerialForm.java
---- langtools/test/com/sun/javadoc/testSuperclassInSerialForm/TestSuperClassInSerialForm.java
-+++ langtools/test/com/sun/javadoc/testSuperclassInSerialForm/TestSuperClassInSerialForm.java
-@@ -39,7 +39,7 @@
-
- private static final String[][] TEST = {
- {BUG_ID + FS + "serialized-form.html",
-- "<A HREF=\"pkg/SubClass.html\" title=\"class in pkg\">pkg.SubClass</A> extends <A HREF=\"pkg/SuperClass.html\" title=\"class in pkg\">SuperClass</A>"}
-+ "<a href=\"pkg/SubClass.html\" title=\"class in pkg\">pkg.SubClass</a> extends <a href=\"pkg/SuperClass.html\" title=\"class in pkg\">SuperClass</a>"}
- };
-
- private static final String[][] NEGATED_TEST = NO_TEST;
-diff --git a/test/com/sun/javadoc/testTagInheritence/TestTagInheritence.java b/test/com/sun/javadoc/testTagInheritence/TestTagInheritence.java
---- langtools/test/com/sun/javadoc/testTagInheritence/TestTagInheritence.java
-+++ langtools/test/com/sun/javadoc/testTagInheritence/TestTagInheritence.java
-@@ -59,12 +59,12 @@
- //First sentence test (6253614)
- tests[tests.length - 2][0] =BUG_ID + FS + "firstSentence" + FS +
- "B.html";
-- tests[tests.length - 2][1] = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;First sentence.</TD>";
-+ tests[tests.length - 2][1] = "<div class=\"block\">First sentence.</div>";
-
- //Another first sentence test (6253604)
- tests[tests.length - 1][0] =BUG_ID + FS + "firstSentence2" + FS +
- "C.html";
-- tests[tests.length - 1][1] = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;First sentence.</TD>";
-+ tests[tests.length - 1][1] = "<div class=\"block\">First sentence.</div>";
-
- TestTagInheritence tester = new TestTagInheritence();
- run(tester, ARGS, tests, NO_TEST);
-diff --git a/test/com/sun/javadoc/testTaglets/TestTaglets.java b/test/com/sun/javadoc/testTaglets/TestTaglets.java
---- langtools/test/com/sun/javadoc/testTaglets/TestTaglets.java
-+++ langtools/test/com/sun/javadoc/testTaglets/TestTaglets.java
-@@ -55,13 +55,15 @@
-
- //Input for string search tests.
- private static final String[][] TEST_4654308 = new String[][] {
-- {"4654308" + FS + "C.html", "<B>Foo:</B><DD>my only method is " + "<A HREF=\"C.html#method()\"><CODE>here</CODE></A>"}
-+ {"4654308" + FS + "C.html", "<span class=\"strong\">Foo:</span></dt>" +
-+ "<dd>my only method is <a href=\"C.html#method()\"><code>here" +
-+ "</code></a></dd></dl>"}
- };
- private static final String[][] NEGATED_TEST_4654308 = NO_TEST;
-
- private static final String[][] TEST_4767038 = new String[][] {
- {"4767038" + FS + "Child.html",
-- "&nbsp;This is the first sentence.</TD>"}
-+ "This is the first sentence."}
- };
- private static final String[][] NEGATED_TEST_4767038 = NO_TEST;
-
-diff --git a/test/com/sun/javadoc/testTaglets/taglets/Foo.java b/test/com/sun/javadoc/testTaglets/taglets/Foo.java
---- langtools/test/com/sun/javadoc/testTaglets/taglets/Foo.java
-+++ langtools/test/com/sun/javadoc/testTaglets/taglets/Foo.java
-@@ -50,9 +50,9 @@
- */
- public TagletOutput getTagletOutput(Tag tag, TagletWriter writer) {
- ArrayList inlineTags = new ArrayList();
-- inlineTags.add(new TextTag(tag.holder(), "<DT><B>Foo:</B><DD>"));
-+ inlineTags.add(new TextTag(tag.holder(), "<dt><span class=\"strong\">Foo:</span></dt><dd>"));
- inlineTags.addAll(Arrays.asList(tag.inlineTags()));
-- inlineTags.add(new TextTag(tag.holder(), "</DD>"));
-+ inlineTags.add(new TextTag(tag.holder(), "</dd>"));
- return writer.commentTagsToOutput(tag,
- (Tag[]) inlineTags.toArray(new Tag[] {}));
- }
-diff --git a/test/com/sun/javadoc/testThrowsHead/TestThrowsHead.java b/test/com/sun/javadoc/testThrowsHead/TestThrowsHead.java
---- langtools/test/com/sun/javadoc/testThrowsHead/TestThrowsHead.java
-+++ langtools/test/com/sun/javadoc/testThrowsHead/TestThrowsHead.java
-@@ -38,7 +38,7 @@
-
- private static final String BUG_ID = "4530727";
- private static final String[][] TEST = {
-- {BUG_ID + FS + "C.html", "<DT><STRONG>Throws:</STRONG>"}
-+ {BUG_ID + FS + "C.html", "<dt><span class=\"strong\">Throws:</span>"}
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
- private static final String[] ARGS = new String[] {
-diff --git a/test/com/sun/javadoc/testThrowsTag/TestThrowsTag.java b/test/com/sun/javadoc/testThrowsTag/TestThrowsTag.java
---- langtools/test/com/sun/javadoc/testThrowsTag/TestThrowsTag.java
-+++ langtools/test/com/sun/javadoc/testThrowsTag/TestThrowsTag.java
-@@ -46,14 +46,14 @@
- //Input for string search tests.
- private static final String[][] TEST = {
- {BUG_ID + FS + "pkg" + FS + "C.html",
-- "<DD><CODE><A HREF=\"../pkg/T1.html\" title=\"class in pkg\">T1</A></CODE> - the first throws tag.</DD>" + NL +
-- "<DD><CODE><A HREF=\"../pkg/T2.html\" title=\"class in pkg\">T2</A></CODE> - the second throws tag.</DD>" + NL +
-- "<DD><CODE><A HREF=\"../pkg/T3.html\" title=\"class in pkg\">T3</A></CODE> - the third throws tag.</DD>" + NL +
-- "<DD><CODE><A HREF=\"../pkg/T4.html\" title=\"class in pkg\">T4</A></CODE> - the fourth throws tag.</DD>" + NL +
-- "<DD><CODE><A HREF=\"../pkg/T5.html\" title=\"class in pkg\">T5</A></CODE> - the first inherited throws tag.</DD>" + NL +
-- "<DD><CODE><A HREF=\"../pkg/T6.html\" title=\"class in pkg\">T6</A></CODE> - the second inherited throws tag.</DD>" + NL +
-- "<DD><CODE><A HREF=\"../pkg/T7.html\" title=\"class in pkg\">T7</A></CODE> - the third inherited throws tag.</DD>" + NL +
-- "<DD><CODE><A HREF=\"../pkg/T8.html\" title=\"class in pkg\">T8</A></CODE> - the fourth inherited throws tag.</DD>"
-+ "<dd><code><a href=\"../pkg/T1.html\" title=\"class in pkg\">T1</a></code> - the first throws tag.</dd>" + NL +
-+ "<dd><code><a href=\"../pkg/T2.html\" title=\"class in pkg\">T2</a></code> - the second throws tag.</dd>" + NL +
-+ "<dd><code><a href=\"../pkg/T3.html\" title=\"class in pkg\">T3</a></code> - the third throws tag.</dd>" + NL +
-+ "<dd><code><a href=\"../pkg/T4.html\" title=\"class in pkg\">T4</a></code> - the fourth throws tag.</dd>" + NL +
-+ "<dd><code><a href=\"../pkg/T5.html\" title=\"class in pkg\">T5</a></code> - the first inherited throws tag.</dd>" + NL +
-+ "<dd><code><a href=\"../pkg/T6.html\" title=\"class in pkg\">T6</a></code> - the second inherited throws tag.</dd>" + NL +
-+ "<dd><code><a href=\"../pkg/T7.html\" title=\"class in pkg\">T7</a></code> - the third inherited throws tag.</dd>" + NL +
-+ "<dd><code><a href=\"../pkg/T8.html\" title=\"class in pkg\">T8</a></code> - the fourth inherited throws tag.</dd>"
- },
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
-diff --git a/test/com/sun/javadoc/testTitleInHref/TestTitleInHref.java b/test/com/sun/javadoc/testTitleInHref/TestTitleInHref.java
---- langtools/test/com/sun/javadoc/testTitleInHref/TestTitleInHref.java
-+++ langtools/test/com/sun/javadoc/testTitleInHref/TestTitleInHref.java
-@@ -38,13 +38,13 @@
-
- private static final String[][] TEST = {
- //Test to make sure that the title shows up in a class link.
-- {BUG_ID + FS + "pkg" + FS + "Links.html", "<A HREF=\"../pkg/Class.html\" title=\"class in pkg\">"},
-+ {BUG_ID + FS + "pkg" + FS + "Links.html", "<a href=\"../pkg/Class.html\" title=\"class in pkg\">"},
-
- //Test to make sure that the title shows up in an interface link.
-- {BUG_ID + FS + "pkg" + FS + "Links.html", "<A HREF=\"../pkg/Interface.html\" title=\"interface in pkg\">"},
-+ {BUG_ID + FS + "pkg" + FS + "Links.html", "<a href=\"../pkg/Interface.html\" title=\"interface in pkg\">"},
-
- //Test to make sure that the title shows up in cross link shows up
-- {BUG_ID + FS + "pkg" + FS + "Links.html", "<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\"><CODE>This is a cross link to class File</CODE></A>"},
-+ {BUG_ID + FS + "pkg" + FS + "Links.html", "<a href=\"http://java.sun.com/j2se/1.4/docs/api/java/io/File.html?is-external=true\" title=\"class or interface in java.io\"><code>This is a cross link to class File</code></a>"},
-
- };
-
-diff --git a/test/com/sun/javadoc/testTypeParams/TestTypeParameters.java b/test/com/sun/javadoc/testTypeParams/TestTypeParameters.java
---- langtools/test/com/sun/javadoc/testTypeParams/TestTypeParameters.java
-+++ langtools/test/com/sun/javadoc/testTypeParams/TestTypeParameters.java
-@@ -49,16 +49,17 @@
- private static final String[][] TEST =
- {
- {BUG_ID + FS + "pkg" + FS + "C.html",
-- "<CODE>&lt;W extends java.lang.String,V extends java.util.List&gt; " + NL +
-- "<BR>" + NL +
-- "java.lang.Object</CODE>"},
-+ "<td class=\"colFirst\"><code>&lt;W extends java.lang.String,V extends " +
-+ "java.util.List&gt;&nbsp;<br>java.lang.Object</code></td>"},
- {BUG_ID + FS + "pkg" + FS + "C.html",
-- "<CODE>&lt;T&gt; java.lang.Object</CODE>"},
-+ "<code>&lt;T&gt;&nbsp;java.lang.Object</code>"},
- {BUG_ID + FS + "pkg" + FS + "package-summary.html",
- "C&lt;E extends Parent&gt;"},
- //Nested type parameters
- {BUG_ID + FS + "pkg" + FS + "C.html",
-- "<A NAME=\"formatDetails(java.util.Collection, java.util.Collection)\"><!-- --></A>"},
-+ "<a name=\"formatDetails(java.util.Collection, java.util.Collection)\">" + NL +
-+ "<!-- -->" + NL +
-+ "</a>"},
-
- };
- private static final String[][] NEGATED_TEST = NO_TEST;
-diff --git a/test/com/sun/javadoc/testUnnamedPackage/TestUnnamedPackage.java b/test/com/sun/javadoc/testUnnamedPackage/TestUnnamedPackage.java
---- langtools/test/com/sun/javadoc/testUnnamedPackage/TestUnnamedPackage.java
-+++ langtools/test/com/sun/javadoc/testUnnamedPackage/TestUnnamedPackage.java
-@@ -46,7 +46,7 @@
- //Input for string search tests.
- private static final String[][] TEST = {
- {BUG_ID + FS + "package-summary.html",
-- "<H2>"+NL+"Package &lt;Unnamed&gt;"+NL+"</H2>"
-+ "<h1 title=\"Package\" class=\"title\">Package&nbsp;&lt;Unnamed&gt;</h1>"
- },
- {BUG_ID + FS + "package-summary.html",
- "This is a package comment for the unnamed package."
-@@ -55,12 +55,12 @@
- "This is a class in the unnamed package."
- },
- {BUG_ID + FS + "package-tree.html",
-- "<H2>"+NL+"Hierarchy For Package &lt;Unnamed&gt;"+NL+"</H2>"
-+ "<h1 class=\"title\">Hierarchy For Package &lt;Unnamed&gt;</h1>"
- },
- {BUG_ID + FS + "index-all.html",
- "title=\"class in &lt;Unnamed&gt;\""
- },
-- {BUG_ID + FS + "C.html", "<A HREF=\"package-summary.html\">"}
-+ {BUG_ID + FS + "C.html", "<a href=\"package-summary.html\">"}
- };
- private static final String[][] NEGATED_TEST = {
- {ERROR_OUTPUT, "BadSource"},
-diff --git a/test/com/sun/javadoc/testValueTag/TestValueTag.java b/test/com/sun/javadoc/testValueTag/TestValueTag.java
---- langtools/test/com/sun/javadoc/testValueTag/TestValueTag.java
-+++ langtools/test/com/sun/javadoc/testValueTag/TestValueTag.java
-@@ -52,44 +52,44 @@
- "Result: \"Test 1 passes\""},
- //Retrieve value of constant in same class.
- {BUG_ID + FS + "pkg1" + FS + "Class1.html",
-- "Result: <A HREF=\"../pkg1/Class1.html#TEST_2_PASSES\">\"Test 2 passes\"</A>"},
-+ "Result: <a href=\"../pkg1/Class1.html#TEST_2_PASSES\">\"Test 2 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class1.html",
-- "Result: <A HREF=\"../pkg1/Class1.html#TEST_3_PASSES\">\"Test 3 passes\"</A>"},
-+ "Result: <a href=\"../pkg1/Class1.html#TEST_3_PASSES\">\"Test 3 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class1.html",
-- "Result: <A HREF=\"../pkg1/Class1.html#TEST_4_PASSES\">\"Test 4 passes\"</A>"},
-+ "Result: <a href=\"../pkg1/Class1.html#TEST_4_PASSES\">\"Test 4 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class1.html",
-- "Result: <A HREF=\"../pkg1/Class1.html#TEST_5_PASSES\">\"Test 5 passes\"</A>"},
-+ "Result: <a href=\"../pkg1/Class1.html#TEST_5_PASSES\">\"Test 5 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class1.html",
-- "Result: <A HREF=\"../pkg1/Class1.html#TEST_6_PASSES\">\"Test 6 passes\"</A>"},
-+ "Result: <a href=\"../pkg1/Class1.html#TEST_6_PASSES\">\"Test 6 passes\"</a>"},
- //Retrieve value of constant in different class.
- {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-- "Result: <A HREF=\"../pkg1/Class1.html#TEST_7_PASSES\">\"Test 7 passes\"</A>"},
-+ "Result: <a href=\"../pkg1/Class1.html#TEST_7_PASSES\">\"Test 7 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-- "Result: <A HREF=\"../pkg1/Class1.html#TEST_8_PASSES\">\"Test 8 passes\"</A>"},
-+ "Result: <a href=\"../pkg1/Class1.html#TEST_8_PASSES\">\"Test 8 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-- "Result: <A HREF=\"../pkg1/Class1.html#TEST_9_PASSES\">\"Test 9 passes\"</A>"},
-+ "Result: <a href=\"../pkg1/Class1.html#TEST_9_PASSES\">\"Test 9 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-- "Result: <A HREF=\"../pkg1/Class1.html#TEST_10_PASSES\">\"Test 10 passes\"</A>"},
-+ "Result: <a href=\"../pkg1/Class1.html#TEST_10_PASSES\">\"Test 10 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-- "Result: <A HREF=\"../pkg1/Class1.html#TEST_11_PASSES\">\"Test 11 passes\"</A>"},
-+ "Result: <a href=\"../pkg1/Class1.html#TEST_11_PASSES\">\"Test 11 passes\"</a>"},
- //Retrieve value of constant in different package
- {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-- "Result: <A HREF=\"../pkg2/Class3.html#TEST_12_PASSES\">\"Test 12 passes\"</A>"},
-+ "Result: <a href=\"../pkg2/Class3.html#TEST_12_PASSES\">\"Test 12 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-- "Result: <A HREF=\"../pkg2/Class3.html#TEST_13_PASSES\">\"Test 13 passes\"</A>"},
-+ "Result: <a href=\"../pkg2/Class3.html#TEST_13_PASSES\">\"Test 13 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-- "Result: <A HREF=\"../pkg2/Class3.html#TEST_14_PASSES\">\"Test 14 passes\"</A>"},
-+ "Result: <a href=\"../pkg2/Class3.html#TEST_14_PASSES\">\"Test 14 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-- "Result: <A HREF=\"../pkg2/Class3.html#TEST_15_PASSES\">\"Test 15 passes\"</A>"},
-+ "Result: <a href=\"../pkg2/Class3.html#TEST_15_PASSES\">\"Test 15 passes\"</a>"},
- {BUG_ID + FS + "pkg1" + FS + "Class2.html",
-- "Result: <A HREF=\"../pkg2/Class3.html#TEST_16_PASSES\">\"Test 16 passes\"</A>"},
-+ "Result: <a href=\"../pkg2/Class3.html#TEST_16_PASSES\">\"Test 16 passes\"</a>"},
- //Retrieve value of constant from a package page
- {BUG_ID + FS + "pkg2" + FS + "package-summary.html",
-- "Result: <A HREF=\"../pkg2/Class3.html#TEST_17_PASSES\">\"Test 17 passes\"</A>"},
-+ "Result: <a href=\"../pkg2/Class3.html#TEST_17_PASSES\">\"Test 17 passes\"</a>"},
- //Test @value tag used with custom tag.
- {BUG_ID + FS + "pkg1" + FS + "CustomTagUsage.html",
-- "<DT><STRONG>Todo:</STRONG></DT>" + NL +
-- " <DD>the value of this constant is 55.</DD>"},
-+ "<dt><span class=\"strong\">Todo:</span></dt>" + NL +
-+ " <dd>the value of this constant is 55.</dd>"},
- //Test @value warning printed when used with non-constant.
- {WARNING_OUTPUT,"warning - @value tag (which references nonConstant) " +
- "can only be used in constants."
-diff --git a/test/com/sun/javadoc/testWarnings/TestWarnings.java b/test/com/sun/javadoc/testWarnings/TestWarnings.java
---- langtools/test/com/sun/javadoc/testWarnings/TestWarnings.java
-+++ langtools/test/com/sun/javadoc/testWarnings/TestWarnings.java
-@@ -65,9 +65,9 @@
- };
-
- private static final String[][] TEST2 = {
-- {BUG_ID + FS + "pkg" + FS + "X.html", "<A HREF=\"../pkg/X.html#m()\"><CODE>m()</CODE></A><br/>"},
-- {BUG_ID + FS + "pkg" + FS + "X.html", "<A HREF=\"../pkg/X.html#X()\"><CODE>X()</CODE></A><br/>"},
-- {BUG_ID + FS + "pkg" + FS + "X.html", "<A HREF=\"../pkg/X.html#f\"><CODE>f</CODE></A><br/>"},
-+ {BUG_ID + FS + "pkg" + FS + "X.html", "<a href=\"../pkg/X.html#m()\"><code>m()</code></a><br/>"},
-+ {BUG_ID + FS + "pkg" + FS + "X.html", "<a href=\"../pkg/X.html#X()\"><code>X()</code></a><br/>"},
-+ {BUG_ID + FS + "pkg" + FS + "X.html", "<a href=\"../pkg/X.html#f\"><code>f</code></a><br/>"},
- };
-
- private static final String[][] NEGATED_TEST2 = NO_TEST;