|
1 /* |
|
2 * Copyright 2001-2005 Sun Microsystems, Inc. All Rights Reserved. |
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
4 * |
|
5 * This code is free software; you can redistribute it and/or modify it |
|
6 * under the terms of the GNU General Public License version 2 only, as |
|
7 * published by the Free Software Foundation. Sun designates this |
|
8 * particular file as subject to the "Classpath" exception as provided |
|
9 * by Sun in the LICENSE file that accompanied this code. |
|
10 * |
|
11 * This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 * version 2 for more details (a copy is included in the LICENSE file that |
|
15 * accompanied this code). |
|
16 * |
|
17 * You should have received a copy of the GNU General Public License version |
|
18 * 2 along with this work; if not, write to the Free Software Foundation, |
|
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 * |
|
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
|
22 * CA 95054 USA or visit www.sun.com if you need additional information or |
|
23 * have any questions. |
|
24 */ |
|
25 |
|
26 package com.sun.tools.doclets.formats.html; |
|
27 |
|
28 import com.sun.tools.doclets.internal.toolkit.*; |
|
29 import com.sun.tools.doclets.internal.toolkit.util.*; |
|
30 import com.sun.javadoc.*; |
|
31 import java.io.*; |
|
32 import java.util.*; |
|
33 |
|
34 /** |
|
35 * Write the Constants Summary Page in HTML format. |
|
36 * |
|
37 * @author Jamie Ho |
|
38 * @since 1.4 |
|
39 */ |
|
40 public class ConstantsSummaryWriterImpl extends HtmlDocletWriter |
|
41 implements ConstantsSummaryWriter { |
|
42 |
|
43 /** |
|
44 * The configuration used in this run of the standard doclet. |
|
45 */ |
|
46 ConfigurationImpl configuration; |
|
47 |
|
48 /** |
|
49 * The current class being documented. |
|
50 */ |
|
51 private ClassDoc currentClassDoc; |
|
52 |
|
53 /** |
|
54 * Construct a ConstantsSummaryWriter. |
|
55 * @param configuration the configuration used in this run |
|
56 * of the standard doclet. |
|
57 */ |
|
58 public ConstantsSummaryWriterImpl(ConfigurationImpl configuration) |
|
59 throws IOException { |
|
60 super(configuration, ConfigurationImpl.CONSTANTS_FILE_NAME); |
|
61 this.configuration = configuration; |
|
62 } |
|
63 |
|
64 /** |
|
65 * {@inheritDoc} |
|
66 */ |
|
67 public void writeHeader() { |
|
68 printHtmlHeader(configuration.getText("doclet.Constants_Summary"), |
|
69 null, true); |
|
70 printTop(); |
|
71 navLinks(true); |
|
72 hr(); |
|
73 |
|
74 center(); |
|
75 h1(); printText("doclet.Constants_Summary"); h1End(); |
|
76 centerEnd(); |
|
77 |
|
78 hr(4, "noshade"); |
|
79 } |
|
80 |
|
81 /** |
|
82 * {@inheritDoc} |
|
83 */ |
|
84 public void writeFooter() { |
|
85 hr(); |
|
86 navLinks(false); |
|
87 printBottom(); |
|
88 printBodyHtmlEnd(); |
|
89 } |
|
90 |
|
91 /** |
|
92 * {@inheritDoc} |
|
93 */ |
|
94 public void writeContentsHeader() { |
|
95 bold(configuration.getText("doclet.Contents")); |
|
96 ul(); |
|
97 } |
|
98 |
|
99 /** |
|
100 * {@inheritDoc} |
|
101 */ |
|
102 public void writeContentsFooter() { |
|
103 ulEnd(); |
|
104 println(); |
|
105 } |
|
106 |
|
107 /** |
|
108 * {@inheritDoc} |
|
109 */ |
|
110 public void writeLinkToPackageContent(PackageDoc pkg, String parsedPackageName, Set printedPackageHeaders) { |
|
111 String packageName = pkg.name(); |
|
112 //add link to summary |
|
113 li(); |
|
114 if (packageName.length() == 0) { |
|
115 printHyperLink("#" + DocletConstants.UNNAMED_PACKAGE_ANCHOR, |
|
116 DocletConstants.DEFAULT_PACKAGE_NAME); |
|
117 } else { |
|
118 printHyperLink("#" + parsedPackageName, parsedPackageName + ".*"); |
|
119 printedPackageHeaders.add(parsedPackageName); |
|
120 } |
|
121 println(); |
|
122 } |
|
123 |
|
124 /** |
|
125 * {@inheritDoc} |
|
126 */ |
|
127 public void writeConstantMembersHeader(ClassDoc cd) { |
|
128 //generate links backward only to public classes. |
|
129 String classlink = (cd.isPublic() || cd.isProtected())? |
|
130 getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, cd, |
|
131 false)) : |
|
132 cd.qualifiedName(); |
|
133 String name = cd.containingPackage().name(); |
|
134 if (name.length() > 0) { |
|
135 writeClassName(name + "." + classlink); |
|
136 } else { |
|
137 writeClassName(classlink); |
|
138 } |
|
139 } |
|
140 |
|
141 /** |
|
142 * {@inheritDoc} |
|
143 */ |
|
144 public void writeConstantMembersFooter(ClassDoc cd) { |
|
145 tableFooter(false); |
|
146 p(); |
|
147 } |
|
148 |
|
149 /** |
|
150 * Print the class name in the table heading. |
|
151 * @param classStr the heading to print. |
|
152 */ |
|
153 protected void writeClassName(String classStr) { |
|
154 table(1, 3, 0); |
|
155 trBgcolorStyle("#EEEEFF", "TableSubHeadingColor"); |
|
156 thAlignColspan("left", 3); |
|
157 write(classStr); |
|
158 thEnd(); |
|
159 trEnd(); |
|
160 } |
|
161 |
|
162 private void tableFooter(boolean isHeader) { |
|
163 fontEnd(); |
|
164 if (isHeader) { |
|
165 thEnd(); |
|
166 } else { |
|
167 tdEnd(); |
|
168 } |
|
169 trEnd(); |
|
170 tableEnd(); |
|
171 p(); |
|
172 } |
|
173 |
|
174 /** |
|
175 * {@inheritDoc} |
|
176 */ |
|
177 public void writePackageName(PackageDoc pkg, String parsedPackageName) { |
|
178 String pkgname; |
|
179 if (parsedPackageName.length() == 0) { |
|
180 anchor(DocletConstants.UNNAMED_PACKAGE_ANCHOR); |
|
181 pkgname = DocletConstants.DEFAULT_PACKAGE_NAME; |
|
182 } else { |
|
183 anchor(parsedPackageName); |
|
184 pkgname = parsedPackageName; |
|
185 } |
|
186 table(1, "100%", 3, 0); |
|
187 trBgcolorStyle("#CCCCFF", "TableHeadingColor"); |
|
188 thAlign("left"); |
|
189 font("+2"); |
|
190 write(pkgname + ".*"); |
|
191 tableFooter(true); |
|
192 } |
|
193 |
|
194 /** |
|
195 * {@inheritDoc} |
|
196 */ |
|
197 public void writeConstantMembers(ClassDoc cd, List fields) { |
|
198 currentClassDoc = cd; |
|
199 for (int i = 0; i < fields.size(); ++i) { |
|
200 writeConstantMember((FieldDoc)(fields.get(i))); |
|
201 } |
|
202 } |
|
203 |
|
204 private void writeConstantMember(FieldDoc member) { |
|
205 trBgcolorStyle("white", "TableRowColor"); |
|
206 anchor(currentClassDoc.qualifiedName() + "." + member.name()); |
|
207 writeTypeColumn(member); |
|
208 writeNameColumn(member); |
|
209 writeValue(member); |
|
210 trEnd(); |
|
211 } |
|
212 |
|
213 private void writeTypeColumn(FieldDoc member) { |
|
214 tdAlign("right"); |
|
215 font("-1"); |
|
216 code(); |
|
217 StringTokenizer mods = new StringTokenizer(member.modifiers()); |
|
218 while(mods.hasMoreTokens()) { |
|
219 print(mods.nextToken() + " "); |
|
220 } |
|
221 printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, |
|
222 member.type())); |
|
223 codeEnd(); |
|
224 fontEnd(); |
|
225 tdEnd(); |
|
226 } |
|
227 |
|
228 private void writeNameColumn(FieldDoc member) { |
|
229 tdAlign("left"); |
|
230 code(); |
|
231 printDocLink(LinkInfoImpl.CONTEXT_CONSTANT_SUMMARY, member, |
|
232 member.name(), false); |
|
233 codeEnd(); |
|
234 tdEnd(); |
|
235 } |
|
236 |
|
237 private void writeValue(FieldDoc member) { |
|
238 tdAlign("right"); |
|
239 code(); |
|
240 print(Util.escapeHtmlChars(member.constantValueExpression())); |
|
241 codeEnd(); |
|
242 tdEnd(); |
|
243 } |
|
244 } |