diff options
Diffstat (limited to 'java/openjdk6/files/icedtea/openjdk/6851834-restructure.patch')
-rw-r--r-- | java/openjdk6/files/icedtea/openjdk/6851834-restructure.patch | 26853 |
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() + " "); -- } -- 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(" "); -- 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", "", "<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("<unnamed package>"); -+ 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(" "); -- 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 + " "); -- 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 <a name="my_name"></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> "); -+ getText("doclet.Deprecated") + "</span> "); - 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> "); -+ getText("doclet.Deprecated") + "</span> "); - 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> </DD>"); -+ getText("doclet.Deprecated") + "</span> "); - } - } - } -@@ -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 <SCRIPT> 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 </BODY> 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 </TITLE> tag. Add a newline character at the end. -@@ -519,17 +725,17 @@ - } - - /** -- * Return, text passed, with Italics <I> and </I> tags, surrounding it. -- * So if the text passed is "Hi", then string returned will be "<I>Hi</I>". -+ * Return, text passed, with Italics <i> and </i> tags, surrounding it. -+ * So if the text passed is "Hi", then string returned will be "<i>Hi</i>". - * - * @param text String to be printed in between <I> and </I> 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 "&nbsp;", non-breaking space. -+ */ -+ public Content getSpace() { -+ return RawHtml.nbsp; -+ } -+ -+ /** - * Print <DL> tag. Add a newline character at the end. - */ - public void dl() { -@@ -1182,21 +1395,21 @@ - } - - /** -- * Get the "<CODE>" string. -+ * Get the "<code>" string. - * -- * @return String Return String "<CODE>"; -+ * @return String Return String "<code>"; - */ - public String getCode() { -- return "<CODE>"; -+ return "<code>"; - } - - /** -- * Get the "</CODE>" string. -+ * Get the "</code>" string. - * -- * @return String Return String "</CODE>"; -+ * @return String Return String "</code>"; - */ - 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(" "); -+ -+ /** -+ * 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="{0}" 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 <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 <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 @@ - {{"&", "&"}, {"<", "<"}, {">", ">"}}; - - /** -+ * 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>\"<Hello World>\"</CODE>"; -+ tests[tests.length-1][1] = "<code>\"<Hello World>\"</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> in class <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<E> (implements java.lang.Comparable<T>, 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<E> (implements java.lang." + -+ "Comparable<T>, 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> </DD></DL>"}, -+ {TARGET_FILE2, "<pre>@Deprecated" + NL + -+ "public int field</pre>" + NL + -+ "<div class=\"block\"><span class=\"strong\">Deprecated.</span> </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 DeprecatedClassByAnnotation()</pre>" + NL + -+ "<div class=\"block\"><span class=\"strong\">Deprecated.</span> </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 void method()</pre>" + NL + -+ "<div class=\"block\"><span class=\"strong\">Deprecated.</span> </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> 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></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> 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></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 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 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<E extends C4<E>></H2>" -+ "Class C4<E extends C4<E>></h2>" - }, - - //Signature does not link to the page itself. - {BUG_ID + FS + "pkg" + FS + "C4.html", -- "public abstract class <STRONG>C4<E extends C4<E>></STRONG>" -+ "public abstract class <strong>C4<E extends C4<E>></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> <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> <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> <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> </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> <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> </DD><DD>" + -- "The name for this class." + NL + "<P>" + NL + "</DD>" + NL + -- "<DD> </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> <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> <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> </DD></DL>"}, -- {BUG_ID + FS + "pkg1" + FS + "C5.html", "<PRE>" + NL + -- "public void <STRONG>printInfo</STRONG>()</PRE>" + NL + "<DL>" + NL + -- "<DD><STRONG>Deprecated.</STRONG> </DD></DL>"}, -- {BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "boolean <STRONG>" + -- "undecorated</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" + -- "Deprecated.</STRONG> <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> <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> </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>" + -+ " <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 + " " + 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>" + -+ " <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>" + -+ " </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> <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> </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> <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> </DD><DD>" + -- "The name for this class." + NL + "<P>" + NL + "</DD>" + NL + -- "<DD> </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>" + -+ " <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 + " " + 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>" + -+ " <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>" + -+ " </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> <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> <I>As of JDK version" + -+ {BUG_ID + FS + "pkg1" + FS + "C1.html", "<pre>public void readObject()" + NL + -+ " throws java.io.IOException</pre>" + NL + "</li>"}, -+ {BUG_ID + FS + "pkg1" + FS + "C2.html", "<pre>public C2()</pre>" + NL + -+ "</li>"}, -+ {BUG_ID + FS + "pkg1" + FS + "C1.ModalExclusionType.html", "<pre>public " + -+ "static final <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> <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> <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> </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 <test> 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\">" + -+ " </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\">" + -+ " </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\">" + -+ " </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\">" + -+ " </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\"> </span></caption>" - }, - {BUG_ID + FS + "pkg1" + FS + "C1.html", -- "<CAPTION CLASS=\"TableCaption\">" + NL + -- "Method Summary</CAPTION>" -+ "<caption><span>Methods</span><span class=\"tabEnd\"> </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\"> </span></caption>" - }, - {BUG_ID + FS + "pkg2" + FS + "C2.html", -- "<CAPTION CLASS=\"TableCaption\">" + NL + -- "Constructor Summary</CAPTION>" -+ "<caption><span>Constructors</span><span class=\"tabEnd\"> </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\"> </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\"> " + -+ "</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\"> " + -+ "</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\">" + -+ " </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\"> " + -+ "</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\">" + -+ " </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\">" + -+ " </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\">" + -+ " </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\"> </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\"> </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\"> </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\"> </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\"> </span></caption>" - }, - // Deprecated - {BUG_ID + FS + "deprecated-list.html", -- "<CAPTION CLASS=\"TableCaption\">" + NL + -- "Deprecated Fields</CAPTION>" -+ "<caption><span>Deprecated Fields</span><span class=\"tabEnd\">" + -+ " </span></caption>" - }, - {BUG_ID + FS + "deprecated-list.html", -- "<CAPTION CLASS=\"TableCaption\">" + NL + -- "Deprecated Methods</CAPTION>" -+ "<caption><span>Deprecated Methods</span><span class=\"tabEnd\">" + -+ " </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\"> </span></caption>" - }, - // Overview Summary - {BUG_ID + FS + "overview-summary.html", -- "<CAPTION CLASS=\"TableCaption\">" + NL + -- "Packages</CAPTION>" -+ "<caption><span>Packages</span><span class=\"tabEnd\"> </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\"><Unnamed></A>"}, -+ "Class in <a href=\"./package-summary.html\"><Unnamed></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> </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> </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> </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> </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 method()</pre>"}, - {BUG_ID + FS + "pkg" + FS + "Interface.html", -- "static final int <STRONG>field</STRONG>"}, -+ "<pre>static final 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><T>" -+ "<dl>" + NL + "<dt>All Implemented Interfaces:</dt>" + NL + -+ "<dd><a href=\"../pkg/Interface.html\" title=\"interface in pkg\">" + -+ "Interface</a><T></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><T>" + NL + -- " <IMG SRC=\"../resources/inherit.gif\" ALT=\"extended by \"><STRONG>pkg.Child<T></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><T></li>" + NL + "<li>" + NL + -+ "<ul class=\"inheritance\">" + NL + "<li>pkg.Child<T></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><<A HREF=\"../pkg/Child.html\" title=\"type parameter in Child\">T</A>></CODE>" -+ "<dt><strong>Specified by:</strong></dt>" + NL + -+ "<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><<a href=\"../pkg/Child.html\" title=\"type parameter in Child\">" + -+ "T</a>></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><<A HREF=\"../pkg/Child.html\" title=\"type parameter in Child\">T</A>></CODE>" -+ "<dt><strong>Overrides:</strong></dt>" + NL + -+ "<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><<a href=\"../pkg/Child.html\" " + -+ "title=\"type parameter in Child\">T</a>></code></dd>" - }, - }; - private static final String[][] NEGATED_TEST = { - {BUG_ID + FS + "pkg" + FS + "Interface.html", -- "public int <STRONG>method</STRONG>()"}, -+ "public int method()"}, - {BUG_ID + FS + "pkg" + FS + "Interface.html", -- "public static final int <STRONG>field</STRONG>"}, -+ "public static final 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 p1," + NL + -- " int p2," + NL + -- " int p3)" -+ " int p2," + NL + -+ " int p3)" - }, - {BUG_ID + "-1" + FS + "pkg" + FS + "C.html", - "(int p1," + NL + -- " int 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> p3)" -+ " int 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> 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 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 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> in interface <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", -- " 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> <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 <a href=\"../pkg/PublicChild.html\" title=\"class in pkg\">" + -+ "PublicChild</a> 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", " PREV CLASS "}, -+ {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", " 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<" + -- "<A HREF=\"../pkg/Coin.html\" title=\"enum in pkg\">Coin</A>>" -+ {BUG_ID + FS + "pkg" + FS + "Coin.html", "<pre>public enum <strong>Coin</strong>" + NL + -+ "extends java.lang.Enum<<a href=\"../pkg/Coin.html\" " + -+ "title=\"enum in pkg\">Coin</a>></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\"> </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<E></H2>"}, -+ "Class TypeParameters<E></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> param)"}, -+ "(<a href=\"../pkg/TypeParameters.html\" title=\"type " + -+ "parameter in TypeParameters\">E</a> 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 <T extends java.util.List,V> " + -- "java.lang.String[] <STRONG>methodThatHasTypeParameters</STRONG>"}, -+ "public <T extends java.util.List,V> " + -+ "java.lang.String[] methodThatHasTypeParameters"}, - //Wildcard testing. - {BUG_ID + FS + "pkg" + FS + "Wildcards.html", -- "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" + -- "TypeParameters</A><? super java.lang.String> a"}, -+ "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" + -+ "TypeParameters</a><? super java.lang.String> a"}, - {BUG_ID + FS + "pkg" + FS + "Wildcards.html", -- "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" + -- "TypeParameters</A><? extends java.lang.StringBuffer> b"}, -+ "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" + -+ "TypeParameters</a><? extends java.lang.StringBuffer> b"}, - {BUG_ID + FS + "pkg" + FS + "Wildcards.html", -- "<A HREF=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" + -- "TypeParameters</A> c"}, -+ "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" + -+ "TypeParameters</a> 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<T extends java.lang.String>" + -- "</STRONG>" + NL + "extends <A HREF=\"../pkg/TypeParameterSuperClass.html\" " + -- "title=\"class in pkg\">TypeParameterSuperClass</A><T>"}, -+ "<pre>public class <strong>TypeParameterSubClass<T extends " + -+ "java.lang.String></strong>" + NL + "extends " + -+ "<a href=\"../pkg/TypeParameterSuperClass.html\" title=\"class in pkg\">" + -+ "TypeParameterSuperClass</a><T></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><E>, <A HREF=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">SuperInterface</A><E></DD>"}, -+ "<dl>" + NL + "<dt>All Implemented Interfaces:</dt>" + NL + -+ "<dd><a href=\"../pkg/SubInterface.html\" title=\"interface in pkg\">" + -+ "SubInterface</a><E>, <a href=\"../pkg/SuperInterface.html\" " + -+ "title=\"interface in pkg\">SuperInterface</a><E></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><V></DD>"}, -+ "<dl>" + NL + "<dt>All Known Subinterfaces:</dt>" + NL + -+ "<dd><a href=\"../pkg/SubInterface.html\" title=\"interface in pkg\">" + -+ "SubInterface</a><V></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><V></DD>"}, -+ "<dl>" + NL + "<dt>All Superinterfaces:</dt>" + NL + -+ "<dd><a href=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">" + -+ "SuperInterface</a><V></dd>" + NL + "</dl>"}, - - //================================= - // VAR ARG TESTING -@@ -137,39 +147,40 @@ - {BUG_ID + FS + "pkg" + FS + "VarArgs.html", "(int[][]... 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>... t"}, -+ "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" + -+ "TypeParameters</a>... t"}, - - //================================= - // ANNOTATION TYPE TESTING - //================================= - //Make sure the summary links are correct. - {BUG_ID + FS + "pkg" + FS + "AnnotationType.html", -- "SUMMARY: <A HREF=\"#annotation_type_required_element_summary\">" + -- "REQUIRED</A> | <A HREF=\"#annotation_type_optional_element_summary\">" + -- "OPTIONAL</A>"}, -+ "<li>SUMMARY: </li>" + NL + -+ "<li><a href=\"#annotation_type_required_element_summary\">" + -+ "REQUIRED</a> | </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: <A HREF=\"#annotation_type_element_detail\">ELEMENT</A>"}, -+ "<li>DETAIL: </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 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 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 void 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 documented," + NL + -- " int undocmented)</PRE>"}, -+ "<pre>public void 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 documented," + NL + -+ " int 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 documented," + NL + -- " int undocmented)</PRE>"}, -+ "<pre>public 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 documented," + NL + -+ " int 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 <T extends java.lang.Number & java.lang.Runnable> T <STRONG>foo</STRONG>(T t)"}, -+ "public <T extends java.lang.Number & java.lang.Runnable> T foo(T 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\"> </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<T extends Foo & Foo2></A></STRONG></CODE>" -+ "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" + -+ "ClassUseTest1.html\" title=\"class in pkg2\">ClassUseTest1" + -+ "<T extends Foo & Foo2></a></strong></code> </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\"> </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 t)</CODE>" -+ "<td class=\"colLast\"><span class=\"strong\">ClassUseTest1." + -+ "</span><code><strong><a href=\"../../pkg2/" + -+ "ClassUseTest1.html#method(T)\">method</a></strong>" + -+ "(T t)</code> </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\"> </span></caption>" - }, - {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo.html", -- "<A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A><<A HREF=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</A>></CODE></FONT></TD>" -+ "td class=\"colFirst\"><code><a href=\"../../pkg2/" + -+ "ParamTest.html\" title=\"class in pkg2\">ParamTest</a>" + -+ "<<a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\"" + -+ ">Foo</a>></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\"> </span></caption>" - }, - {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html", -- "<A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A><<A HREF=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</A>></CODE></FONT></TD>" -+ "<td class=\"colFirst\"><code><a href=\"../../pkg2/" + -+ "ParamTest.html\" title=\"class in pkg2\">ParamTest</a><<a " + -+ "href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</a" + -+ ">></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\"> " + -+ "</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<T extends Foo & Foo2></A></STRONG></CODE>" -+ "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" + -+ "ClassUseTest1.html\" title=\"class in pkg2\">" + -+ "ClassUseTest1<T extends Foo & Foo2></a></strong>" + -+ "</code> </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\"> " + -+ "</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 t)</CODE>" -+ "<td class=\"colLast\"><span class=\"strong\">" + -+ "ClassUseTest1.</span><code><strong><a href=\"../../" + -+ "pkg2/ClassUseTest1.html#method(T)\">method</a></strong>" + -+ "(T t)</code> </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\">" + -+ " </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<T extends ParamTest<<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>>></A></STRONG></CODE>" -+ "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" + -+ "ClassUseTest2.html\" title=\"class in pkg2\">ClassUseTest2<T " + -+ "extends ParamTest<<a href=\"../../pkg2/Foo3.html\" title=\"class " + -+ "in pkg2\">Foo3</a>>></a></strong></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\">" + -+ " </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 t)</CODE>" -+ "<td class=\"colLast\"><span class=\"strong\">ClassUseTest2." + -+ "</span><code><strong><a href=\"../../pkg2/" + -+ "ClassUseTest2.html#method(T)\">method</a></strong>" + -+ "(T t)</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\"> </span></caption>" - }, - {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html", -- "<A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A><<A HREF=\"../../pkg2/Foo.html\" title=\"class in pkg2\">Foo</A>></CODE></FONT></TD>" -+ "<td class=\"colFirst\"><code><a href=\"../../pkg2/" + -+ "ParamTest.html\" title=\"class in pkg2\">ParamTest</a>" + -+ "<<a href=\"../../pkg2/Foo.html\" title=\"class in pkg2\">" + -+ "Foo</a>></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\">" + -+ " </span></caption>" - }, - {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "ParamTest.html", -- "<T extends <A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A><<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>>>" -+ "<td class=\"colFirst\"><code><T extends <a href=\"../" + -+ "../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest" + -+ "</a><<a href=\"../../pkg2/Foo3.html\" title=\"class in " + -+ "pkg2\">Foo3</a>>> <br><a href=\"../../pkg2/" + -+ "ParamTest.html\" title=\"class in pkg2\">ParamTest</a>" + -+ "<<a href=\"../../pkg2/Foo3.html\" title=\"class in " + -+ "pkg2\">Foo3</a>></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\"> </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<T extends ParamTest<<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>>></A></STRONG></CODE>" -+ "<td class=\"colLast\"><code><strong><a href=\"../../" + -+ "pkg2/ClassUseTest2.html\" title=\"class in pkg2\">" + -+ "ClassUseTest2<T extends ParamTest<<a href=\"../../" + -+ "pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</a>>>" + -+ "</a></strong></code> </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\"> " + -+ "</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 t)</CODE>" -+ "<td class=\"colLast\"><span class=\"strong\">ClassUseTest2." + -+ "</span><code><strong><a href=\"../../pkg2/" + -+ "ClassUseTest2.html#method(T)\">method</a></strong>" + -+ "(T t)</code> </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\">" + -+ " </span></caption>" - }, - {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo3.html", -- "<T extends <A HREF=\"../../pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</A><<A HREF=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3</A>>>" -+ "<td class=\"colFirst\"><code><T extends <a href=\"../../" + -+ "pkg2/ParamTest.html\" title=\"class in pkg2\">ParamTest</a><" + -+ "<a href=\"../../pkg2/Foo3.html\" title=\"class in pkg2\">Foo3" + -+ "</a>>> <br><a href=\"../../pkg2/ParamTest.html\" " + -+ "title=\"class in pkg2\">ParamTest</a><<a href=\"../../pkg2/" + -+ "Foo3.html\" title=\"class in pkg2\">Foo3</a>></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\">" + -+ " </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<T extends ParamTest2<java.util.List<? extends Foo4>>></A></STRONG></CODE>" -+ "<td class=\"colLast\"><code><strong><a href=\"../../pkg2/" + -+ "ClassUseTest3.html\" title=\"class in pkg2\">" + -+ "ClassUseTest3<T extends ParamTest2<java.util.List" + -+ "<? extends Foo4>>></a></strong></code> </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\">" + -+ " </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 t)</CODE>" -+ "<td class=\"colLast\"><span class=\"strong\">ClassUseTest3" + -+ ".</span><code><strong><a href=\"../../pkg2/ClassUseTest3." + -+ "html#method(T)\">method</a></strong>(T t)</code> </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", -- "<T extends <A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">ParamTest2</A><java.util.List<? extends <A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</A>>>>" -+ "<td class=\"colFirst\"><code><T extends <a href=\"../" + -+ "../pkg2/ParamTest2.html\" title=\"class in pkg2\">" + -+ "ParamTest2</a><java.util.List<? extends <a href=\".." + -+ "/../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</a>>" + -+ ">> <br><a href=\"../../pkg2/ParamTest2.html\" " + -+ "title=\"class in pkg2\">ParamTest2</a><java.util.List" + -+ "<? extends <a href=\"../../pkg2/Foo4.html\" title=\"" + -+ "class in pkg2\">Foo4</a>>></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\"> " + -+ "</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<T extends ParamTest2<java.util.List<? extends Foo4>>></A></STRONG></CODE>" -+ "<td class=\"colLast\"><code><strong><a href=\"../../" + -+ "pkg2/ClassUseTest3.html\" title=\"class in pkg2\">" + -+ "ClassUseTest3<T extends ParamTest2<java.util.List" + -+ "<? extends Foo4>>></a></strong></code> </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\"> </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 t)</CODE>" -+ "<td class=\"colLast\"><span class=\"strong\">ClassUseTest3." + -+ "</span><code><strong><a href=\"../../pkg2/ClassUseTest3." + -+ "html#method(T)\">method</a></strong>(T t)</code>" + -+ " </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\"> </span></caption>" - }, - {BUG_ID + FS + "pkg2" + FS + "class-use" + FS + "Foo4.html", -- "<T extends <A HREF=\"../../pkg2/ParamTest2.html\" title=\"class in pkg2\">ParamTest2</A><java.util.List<? extends <A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</A>>>>" -+ "<td class=\"colFirst\"><code><T extends <a href=\"../" + -+ "../pkg2/ParamTest2.html\" title=\"class in pkg2\">" + -+ "ParamTest2</a><java.util.List<? extends <a href=\".." + -+ "/../pkg2/Foo4.html\" title=\"class in pkg2\">Foo4</a>>" + -+ ">> <br><a href=\"../../pkg2/ParamTest2.html\" " + -+ "title=\"class in pkg2\">ParamTest2</a><java.util.List" + -+ "<? extends <a href=\"../../pkg2/Foo4.html\" title=\"" + -+ "class in pkg2\">Foo4</a>>></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> 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<<A HREF=\"../../pkg2/Foo4.html\" " + -- "title=\"class in pkg2\">Foo4</A>> 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\"> " + -+ "</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<<a href=\"../../pkg2/Foo4.html\" title=\"" + -+ "class in pkg2\">Foo4</a>> p)</code> </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<" + -- "<A HREF=\"../../pkg2/Foo4.html\" title=\"class in pkg2\">" + -- "Foo4</A>> 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\"> " + -+ "</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\"> " + -+ "</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> 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\"> </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> 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\">" + -+ " </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> 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\">" + -+ " </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> void</CODE></FONT></TD>" + NL + -- "<TD><CODE><STRONG>AnnotationTypeUsage.</STRONG><STRONG>" + -- "<A HREF=\"../../pkg/AnnotationTypeUsage.html#methodWithParams" + -- "(int, int)\">methodWithParams</A></STRONG>(int documented," + NL + -- " int 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\">" + -+ " </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\">" + -+ " </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 documented," + NL + -- " int 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\"> </span></caption>" - }, - - //================================= - // TYPE PARAMETER IN INDEX - //================================= - {BUG_ID + FS + "index-all.html", -- "<A HREF=\"./pkg2/Foo.html#method(java.util.Vector)\"><STRONG>method(Vector<Object>)</STRONG></A>" -+ "<span class=\"strong\"><a href=\"./pkg2/Foo.html#method(java.util.Vector)\">" + -+ "method(Vector<Object>)</a></span>" - }, - //================================= - // TYPE PARAMETER IN INDEX - //================================= - {BUG_ID + FS + "index-all.html", -- "<A HREF=\"./pkg2/Foo.html#method(java.util.Vector)\"><STRONG>method(Vector<Object>)</STRONG></A>" -+ "<span class=\"strong\"><a href=\"./pkg2/Foo.html#method(java.util.Vector)\">" + -+ "method(Vector<Object>)</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><<A HREF=\"../pkg/TypeParameters.html\" " + -- "title=\"type parameter in TypeParameters\">E</A>>" -+ "<a href=\"../pkg/TypeParameters.html\" title=\"class in pkg\">" + -+ "TypeParameters</a><<a href=\"../pkg/TypeParameters.html\" " + -+ "title=\"type parameter in TypeParameters\">E</a>>" - }, - - //============================================================== -@@ -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 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 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 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 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 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 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: <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> in class <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> in class <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> in class <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> " -+ "<li>Package</li>" - }, - {BUG_ID + "-2" + FS + "index-all.html", -- " <FONT CLASS=\"NavBarFont1\">Package</FONT> " -+ "<li>Package</li>" - }, - {BUG_ID + "-2" + FS + "help-doc.html", -- " <FONT CLASS=\"NavBarFont1\">Package</FONT> " -+ "<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 p1)" -+ "<pre>public void methodInheritedFromParent(int 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 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 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 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> in class <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> in interface <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 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: <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>" + -+ " in interface <code>" + -+ "<a href=\"../pkg2/I.html\" title=\"interface in pkg2\">I</a>" + -+ "<java.lang.String></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 java.lang.Object readResolve()"}, - {BUG_ID + FS + "serialized-form.html", -- "protected java.lang.Object <STRONG>writeReplace</STRONG>()"}, -+ "protected java.lang.Object writeReplace()"}, - {BUG_ID + FS + "serialized-form.html", -- "protected java.lang.Object <STRONG>readObjectNoData</STRONG>()"}, -+ "protected java.lang.Object 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> <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> </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> <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> </DD><DD>" + -- "The name for this class." + NL + "<P>" + NL + "</DD>" + NL + -- "<DD> </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>" + -+ " <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 + " " + 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>" + -+ " <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>" + -+ " </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> <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> <I>As of JDK version" + -+ {BUG_ID + FS + "serialized-form.html", "<pre>boolean undecorated</pre>" + NL + -+ "<div class=\"block\"><span class=\"strong\">Deprecated.</span> <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> <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> </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] = " 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] = " 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", -- " 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><W extends java.lang.String,V extends java.util.List> " + NL + -- "<BR>" + NL + -- "java.lang.Object</CODE>"}, -+ "<td class=\"colFirst\"><code><W extends java.lang.String,V extends " + -+ "java.util.List> <br>java.lang.Object</code></td>"}, - {BUG_ID + FS + "pkg" + FS + "C.html", -- "<CODE><T> java.lang.Object</CODE>"}, -+ "<code><T> java.lang.Object</code>"}, - {BUG_ID + FS + "pkg" + FS + "package-summary.html", - "C<E extends Parent>"}, - //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 <Unnamed>"+NL+"</H2>" -+ "<h1 title=\"Package\" class=\"title\">Package <Unnamed></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 <Unnamed>"+NL+"</H2>" -+ "<h1 class=\"title\">Hierarchy For Package <Unnamed></h1>" - }, - {BUG_ID + FS + "index-all.html", - "title=\"class in <Unnamed>\"" - }, -- {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; |