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

changeset 766
90af8d87741f
parent 554
9d9f26857129
child 798
4868a36f6fd8
equal deleted inserted replaced
758:bcbc86cc5b31 766:90af8d87741f
24 */ 24 */
25 25
26 package com.sun.tools.doclets.formats.html; 26 package com.sun.tools.doclets.formats.html;
27 27
28 import com.sun.javadoc.*; 28 import com.sun.javadoc.*;
29 import com.sun.tools.doclets.formats.html.markup.*;
30 import com.sun.tools.doclets.internal.toolkit.*;
31 import com.sun.tools.doclets.internal.toolkit.util.*;
29 32
30 /** 33 /**
31 * Print method and constructor info. 34 * Print method and constructor info.
32 * 35 *
33 * @author Robert Field 36 * @author Robert Field
34 * @author Atul M Dambalkar 37 * @author Atul M Dambalkar
38 * @author Bhavesh Patel (Modified)
35 */ 39 */
36 public abstract class AbstractExecutableMemberWriter extends AbstractMemberWriter { 40 public abstract class AbstractExecutableMemberWriter extends AbstractMemberWriter {
37 41
38 public AbstractExecutableMemberWriter(SubWriterHolderWriter writer, 42 public AbstractExecutableMemberWriter(SubWriterHolderWriter writer,
39 ClassDoc classdoc) { 43 ClassDoc classdoc) {
43 public AbstractExecutableMemberWriter(SubWriterHolderWriter writer) { 47 public AbstractExecutableMemberWriter(SubWriterHolderWriter writer) {
44 super(writer); 48 super(writer);
45 } 49 }
46 50
47 /** 51 /**
48 * Write the type parameters for the executable member. 52 * Add the type parameters for the executable member.
49 * 53 *
50 * @param member the member to write type parameters for. 54 * @param member the member to write type parameters for.
55 * @param htmltree the content tree to which the parameters will be added.
51 * @return the display length required to write this information. 56 * @return the display length required to write this information.
52 */ 57 */
53 protected int writeTypeParameters(ExecutableMemberDoc member) { 58 protected int addTypeParameters(ExecutableMemberDoc member, Content htmltree) {
54 LinkInfoImpl linkInfo = new LinkInfoImpl( 59 LinkInfoImpl linkInfo = new LinkInfoImpl(
55 LinkInfoImpl.CONTEXT_MEMBER_TYPE_PARAMS, member, false); 60 LinkInfoImpl.CONTEXT_MEMBER_TYPE_PARAMS, member, false);
56 String typeParameters = writer.getTypeParameterLinks(linkInfo); 61 String typeParameters = writer.getTypeParameterLinks(linkInfo);
57 if (linkInfo.displayLength > 0) { 62 if (linkInfo.displayLength > 0) {
58 writer.print(typeParameters + " "); 63 Content linkContent = new RawHtml(typeParameters);
64 htmltree.addContent(linkContent);
65 htmltree.addContent(writer.getSpace());
59 writer.displayLength += linkInfo.displayLength + 1; 66 writer.displayLength += linkInfo.displayLength + 1;
60 } 67 }
61 return linkInfo.displayLength; 68 return linkInfo.displayLength;
62 } 69 }
63 70
64 protected void writeSignature(ExecutableMemberDoc member) { 71 /**
65 writer.displayLength = 0; 72 * {@inheritDoc}
66 writer.pre(); 73 */
67 writer.writeAnnotationInfo(member); 74 protected Content getDeprecatedLink(ProgramElementDoc member) {
68 printModifiers(member);
69 writeTypeParameters(member);
70 if (configuration().linksource &&
71 member.position().line() != classdoc.position().line()) {
72 writer.printSrcLink(member, member.name());
73 } else {
74 strong(member.name());
75 }
76 writeParameters(member);
77 writeExceptions(member);
78 writer.preEnd();
79 }
80
81 protected void writeDeprecatedLink(ProgramElementDoc member) {
82 ExecutableMemberDoc emd = (ExecutableMemberDoc)member; 75 ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
83 writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, (MemberDoc) emd, 76 return writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER, (MemberDoc) emd,
84 emd.qualifiedName() + emd.flatSignature(), false); 77 emd.qualifiedName() + emd.flatSignature());
85 } 78 }
86 79
87 protected void writeSummaryLink(int context, ClassDoc cd, ProgramElementDoc member) { 80 /**
81 * Add the summary link for the member.
82 *
83 * @param context the id of the context where the link will be printed
84 * @param classDoc the classDoc that we should link to
85 * @param member the member being linked to
86 * @param tdSummary the content tree to which the link will be added
87 */
88 protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
89 Content tdSummary) {
88 ExecutableMemberDoc emd = (ExecutableMemberDoc)member; 90 ExecutableMemberDoc emd = (ExecutableMemberDoc)member;
89 String name = emd.name(); 91 String name = emd.name();
90 writer.strong(); 92 Content strong = HtmlTree.STRONG(new RawHtml(
91 writer.printDocLink(context, cd, (MemberDoc) emd, 93 writer.getDocLink(context, cd, (MemberDoc) emd,
92 name, false); 94 name, false)));
93 writer.strongEnd(); 95 Content code = HtmlTree.CODE(strong);
94 writer.displayLength = name.length(); 96 writer.displayLength = name.length();
95 writeParameters(emd, false); 97 addParameters(emd, false, code);
96 } 98 tdSummary.addContent(code);
97 99 }
98 protected void writeInheritedSummaryLink(ClassDoc cd, 100
99 ProgramElementDoc member) { 101 /**
100 writer.printDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc) member, 102 * Add the inherited summary link for the member.
101 member.name(), false); 103 *
102 } 104 * @param classDoc the classDoc that we should link to
103 105 * @param member the member being linked to
104 protected void writeParam(ExecutableMemberDoc member, Parameter param, 106 * @param linksTree the content tree to which the link will be added
105 boolean isVarArg) { 107 */
108 protected void addInheritedSummaryLink(ClassDoc cd,
109 ProgramElementDoc member, Content linksTree) {
110 linksTree.addContent(new RawHtml(
111 writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER, cd, (MemberDoc) member,
112 member.name(), false)));
113 }
114
115 /**
116 * Add the parameter for the executable member.
117 *
118 * @param member the member to write parameter for.
119 * @param param the parameter that needs to be written.
120 * @param isVarArg true if this is a link to var arg.
121 * @param tree the content tree to which the parameter information will be added.
122 */
123 protected void addParam(ExecutableMemberDoc member, Parameter param,
124 boolean isVarArg, Content tree) {
106 if (param.type() != null) { 125 if (param.type() != null) {
107 writer.printLink(new LinkInfoImpl( 126 Content link = new RawHtml(writer.getLink(new LinkInfoImpl(
108 LinkInfoImpl.CONTEXT_EXECUTABLE_MEMBER_PARAM, param.type(), 127 LinkInfoImpl.CONTEXT_EXECUTABLE_MEMBER_PARAM, param.type(),
109 isVarArg)); 128 isVarArg)));
129 tree.addContent(link);
110 } 130 }
111 if(param.name().length() > 0) { 131 if(param.name().length() > 0) {
112 writer.space(); 132 tree.addContent(writer.getSpace());
113 writer.print(param.name()); 133 tree.addContent(param.name());
114 } 134 }
115 } 135 }
116 136
117 protected void writeParameters(ExecutableMemberDoc member) { 137 /**
118 writeParameters(member, true); 138 * Add all the parameters for the executable member.
119 } 139 *
120 140 * @param member the member to write parameters for.
121 protected void writeParameters(ExecutableMemberDoc member, 141 * @param tree the content tree to which the parameters information will be added.
122 boolean includeAnnotations) { 142 */
123 print('('); 143 protected void addParameters(ExecutableMemberDoc member, Content htmltree) {
144 addParameters(member, true, htmltree);
145 }
146
147 /**
148 * Add all the parameters for the executable member.
149 *
150 * @param member the member to write parameters for.
151 * @param includeAnnotations true if annotation information needs to be added.
152 * @param tree the content tree to which the parameters information will be added.
153 */
154 protected void addParameters(ExecutableMemberDoc member,
155 boolean includeAnnotations, Content htmltree) {
156 htmltree.addContent("(");
124 Parameter[] params = member.parameters(); 157 Parameter[] params = member.parameters();
125 String indent = makeSpace(writer.displayLength); 158 String indent = makeSpace(writer.displayLength);
126 if (configuration().linksource) { 159 if (configuration().linksource) {
127 //add spaces to offset indentation changes caused by link. 160 //add spaces to offset indentation changes caused by link.
128 indent+= makeSpace(member.name().length()); 161 indent+= makeSpace(member.name().length());
130 int paramstart; 163 int paramstart;
131 for (paramstart = 0; paramstart < params.length; paramstart++) { 164 for (paramstart = 0; paramstart < params.length; paramstart++) {
132 Parameter param = params[paramstart]; 165 Parameter param = params[paramstart];
133 if (!param.name().startsWith("this$")) { 166 if (!param.name().startsWith("this$")) {
134 if (includeAnnotations) { 167 if (includeAnnotations) {
135 boolean foundAnnotations = 168 boolean foundAnnotations =
136 writer.writeAnnotationInfo(indent.length(), member, param); 169 writer.addAnnotationInfo(indent.length(),
137 if (foundAnnotations) { 170 member, param, htmltree);
138 writer.println(); 171 if (foundAnnotations) {
139 writer.print(indent); 172 htmltree.addContent(DocletConstants.NL);
173 htmltree.addContent(indent);
140 } 174 }
141 } 175 }
142 writeParam(member, param, 176 addParam(member, param,
143 (paramstart == params.length - 1) && member.isVarArgs()); 177 (paramstart == params.length - 1) && member.isVarArgs(), htmltree);
144 break; 178 break;
145 } 179 }
146 } 180 }
147 181
148 for (int i = paramstart + 1; i < params.length; i++) { 182 for (int i = paramstart + 1; i < params.length; i++) {
149 writer.print(','); 183 htmltree.addContent(",");
150 writer.println(); 184 htmltree.addContent(DocletConstants.NL);
151 writer.print(indent); 185 htmltree.addContent(indent);
152 if (includeAnnotations) { 186 if (includeAnnotations) {
153 boolean foundAnnotations = 187 boolean foundAnnotations =
154 writer.writeAnnotationInfo(indent.length(), member, params[i]); 188 writer.addAnnotationInfo(indent.length(), member, params[i],
189 htmltree);
155 if (foundAnnotations) { 190 if (foundAnnotations) {
156 writer.println(); 191 htmltree.addContent(DocletConstants.NL);
157 writer.print(indent); 192 htmltree.addContent(indent);
158 } 193 }
159 } 194 }
160 writeParam(member, params[i], (i == params.length - 1) && member.isVarArgs()); 195 addParam(member, params[i], (i == params.length - 1) && member.isVarArgs(),
161 } 196 htmltree);
162 writer.print(')'); 197 }
163 } 198 htmltree.addContent(")");
164 199 }
165 protected void writeExceptions(ExecutableMemberDoc member) { 200
201 /**
202 * Add exceptions for the executable member.
203 *
204 * @param member the member to write exceptions for.
205 * @param htmltree the content tree to which the exceptions information will be added.
206 */
207 protected void addExceptions(ExecutableMemberDoc member, Content htmltree) {
166 Type[] exceptions = member.thrownExceptionTypes(); 208 Type[] exceptions = member.thrownExceptionTypes();
167 if(exceptions.length > 0) { 209 if(exceptions.length > 0) {
168 LinkInfoImpl memberTypeParam = new LinkInfoImpl( 210 LinkInfoImpl memberTypeParam = new LinkInfoImpl(
169 LinkInfoImpl.CONTEXT_MEMBER, member, false); 211 LinkInfoImpl.CONTEXT_MEMBER, member, false);
170 int retlen = getReturnTypeLength(member); 212 int retlen = getReturnTypeLength(member);
171 writer.getTypeParameterLinks(memberTypeParam); 213 writer.getTypeParameterLinks(memberTypeParam);
172 retlen += memberTypeParam.displayLength == 0 ? 214 retlen += memberTypeParam.displayLength == 0 ?
173 0 : memberTypeParam.displayLength + 1; 215 0 : memberTypeParam.displayLength + 1;
174 String indent = makeSpace(modifierString(member).length() + 216 String indent = makeSpace(modifierString(member).length() +
175 member.name().length() + retlen - 4); 217 member.name().length() + retlen - 4);
176 writer.println(); 218 htmltree.addContent(DocletConstants.NL);
177 writer.print(indent); 219 htmltree.addContent(indent);
178 writer.print("throws "); 220 htmltree.addContent("throws ");
179 indent += " "; 221 indent += " ";
180 writer.printLink(new LinkInfoImpl( 222 Content link = new RawHtml(writer.getLink(new LinkInfoImpl(
181 LinkInfoImpl.CONTEXT_MEMBER, exceptions[0])); 223 LinkInfoImpl.CONTEXT_MEMBER, exceptions[0])));
224 htmltree.addContent(link);
182 for(int i = 1; i < exceptions.length; i++) { 225 for(int i = 1; i < exceptions.length; i++) {
183 writer.println(","); 226 htmltree.addContent(",");
184 writer.print(indent); 227 htmltree.addContent(DocletConstants.NL);
185 writer.printLink(new LinkInfoImpl( 228 htmltree.addContent(indent);
186 LinkInfoImpl.CONTEXT_MEMBER, exceptions[i])); 229 Content exceptionLink = new RawHtml(writer.getLink(new LinkInfoImpl(
230 LinkInfoImpl.CONTEXT_MEMBER, exceptions[i])));
231 htmltree.addContent(exceptionLink);
187 } 232 }
188 } 233 }
189 } 234 }
190 235
191 protected int getReturnTypeLength(ExecutableMemberDoc member) { 236 protected int getReturnTypeLength(ExecutableMemberDoc member) {

mercurial