src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java

changeset 766
90af8d87741f
parent 554
9d9f26857129
child 798
4868a36f6fd8
     1.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java	Tue Nov 30 09:38:48 2010 -0800
     1.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/ConstantsSummaryWriterImpl.java	Wed Dec 01 11:02:38 2010 -0800
     1.3 @@ -25,11 +25,12 @@
     1.4  
     1.5  package com.sun.tools.doclets.formats.html;
     1.6  
     1.7 +import java.io.*;
     1.8 +import java.util.*;
     1.9 +import com.sun.javadoc.*;
    1.10  import com.sun.tools.doclets.internal.toolkit.*;
    1.11  import com.sun.tools.doclets.internal.toolkit.util.*;
    1.12 -import com.sun.javadoc.*;
    1.13 -import java.io.*;
    1.14 -import java.util.*;
    1.15 +import com.sun.tools.doclets.formats.html.markup.*;
    1.16  
    1.17  /**
    1.18   * Write the Constants Summary Page in HTML format.
    1.19 @@ -76,67 +77,106 @@
    1.20      /**
    1.21       * {@inheritDoc}
    1.22       */
    1.23 -    public void writeHeader() {
    1.24 -        printHtmlHeader(configuration.getText("doclet.Constants_Summary"),
    1.25 -            null, true);
    1.26 -        printTop();
    1.27 -        navLinks(true);
    1.28 -        hr();
    1.29 -
    1.30 -        center();
    1.31 -        h1(); printText("doclet.Constants_Summary"); h1End();
    1.32 -        centerEnd();
    1.33 -
    1.34 -        hr(4, "noshade");
    1.35 +    public Content getHeader() {
    1.36 +        String label = configuration.getText("doclet.Constants_Summary");
    1.37 +        Content bodyTree = getBody(true, getWindowTitle(label));
    1.38 +        addTop(bodyTree);
    1.39 +        addNavLinks(true, bodyTree);
    1.40 +        return bodyTree;
    1.41      }
    1.42  
    1.43      /**
    1.44       * {@inheritDoc}
    1.45       */
    1.46 -    public void writeFooter() {
    1.47 -        hr();
    1.48 -        navLinks(false);
    1.49 -        printBottom();
    1.50 -        printBodyHtmlEnd();
    1.51 +    public Content getContentsHeader() {
    1.52 +        return new HtmlTree(HtmlTag.UL);
    1.53      }
    1.54  
    1.55      /**
    1.56       * {@inheritDoc}
    1.57       */
    1.58 -    public void writeContentsHeader() {
    1.59 -        strong(configuration.getText("doclet.Contents"));
    1.60 -        ul();
    1.61 +    public void addLinkToPackageContent(PackageDoc pkg, String parsedPackageName,
    1.62 +            Set<String> printedPackageHeaders, Content contentListTree) {
    1.63 +        String packageName = pkg.name();
    1.64 +        //add link to summary
    1.65 +        Content link;
    1.66 +        if (packageName.length() == 0) {
    1.67 +            link = getHyperLink("#" + DocletConstants.UNNAMED_PACKAGE_ANCHOR,
    1.68 +                    "", defaultPackageLabel, "", "");
    1.69 +        } else {
    1.70 +            Content packageNameContent = getPackageLabel(parsedPackageName);
    1.71 +            packageNameContent.addContent(".*");
    1.72 +            link = getHyperLink("#" + parsedPackageName,
    1.73 +                    "", packageNameContent, "", "");
    1.74 +            printedPackageHeaders.add(parsedPackageName);
    1.75 +        }
    1.76 +        contentListTree.addContent(HtmlTree.LI(link));
    1.77      }
    1.78  
    1.79      /**
    1.80       * {@inheritDoc}
    1.81       */
    1.82 -    public void writeContentsFooter() {
    1.83 -        ulEnd();
    1.84 -        println();
    1.85 +    public Content getContentsList(Content contentListTree) {
    1.86 +        Content titleContent = getResource(
    1.87 +                "doclet.Constants_Summary");
    1.88 +        Content pHeading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
    1.89 +                HtmlStyle.title, titleContent);
    1.90 +        Content div = HtmlTree.DIV(HtmlStyle.header, pHeading);
    1.91 +        Content headingContent = getResource(
    1.92 +                "doclet.Contents");
    1.93 +        div.addContent(HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, true,
    1.94 +                headingContent));
    1.95 +        div.addContent(contentListTree);
    1.96 +        return div;
    1.97      }
    1.98  
    1.99      /**
   1.100       * {@inheritDoc}
   1.101       */
   1.102 -    public void writeLinkToPackageContent(PackageDoc pkg, String parsedPackageName, Set<String> printedPackageHeaders) {
   1.103 -        String packageName = pkg.name();
   1.104 -        //add link to summary
   1.105 -        li();
   1.106 -        if (packageName.length() == 0) {
   1.107 -            printHyperLink("#" + DocletConstants.UNNAMED_PACKAGE_ANCHOR,
   1.108 -                           DocletConstants.DEFAULT_PACKAGE_NAME);
   1.109 -        } else {
   1.110 -            printHyperLink("#" + parsedPackageName, parsedPackageName + ".*");
   1.111 -            printedPackageHeaders.add(parsedPackageName);
   1.112 -        }
   1.113 -        println();
   1.114 +    public Content getConstantSummaries() {
   1.115 +        HtmlTree summariesDiv = new HtmlTree(HtmlTag.DIV);
   1.116 +        summariesDiv.addStyle(HtmlStyle.constantValuesContainer);
   1.117 +        return summariesDiv;
   1.118      }
   1.119  
   1.120      /**
   1.121       * {@inheritDoc}
   1.122       */
   1.123 -    public void writeConstantMembersHeader(ClassDoc cd) {
   1.124 +    public void addPackageName(PackageDoc pkg, String parsedPackageName,
   1.125 +            Content summariesTree) {
   1.126 +        Content pkgNameContent;
   1.127 +        if (parsedPackageName.length() == 0) {
   1.128 +            summariesTree.addContent(getMarkerAnchor(
   1.129 +                    DocletConstants.UNNAMED_PACKAGE_ANCHOR));
   1.130 +            pkgNameContent = defaultPackageLabel;
   1.131 +        } else {
   1.132 +            summariesTree.addContent(getMarkerAnchor(
   1.133 +                    parsedPackageName));
   1.134 +            pkgNameContent = getPackageLabel(parsedPackageName);
   1.135 +        }
   1.136 +        Content headingContent = new StringContent(".*");
   1.137 +        Content heading = HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING, true,
   1.138 +                pkgNameContent);
   1.139 +        heading.addContent(headingContent);
   1.140 +        summariesTree.addContent(heading);
   1.141 +    }
   1.142 +
   1.143 +    /**
   1.144 +     * {@inheritDoc}
   1.145 +     */
   1.146 +    public Content getClassConstantHeader() {
   1.147 +        HtmlTree ul = new HtmlTree(HtmlTag.UL);
   1.148 +        ul.addStyle(HtmlStyle.blockList);
   1.149 +        return ul;
   1.150 +    }
   1.151 +
   1.152 +    /**
   1.153 +     * Get the table caption and header for the constant summary table
   1.154 +     *
   1.155 +     * @param cd classdoc to be documented
   1.156 +     * @return constant members header content
   1.157 +     */
   1.158 +    public Content getConstantMembersHeader(ClassDoc cd) {
   1.159          //generate links backward only to public classes.
   1.160          String classlink = (cd.isPublic() || cd.isProtected())?
   1.161              getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, cd,
   1.162 @@ -144,112 +184,120 @@
   1.163              cd.qualifiedName();
   1.164          String name = cd.containingPackage().name();
   1.165          if (name.length() > 0) {
   1.166 -            writeClassName(name + "." + classlink);
   1.167 +            return getClassName(name + "." + classlink);
   1.168          } else {
   1.169 -            writeClassName(classlink);
   1.170 +            return getClassName(classlink);
   1.171          }
   1.172      }
   1.173  
   1.174      /**
   1.175 +     * Get the class name in the table caption and the table header.
   1.176 +     *
   1.177 +     * @param classStr the class name to print.
   1.178 +     * @return the table caption and header
   1.179 +     */
   1.180 +    protected Content getClassName(String classStr) {
   1.181 +        Content table = HtmlTree.TABLE(0, 3, 0, constantsTableSummary,
   1.182 +                getTableCaption(classStr));
   1.183 +        table.addContent(getSummaryTableHeader(constantsTableHeader, "col"));
   1.184 +        return table;
   1.185 +    }
   1.186 +
   1.187 +    /**
   1.188       * {@inheritDoc}
   1.189       */
   1.190 -    public void writeConstantMembersFooter(ClassDoc cd) {
   1.191 -        tableFooter(false);
   1.192 -        p();
   1.193 +    public void addConstantMembers(ClassDoc cd, List<FieldDoc> fields,
   1.194 +            Content classConstantTree) {
   1.195 +        currentClassDoc = cd;
   1.196 +        Content tbody = new HtmlTree(HtmlTag.TBODY);
   1.197 +        for (int i = 0; i < fields.size(); ++i) {
   1.198 +            HtmlTree tr = new HtmlTree(HtmlTag.TR);
   1.199 +            if (i%2 == 0)
   1.200 +                tr.addStyle(HtmlStyle.altColor);
   1.201 +            else
   1.202 +                tr.addStyle(HtmlStyle.rowColor);
   1.203 +            addConstantMember(fields.get(i), tr);
   1.204 +            tbody.addContent(tr);
   1.205 +        }
   1.206 +        Content table = getConstantMembersHeader(cd);
   1.207 +        table.addContent(tbody);
   1.208 +        Content li = HtmlTree.LI(HtmlStyle.blockList, table);
   1.209 +        classConstantTree.addContent(li);
   1.210      }
   1.211  
   1.212      /**
   1.213 -     * Print the class name in the table heading.
   1.214 -     * @param classStr the heading to print.
   1.215 +     * Add the row for the constant summary table.
   1.216 +     *
   1.217 +     * @param member the field to be documented.
   1.218 +     * @param trTree an htmltree object for the table row
   1.219       */
   1.220 -    protected void writeClassName(String classStr) {
   1.221 -        table(1, 3, 0, constantsTableSummary);
   1.222 -        tableSubCaptionStart();
   1.223 -        write(classStr);
   1.224 -        tableCaptionEnd();
   1.225 -        summaryTableHeader(constantsTableHeader, "col");
   1.226 +    private void addConstantMember(FieldDoc member, HtmlTree trTree) {
   1.227 +        trTree.addContent(getTypeColumn(member));
   1.228 +        trTree.addContent(getNameColumn(member));
   1.229 +        trTree.addContent(getValue(member));
   1.230      }
   1.231  
   1.232 -    private void tableFooter(boolean isHeader) {
   1.233 -        fontEnd();
   1.234 -        if (isHeader) {
   1.235 -            thEnd();
   1.236 -        } else {
   1.237 -            tdEnd();
   1.238 +    /**
   1.239 +     * Get the type column for the constant summary table row.
   1.240 +     *
   1.241 +     * @param member the field to be documented.
   1.242 +     * @return the type column of the constant table row
   1.243 +     */
   1.244 +    private Content getTypeColumn(FieldDoc member) {
   1.245 +        Content anchor = getMarkerAnchor(currentClassDoc.qualifiedName() +
   1.246 +                "." + member.name());
   1.247 +        Content tdType = HtmlTree.TD(HtmlStyle.colFirst, anchor);
   1.248 +        Content code = new HtmlTree(HtmlTag.CODE);
   1.249 +        StringTokenizer mods = new StringTokenizer(member.modifiers());
   1.250 +        while(mods.hasMoreTokens()) {
   1.251 +            Content modifier = new StringContent(mods.nextToken());
   1.252 +            code.addContent(modifier);
   1.253 +            code.addContent(getSpace());
   1.254          }
   1.255 -        trEnd();
   1.256 -        tableEnd();
   1.257 -        p();
   1.258 +        Content type = new RawHtml(getLink(new LinkInfoImpl(
   1.259 +                LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, member.type())));
   1.260 +        code.addContent(type);
   1.261 +        tdType.addContent(code);
   1.262 +        return tdType;
   1.263 +    }
   1.264 +
   1.265 +    /**
   1.266 +     * Get the name column for the constant summary table row.
   1.267 +     *
   1.268 +     * @param member the field to be documented.
   1.269 +     * @return the name column of the constant table row
   1.270 +     */
   1.271 +    private Content getNameColumn(FieldDoc member) {
   1.272 +        Content nameContent = new RawHtml(getDocLink(
   1.273 +                LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, member, member.name(), false));
   1.274 +        Content code = HtmlTree.CODE(nameContent);
   1.275 +        return HtmlTree.TD(code);
   1.276 +    }
   1.277 +
   1.278 +    /**
   1.279 +     * Get the value column for the constant summary table row.
   1.280 +     *
   1.281 +     * @param member the field to be documented.
   1.282 +     * @return the value column of the constant table row
   1.283 +     */
   1.284 +    private Content getValue(FieldDoc member) {
   1.285 +        Content valueContent = new StringContent(member.constantValueExpression());
   1.286 +        Content code = HtmlTree.CODE(valueContent);
   1.287 +        return HtmlTree.TD(HtmlStyle.colLast, code);
   1.288      }
   1.289  
   1.290      /**
   1.291       * {@inheritDoc}
   1.292       */
   1.293 -    public void writePackageName(PackageDoc pkg, String parsedPackageName) {
   1.294 -        String pkgname;
   1.295 -        if (parsedPackageName.length() == 0) {
   1.296 -            anchor(DocletConstants.UNNAMED_PACKAGE_ANCHOR);
   1.297 -            pkgname = DocletConstants.DEFAULT_PACKAGE_NAME;
   1.298 -        } else {
   1.299 -            anchor(parsedPackageName);
   1.300 -            pkgname = parsedPackageName;
   1.301 -        }
   1.302 -        table(1, "100%", 3, 0);
   1.303 -        trBgcolorStyle("#CCCCFF", "TableHeadingColor");
   1.304 -        thAlign("left");
   1.305 -        font("+2");
   1.306 -        write(pkgname + ".*");
   1.307 -        tableFooter(true);
   1.308 +    public void addFooter(Content contentTree) {
   1.309 +        addNavLinks(false, contentTree);
   1.310 +        addBottom(contentTree);
   1.311      }
   1.312  
   1.313      /**
   1.314       * {@inheritDoc}
   1.315       */
   1.316 -    public void writeConstantMembers(ClassDoc cd, List<FieldDoc> fields) {
   1.317 -        currentClassDoc = cd;
   1.318 -        for (int i = 0; i < fields.size(); ++i) {
   1.319 -            writeConstantMember(fields.get(i));
   1.320 -        }
   1.321 -    }
   1.322 -
   1.323 -    private void writeConstantMember(FieldDoc member) {
   1.324 -        trBgcolorStyle("white", "TableRowColor");
   1.325 -        anchor(currentClassDoc.qualifiedName() + "." + member.name());
   1.326 -        writeTypeColumn(member);
   1.327 -        writeNameColumn(member);
   1.328 -        writeValue(member);
   1.329 -        trEnd();
   1.330 -    }
   1.331 -
   1.332 -    private void writeTypeColumn(FieldDoc member) {
   1.333 -        tdAlign("right");
   1.334 -        font("-1");
   1.335 -        code();
   1.336 -        StringTokenizer mods = new StringTokenizer(member.modifiers());
   1.337 -        while(mods.hasMoreTokens()) {
   1.338 -            print(mods.nextToken() + "&nbsp;");
   1.339 -        }
   1.340 -        printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY,
   1.341 -            member.type()));
   1.342 -        codeEnd();
   1.343 -        fontEnd();
   1.344 -        tdEnd();
   1.345 -    }
   1.346 -
   1.347 -    private void writeNameColumn(FieldDoc member) {
   1.348 -        tdAlign("left");
   1.349 -        code();
   1.350 -        printDocLink(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, member,
   1.351 -            member.name(), false);
   1.352 -        codeEnd();
   1.353 -        tdEnd();
   1.354 -    }
   1.355 -
   1.356 -    private void writeValue(FieldDoc member) {
   1.357 -        tdAlign("right");
   1.358 -        code();
   1.359 -        print(Util.escapeHtmlChars(member.constantValueExpression()));
   1.360 -        codeEnd();
   1.361 -        tdEnd();
   1.362 +    public void printDocument(Content contentTree) {
   1.363 +        printHtmlDocument(null, true, contentTree);
   1.364      }
   1.365  }

mercurial