langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java
changeset 7614 cfadc977ca75
parent 5520 86e4b9a9da40
child 7681 1f0819a3341f
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
@@ -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 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 writeContentsHeader() {
-        strong(configuration.getText("doclet.Contents"));
-        ul();
+    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 writeContentsFooter() {
-        ulEnd();
-        println();
+    public Content getConstantSummaries() {
+        HtmlTree summariesDiv = new HtmlTree(HtmlTag.DIV);
+        summariesDiv.addStyle(HtmlStyle.constantValuesContainer);
+        return summariesDiv;
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeLinkToPackageContent(PackageDoc pkg, String parsedPackageName, Set<String> printedPackageHeaders) {
-        String packageName = pkg.name();
-        //add link to summary
-        li();
-        if (packageName.length() == 0) {
-            printHyperLink("#" + DocletConstants.UNNAMED_PACKAGE_ANCHOR,
-                           DocletConstants.DEFAULT_PACKAGE_NAME);
+    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 {
-            printHyperLink("#" + parsedPackageName, parsedPackageName + ".*");
-            printedPackageHeaders.add(parsedPackageName);
+            summariesTree.addContent(getMarkerAnchor(
+                    parsedPackageName));
+            pkgNameContent = getPackageLabel(parsedPackageName);
         }
-        println();
+        Content headingContent = new StringContent(".*");
+        Content heading = HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING, true,
+                pkgNameContent);
+        heading.addContent(headingContent);
+        summariesTree.addContent(heading);
     }
 
     /**
      * {@inheritDoc}
      */
-    public void writeConstantMembersHeader(ClassDoc cd) {
+    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);
         }
     }
 
     /**
-     * {@inheritDoc}
-     */
-    public void writeConstantMembersFooter(ClassDoc cd) {
-        tableFooter(false);
-        p();
-    }
-
-    /**
-     * Print the class name in the table heading.
-     * @param classStr the heading to print.
+     * 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 void writeClassName(String classStr) {
-        table(1, 3, 0, constantsTableSummary);
-        tableSubCaptionStart();
-        write(classStr);
-        tableCaptionEnd();
-        summaryTableHeader(constantsTableHeader, "col");
-    }
-
-    private void tableFooter(boolean isHeader) {
-        fontEnd();
-        if (isHeader) {
-            thEnd();
-        } else {
-            tdEnd();
-        }
-        trEnd();
-        tableEnd();
-        p();
+    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 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;
+    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);
         }
-        table(1, "100%", 3, 0);
-        trBgcolorStyle("#CCCCFF", "TableHeadingColor");
-        thAlign("left");
-        font("+2");
-        write(pkgname + ".*");
-        tableFooter(true);
+        Content table = getConstantMembersHeader(cd);
+        table.addContent(tbody);
+        Content li = HtmlTree.LI(HtmlStyle.blockList, table);
+        classConstantTree.addContent(li);
+    }
+
+    /**
+     * Add the row for the constant summary table.
+     *
+     * @param member the field to be documented.
+     * @param trTree an htmltree object for the table row
+     */
+    private void addConstantMember(FieldDoc member, HtmlTree trTree) {
+        trTree.addContent(getTypeColumn(member));
+        trTree.addContent(getNameColumn(member));
+        trTree.addContent(getValue(member));
+    }
+
+    /**
+     * 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());
+        }
+        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 writeConstantMembers(ClassDoc cd, List<FieldDoc> fields) {
-        currentClassDoc = cd;
-        for (int i = 0; i < fields.size(); ++i) {
-            writeConstantMember(fields.get(i));
-        }
-    }
-
-    private void writeConstantMember(FieldDoc member) {
-        trBgcolorStyle("white", "TableRowColor");
-        anchor(currentClassDoc.qualifiedName() + "." + member.name());
-        writeTypeColumn(member);
-        writeNameColumn(member);
-        writeValue(member);
-        trEnd();
+    public void addFooter(Content contentTree) {
+        addNavLinks(false, contentTree);
+        addBottom(contentTree);
     }
 
-    private void writeTypeColumn(FieldDoc member) {
-        tdAlign("right");
-        font("-1");
-        code();
-        StringTokenizer mods = new StringTokenizer(member.modifiers());
-        while(mods.hasMoreTokens()) {
-            print(mods.nextToken() + "&nbsp;");
-        }
-        printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY,
-            member.type()));
-        codeEnd();
-        fontEnd();
-        tdEnd();
-    }
-
-    private void writeNameColumn(FieldDoc member) {
-        tdAlign("left");
-        code();
-        printDocLink(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, member,
-            member.name(), false);
-        codeEnd();
-        tdEnd();
-    }
-
-    private void writeValue(FieldDoc member) {
-        tdAlign("right");
-        code();
-        print(Util.escapeHtmlChars(member.constantValueExpression()));
-        codeEnd();
-        tdEnd();
+    /**
+     * {@inheritDoc}
+     */
+    public void printDocument(Content contentTree) {
+        printHtmlDocument(null, true, contentTree);
     }
 }