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 }