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

changeset 766
90af8d87741f
parent 554
9d9f26857129
child 798
4868a36f6fd8
     1.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java	Tue Nov 30 09:38:48 2010 -0800
     1.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/AbstractExecutableMemberWriter.java	Wed Dec 01 11:02:38 2010 -0800
     1.3 @@ -26,12 +26,16 @@
     1.4  package com.sun.tools.doclets.formats.html;
     1.5  
     1.6  import com.sun.javadoc.*;
     1.7 +import com.sun.tools.doclets.formats.html.markup.*;
     1.8 +import com.sun.tools.doclets.internal.toolkit.*;
     1.9 +import com.sun.tools.doclets.internal.toolkit.util.*;
    1.10  
    1.11  /**
    1.12   * Print method and constructor info.
    1.13   *
    1.14   * @author Robert Field
    1.15   * @author Atul M Dambalkar
    1.16 + * @author Bhavesh Patel (Modified)
    1.17   */
    1.18  public abstract class AbstractExecutableMemberWriter extends AbstractMemberWriter {
    1.19  
    1.20 @@ -45,82 +49,111 @@
    1.21      }
    1.22  
    1.23      /**
    1.24 -     * Write the type parameters for the executable member.
    1.25 +     * Add the type parameters for the executable member.
    1.26       *
    1.27       * @param member the member to write type parameters for.
    1.28 +     * @param htmltree the content tree to which the parameters will be added.
    1.29       * @return the display length required to write this information.
    1.30       */
    1.31 -    protected int writeTypeParameters(ExecutableMemberDoc member) {
    1.32 +    protected int addTypeParameters(ExecutableMemberDoc member, Content htmltree) {
    1.33          LinkInfoImpl linkInfo = new LinkInfoImpl(
    1.34              LinkInfoImpl.CONTEXT_MEMBER_TYPE_PARAMS, member, false);
    1.35          String typeParameters = writer.getTypeParameterLinks(linkInfo);
    1.36          if (linkInfo.displayLength > 0) {
    1.37 -            writer.print(typeParameters + " ");
    1.38 +            Content linkContent = new RawHtml(typeParameters);
    1.39 +            htmltree.addContent(linkContent);
    1.40 +            htmltree.addContent(writer.getSpace());
    1.41              writer.displayLength += linkInfo.displayLength + 1;
    1.42          }
    1.43          return linkInfo.displayLength;
    1.44      }
    1.45  
    1.46 -    protected void writeSignature(ExecutableMemberDoc member) {
    1.47 -        writer.displayLength = 0;
    1.48 -        writer.pre();
    1.49 -        writer.writeAnnotationInfo(member);
    1.50 -        printModifiers(member);
    1.51 -        writeTypeParameters(member);
    1.52 -        if (configuration().linksource &&
    1.53 -            member.position().line() != classdoc.position().line()) {
    1.54 -            writer.printSrcLink(member, member.name());
    1.55 -        } else {
    1.56 -            strong(member.name());
    1.57 -        }
    1.58 -        writeParameters(member);
    1.59 -        writeExceptions(member);
    1.60 -        writer.preEnd();
    1.61 +    /**
    1.62 +     * {@inheritDoc}
    1.63 +     */
    1.64 +    protected Content getDeprecatedLink(ProgramElementDoc member) {
    1.65 +        ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
    1.66 +        return writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER, (MemberDoc) emd,
    1.67 +                emd.qualifiedName() + emd.flatSignature());
    1.68      }
    1.69  
    1.70 -    protected void writeDeprecatedLink(ProgramElementDoc member) {
    1.71 +    /**
    1.72 +     * Add the summary link for the member.
    1.73 +     *
    1.74 +     * @param context the id of the context where the link will be printed
    1.75 +     * @param classDoc the classDoc that we should link to
    1.76 +     * @param member the member being linked to
    1.77 +     * @param tdSummary the content tree to which the link will be added
    1.78 +     */
    1.79 +    protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
    1.80 +            Content tdSummary) {
    1.81          ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
    1.82 -        writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, (MemberDoc) emd,
    1.83 -            emd.qualifiedName() + emd.flatSignature(), false);
    1.84 +        String name = emd.name();
    1.85 +        Content strong = HtmlTree.STRONG(new RawHtml(
    1.86 +                writer.getDocLink(context, cd, (MemberDoc) emd,
    1.87 +                name, false)));
    1.88 +        Content code = HtmlTree.CODE(strong);
    1.89 +        writer.displayLength = name.length();
    1.90 +        addParameters(emd, false, code);
    1.91 +        tdSummary.addContent(code);
    1.92      }
    1.93  
    1.94 -    protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) {
    1.95 -        ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
    1.96 -        String name = emd.name();
    1.97 -        writer.strong();
    1.98 -        writer.printDocLink(context, cd, (MemberDoc) emd,
    1.99 -            name, false);
   1.100 -        writer.strongEnd();
   1.101 -        writer.displayLength = name.length();
   1.102 -        writeParameters(emd, false);
   1.103 +    /**
   1.104 +     * Add the inherited summary link for the member.
   1.105 +     *
   1.106 +     * @param classDoc the classDoc that we should link to
   1.107 +     * @param member the member being linked to
   1.108 +     * @param linksTree the content tree to which the link will be added
   1.109 +     */
   1.110 +    protected void addInheritedSummaryLink(ClassDoc cd,
   1.111 +            ProgramElementDoc member, Content linksTree) {
   1.112 +        linksTree.addContent(new RawHtml(
   1.113 +                writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc) member,
   1.114 +                member.name(), false)));
   1.115      }
   1.116  
   1.117 -    protected void writeInheritedSummaryLink(ClassDoc cd,
   1.118 -            ProgramElementDoc member) {
   1.119 -        writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc) member,
   1.120 -            member.name(), false);
   1.121 -    }
   1.122 -
   1.123 -    protected void writeParam(ExecutableMemberDoc member, Parameter param,
   1.124 -        boolean isVarArg) {
   1.125 +    /**
   1.126 +     * Add the parameter for the executable member.
   1.127 +     *
   1.128 +     * @param member the member to write parameter for.
   1.129 +     * @param param the parameter that needs to be written.
   1.130 +     * @param isVarArg true if this is a link to var arg.
   1.131 +     * @param tree the content tree to which the parameter information will be added.
   1.132 +     */
   1.133 +    protected void addParam(ExecutableMemberDoc member, Parameter param,
   1.134 +        boolean isVarArg, Content tree) {
   1.135          if (param.type() != null) {
   1.136 -            writer.printLink(new LinkInfoImpl(
   1.137 -                LinkInfoImpl.CONTEXT_EXECUTABLE_MEMBER_PARAM, param.type(),
   1.138 -                isVarArg));
   1.139 +            Content link = new RawHtml(writer.getLink(new LinkInfoImpl(
   1.140 +                    LinkInfoImpl.CONTEXT_EXECUTABLE_MEMBER_PARAM, param.type(),
   1.141 +                    isVarArg)));
   1.142 +            tree.addContent(link);
   1.143          }
   1.144          if(param.name().length() > 0) {
   1.145 -            writer.space();
   1.146 -            writer.print(param.name());
   1.147 +            tree.addContent(writer.getSpace());
   1.148 +            tree.addContent(param.name());
   1.149          }
   1.150      }
   1.151  
   1.152 -    protected void writeParameters(ExecutableMemberDoc member) {
   1.153 -        writeParameters(member, true);
   1.154 +    /**
   1.155 +     * Add all the parameters for the executable member.
   1.156 +     *
   1.157 +     * @param member the member to write parameters for.
   1.158 +     * @param tree the content tree to which the parameters information will be added.
   1.159 +     */
   1.160 +    protected void addParameters(ExecutableMemberDoc member, Content htmltree) {
   1.161 +        addParameters(member, true, htmltree);
   1.162      }
   1.163  
   1.164 -    protected void writeParameters(ExecutableMemberDoc member,
   1.165 -            boolean includeAnnotations) {
   1.166 -        print('(');
   1.167 +    /**
   1.168 +     * Add all the parameters for the executable member.
   1.169 +     *
   1.170 +     * @param member the member to write parameters for.
   1.171 +     * @param includeAnnotations true if annotation information needs to be added.
   1.172 +     * @param tree the content tree to which the parameters information will be added.
   1.173 +     */
   1.174 +    protected void addParameters(ExecutableMemberDoc member,
   1.175 +            boolean includeAnnotations, Content htmltree) {
   1.176 +        htmltree.addContent("(");
   1.177          Parameter[] params = member.parameters();
   1.178          String indent = makeSpace(writer.displayLength);
   1.179          if (configuration().linksource) {
   1.180 @@ -132,58 +165,70 @@
   1.181              Parameter param = params[paramstart];
   1.182              if (!param.name().startsWith("this$")) {
   1.183                  if (includeAnnotations) {
   1.184 -                        boolean foundAnnotations =
   1.185 -                                writer.writeAnnotationInfo(indent.length(), member, param);
   1.186 -                        if (foundAnnotations) {
   1.187 -                                writer.println();
   1.188 -                                writer.print(indent);
   1.189 +                    boolean foundAnnotations =
   1.190 +                            writer.addAnnotationInfo(indent.length(),
   1.191 +                            member, param, htmltree);
   1.192 +                    if (foundAnnotations) {
   1.193 +                        htmltree.addContent(DocletConstants.NL);
   1.194 +                        htmltree.addContent(indent);
   1.195                      }
   1.196                  }
   1.197 -                writeParam(member, param,
   1.198 -                    (paramstart == params.length - 1) && member.isVarArgs());
   1.199 +                addParam(member, param,
   1.200 +                    (paramstart == params.length - 1) && member.isVarArgs(), htmltree);
   1.201                  break;
   1.202              }
   1.203          }
   1.204  
   1.205          for (int i = paramstart + 1; i < params.length; i++) {
   1.206 -            writer.print(',');
   1.207 -            writer.println();
   1.208 -            writer.print(indent);
   1.209 +            htmltree.addContent(",");
   1.210 +            htmltree.addContent(DocletConstants.NL);
   1.211 +            htmltree.addContent(indent);
   1.212              if (includeAnnotations) {
   1.213                  boolean foundAnnotations =
   1.214 -                    writer.writeAnnotationInfo(indent.length(), member, params[i]);
   1.215 +                        writer.addAnnotationInfo(indent.length(), member, params[i],
   1.216 +                        htmltree);
   1.217                  if (foundAnnotations) {
   1.218 -                    writer.println();
   1.219 -                    writer.print(indent);
   1.220 +                    htmltree.addContent(DocletConstants.NL);
   1.221 +                    htmltree.addContent(indent);
   1.222                  }
   1.223              }
   1.224 -            writeParam(member, params[i], (i == params.length - 1) && member.isVarArgs());
   1.225 +            addParam(member, params[i], (i == params.length - 1) && member.isVarArgs(),
   1.226 +                    htmltree);
   1.227          }
   1.228 -        writer.print(')');
   1.229 +        htmltree.addContent(")");
   1.230      }
   1.231  
   1.232 -    protected void writeExceptions(ExecutableMemberDoc member) {
   1.233 +    /**
   1.234 +     * Add exceptions for the executable member.
   1.235 +     *
   1.236 +     * @param member the member to write exceptions for.
   1.237 +     * @param htmltree the content tree to which the exceptions information will be added.
   1.238 +     */
   1.239 +    protected void addExceptions(ExecutableMemberDoc member, Content htmltree) {
   1.240          Type[] exceptions = member.thrownExceptionTypes();
   1.241          if(exceptions.length > 0) {
   1.242              LinkInfoImpl memberTypeParam = new LinkInfoImpl(
   1.243 -                LinkInfoImpl.CONTEXT_MEMBER, member, false);
   1.244 +                    LinkInfoImpl.CONTEXT_MEMBER, member, false);
   1.245              int retlen = getReturnTypeLength(member);
   1.246              writer.getTypeParameterLinks(memberTypeParam);
   1.247              retlen += memberTypeParam.displayLength == 0 ?
   1.248                  0 : memberTypeParam.displayLength + 1;
   1.249              String indent = makeSpace(modifierString(member).length() +
   1.250 -                member.name().length() + retlen - 4);
   1.251 -            writer.println();
   1.252 -            writer.print(indent);
   1.253 -            writer.print("throws ");
   1.254 +                    member.name().length() + retlen - 4);
   1.255 +            htmltree.addContent(DocletConstants.NL);
   1.256 +            htmltree.addContent(indent);
   1.257 +            htmltree.addContent("throws ");
   1.258              indent += "       ";
   1.259 -            writer.printLink(new LinkInfoImpl(
   1.260 -                LinkInfoImpl.CONTEXT_MEMBER, exceptions[0]));
   1.261 +            Content link = new RawHtml(writer.getLink(new LinkInfoImpl(
   1.262 +                    LinkInfoImpl.CONTEXT_MEMBER, exceptions[0])));
   1.263 +            htmltree.addContent(link);
   1.264              for(int i = 1; i < exceptions.length; i++) {
   1.265 -                writer.println(",");
   1.266 -                writer.print(indent);
   1.267 -                writer.printLink(new LinkInfoImpl(
   1.268 -                    LinkInfoImpl.CONTEXT_MEMBER, exceptions[i]));
   1.269 +                htmltree.addContent(",");
   1.270 +                htmltree.addContent(DocletConstants.NL);
   1.271 +                htmltree.addContent(indent);
   1.272 +                Content exceptionLink = new RawHtml(writer.getLink(new LinkInfoImpl(
   1.273 +                        LinkInfoImpl.CONTEXT_MEMBER, exceptions[i])));
   1.274 +                htmltree.addContent(exceptionLink);
   1.275              }
   1.276          }
   1.277      }

mercurial