23 * questions.
24 */
25
26 package jdk.javadoc.internal.doclets.formats.html;
27
28 import jdk.javadoc.internal.doclets.formats.html.markup.Table;
29 import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
30
31 import java.util.*;
32
33 import javax.lang.model.element.Modifier;
34 import javax.lang.model.element.PackageElement;
35 import javax.lang.model.element.TypeElement;
36 import javax.lang.model.element.VariableElement;
37
38 import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
39 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
40 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
41 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
42 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
43 import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
44 import jdk.javadoc.internal.doclets.toolkit.ConstantsSummaryWriter;
45 import jdk.javadoc.internal.doclets.toolkit.Content;
46 import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
47 import jdk.javadoc.internal.doclets.toolkit.util.DocLink;
48 import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
49
50
51 /**
52 * Write the Constants Summary Page in HTML format.
53 *
54 * <p><b>This is NOT part of any supported API.
55 * If you write code that depends on this, you do so at your own risk.
56 * This code and its internal interfaces are subject to change or
57 * deletion without notice.</b>
58 *
59 * @author Jamie Ho
60 * @author Bhavesh Patel (Modified)
61 */
62 public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements ConstantsSummaryWriter {
117 return bodyTree;
118 }
119
120 /**
121 * {@inheritDoc}
122 */
123 @Override
124 public Content getContentsHeader() {
125 return new HtmlTree(HtmlTag.UL);
126 }
127
128 /**
129 * {@inheritDoc}
130 */
131 @Override
132 public void addLinkToPackageContent(PackageElement pkg,
133 Set<PackageElement> printedPackageHeaders, Content contentListTree) {
134 //add link to summary
135 Content link;
136 if (pkg.isUnnamed()) {
137 link = getHyperLink(getDocLink(
138 SectionName.UNNAMED_PACKAGE_ANCHOR),
139 contents.defaultPackageLabel, "", "");
140 } else {
141 String parsedPackageName = utils.parsePackageName(pkg);
142 Content packageNameContent = getPackageLabel(parsedPackageName);
143 packageNameContent.addContent(".*");
144 link = getHyperLink(DocLink.fragment(parsedPackageName),
145 packageNameContent, "", "");
146 PackageElement abbrevPkg = configuration.workArounds.getAbbreviatedPackageElement(pkg);
147 printedPackageHeaders.add(abbrevPkg);
148 }
149 contentListTree.addContent(HtmlTree.LI(link));
150 }
151
152 /**
153 * {@inheritDoc}
154 */
155 @Override
156 public void addContentsList(Content contentTree, Content contentListTree) {
157 Content titleContent = contents.constantsSummaryTitle;
158 Content pHeading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
159 HtmlStyle.title, titleContent);
160 Content div = HtmlTree.DIV(HtmlStyle.header, pHeading);
161 Content headingContent = contents.contentsHeading;
162 Content heading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, true,
163 headingContent);
164 if (configuration.allowTag(HtmlTag.SECTION)) {
176 /**
177 * {@inheritDoc}
178 */
179 @Override
180 public Content getConstantSummaries() {
181 HtmlTree summariesDiv = new HtmlTree(HtmlTag.DIV);
182 summariesDiv.setStyle(HtmlStyle.constantValuesContainer);
183 return summariesDiv;
184 }
185
186 /**
187 * {@inheritDoc}
188 */
189 @Override
190 public void addPackageName(PackageElement pkg, Content summariesTree, boolean first) {
191 Content pkgNameContent;
192 if (!first && configuration.allowTag(HtmlTag.SECTION)) {
193 summariesTree.addContent(summaryTree);
194 }
195 if (pkg.isUnnamed()) {
196 summariesTree.addContent(getMarkerAnchor(
197 SectionName.UNNAMED_PACKAGE_ANCHOR));
198 pkgNameContent = contents.defaultPackageLabel;
199 } else {
200 String parsedPackageName = utils.parsePackageName(pkg);
201 summariesTree.addContent(getMarkerAnchor(parsedPackageName));
202 pkgNameContent = getPackageLabel(parsedPackageName);
203 }
204 Content headingContent = new StringContent(".*");
205 Content heading = HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING, true,
206 pkgNameContent);
207 heading.addContent(headingContent);
208 if (configuration.allowTag(HtmlTag.SECTION)) {
209 summaryTree = HtmlTree.SECTION(heading);
210 } else {
211 summariesTree.addContent(heading);
212 }
213 }
214
215 /**
216 * {@inheritDoc}
217 */
218 @Override
219 public Content getClassConstantHeader() {
220 HtmlTree ul = new HtmlTree(HtmlTag.UL);
221 ul.setStyle(HtmlStyle.blockList);
260 .setSummary(constantsTableSummary)
261 .setCaption(caption)
262 .setHeader(constantsTableHeader)
263 .setRowScopeColumn(1)
264 .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast);
265
266 for (VariableElement field : fields) {
267 table.addRow(getTypeColumn(field), getNameColumn(field), getValue(field));
268 }
269 Content li = HtmlTree.LI(HtmlStyle.blockList, table.toContent());
270 classConstantTree.addContent(li);
271 }
272
273 /**
274 * Get the type column for the constant summary table row.
275 *
276 * @param member the field to be documented.
277 * @return the type column of the constant table row
278 */
279 private Content getTypeColumn(VariableElement member) {
280 Content anchor = getMarkerAnchor(currentTypeElement.getQualifiedName() +
281 "." + member.getSimpleName());
282 Content typeContent = new ContentBuilder();
283 typeContent.addContent(anchor);
284 Content code = new HtmlTree(HtmlTag.CODE);
285 for (Modifier mod : member.getModifiers()) {
286 Content modifier = new StringContent(mod.toString());
287 code.addContent(modifier);
288 code.addContent(Contents.SPACE);
289 }
290 Content type = getLink(new LinkInfoImpl(configuration,
291 LinkInfoImpl.Kind.CONSTANT_SUMMARY, member.asType()));
292 code.addContent(type);
293 typeContent.addContent(code);
294 return typeContent;
295 }
296
297 /**
298 * Get the name column for the constant summary table row.
299 *
300 * @param member the field to be documented.
301 * @return the name column of the constant table row
|
23 * questions.
24 */
25
26 package jdk.javadoc.internal.doclets.formats.html;
27
28 import jdk.javadoc.internal.doclets.formats.html.markup.Table;
29 import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
30
31 import java.util.*;
32
33 import javax.lang.model.element.Modifier;
34 import javax.lang.model.element.PackageElement;
35 import javax.lang.model.element.TypeElement;
36 import javax.lang.model.element.VariableElement;
37
38 import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
39 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants;
40 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
41 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
42 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
43 import jdk.javadoc.internal.doclets.formats.html.markup.Links;
44 import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
45 import jdk.javadoc.internal.doclets.toolkit.ConstantsSummaryWriter;
46 import jdk.javadoc.internal.doclets.toolkit.Content;
47 import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
48 import jdk.javadoc.internal.doclets.toolkit.util.DocLink;
49 import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
50
51
52 /**
53 * Write the Constants Summary Page in HTML format.
54 *
55 * <p><b>This is NOT part of any supported API.
56 * If you write code that depends on this, you do so at your own risk.
57 * This code and its internal interfaces are subject to change or
58 * deletion without notice.</b>
59 *
60 * @author Jamie Ho
61 * @author Bhavesh Patel (Modified)
62 */
63 public class ConstantsSummaryWriterImpl extends HtmlDocletWriter implements ConstantsSummaryWriter {
118 return bodyTree;
119 }
120
121 /**
122 * {@inheritDoc}
123 */
124 @Override
125 public Content getContentsHeader() {
126 return new HtmlTree(HtmlTag.UL);
127 }
128
129 /**
130 * {@inheritDoc}
131 */
132 @Override
133 public void addLinkToPackageContent(PackageElement pkg,
134 Set<PackageElement> printedPackageHeaders, Content contentListTree) {
135 //add link to summary
136 Content link;
137 if (pkg.isUnnamed()) {
138 link = Links.createLink(SectionName.UNNAMED_PACKAGE_ANCHOR,
139 contents.defaultPackageLabel, "", "");
140 } else {
141 String parsedPackageName = utils.parsePackageName(pkg);
142 Content packageNameContent = getPackageLabel(parsedPackageName);
143 packageNameContent.addContent(".*");
144 link = Links.createLink(DocLink.fragment(parsedPackageName),
145 packageNameContent, "", "");
146 PackageElement abbrevPkg = configuration.workArounds.getAbbreviatedPackageElement(pkg);
147 printedPackageHeaders.add(abbrevPkg);
148 }
149 contentListTree.addContent(HtmlTree.LI(link));
150 }
151
152 /**
153 * {@inheritDoc}
154 */
155 @Override
156 public void addContentsList(Content contentTree, Content contentListTree) {
157 Content titleContent = contents.constantsSummaryTitle;
158 Content pHeading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, true,
159 HtmlStyle.title, titleContent);
160 Content div = HtmlTree.DIV(HtmlStyle.header, pHeading);
161 Content headingContent = contents.contentsHeading;
162 Content heading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, true,
163 headingContent);
164 if (configuration.allowTag(HtmlTag.SECTION)) {
176 /**
177 * {@inheritDoc}
178 */
179 @Override
180 public Content getConstantSummaries() {
181 HtmlTree summariesDiv = new HtmlTree(HtmlTag.DIV);
182 summariesDiv.setStyle(HtmlStyle.constantValuesContainer);
183 return summariesDiv;
184 }
185
186 /**
187 * {@inheritDoc}
188 */
189 @Override
190 public void addPackageName(PackageElement pkg, Content summariesTree, boolean first) {
191 Content pkgNameContent;
192 if (!first && configuration.allowTag(HtmlTag.SECTION)) {
193 summariesTree.addContent(summaryTree);
194 }
195 if (pkg.isUnnamed()) {
196 summariesTree.addContent(links.createAnchor(SectionName.UNNAMED_PACKAGE_ANCHOR));
197 pkgNameContent = contents.defaultPackageLabel;
198 } else {
199 String parsedPackageName = utils.parsePackageName(pkg);
200 summariesTree.addContent(links.createAnchor(parsedPackageName));
201 pkgNameContent = getPackageLabel(parsedPackageName);
202 }
203 Content headingContent = new StringContent(".*");
204 Content heading = HtmlTree.HEADING(HtmlConstants.PACKAGE_HEADING, true,
205 pkgNameContent);
206 heading.addContent(headingContent);
207 if (configuration.allowTag(HtmlTag.SECTION)) {
208 summaryTree = HtmlTree.SECTION(heading);
209 } else {
210 summariesTree.addContent(heading);
211 }
212 }
213
214 /**
215 * {@inheritDoc}
216 */
217 @Override
218 public Content getClassConstantHeader() {
219 HtmlTree ul = new HtmlTree(HtmlTag.UL);
220 ul.setStyle(HtmlStyle.blockList);
259 .setSummary(constantsTableSummary)
260 .setCaption(caption)
261 .setHeader(constantsTableHeader)
262 .setRowScopeColumn(1)
263 .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colSecond, HtmlStyle.colLast);
264
265 for (VariableElement field : fields) {
266 table.addRow(getTypeColumn(field), getNameColumn(field), getValue(field));
267 }
268 Content li = HtmlTree.LI(HtmlStyle.blockList, table.toContent());
269 classConstantTree.addContent(li);
270 }
271
272 /**
273 * Get the type column for the constant summary table row.
274 *
275 * @param member the field to be documented.
276 * @return the type column of the constant table row
277 */
278 private Content getTypeColumn(VariableElement member) {
279 Content anchor = links.createAnchor(
280 currentTypeElement.getQualifiedName() + "." + member.getSimpleName());
281 Content typeContent = new ContentBuilder();
282 typeContent.addContent(anchor);
283 Content code = new HtmlTree(HtmlTag.CODE);
284 for (Modifier mod : member.getModifiers()) {
285 Content modifier = new StringContent(mod.toString());
286 code.addContent(modifier);
287 code.addContent(Contents.SPACE);
288 }
289 Content type = getLink(new LinkInfoImpl(configuration,
290 LinkInfoImpl.Kind.CONSTANT_SUMMARY, member.asType()));
291 code.addContent(type);
292 typeContent.addContent(code);
293 return typeContent;
294 }
295
296 /**
297 * Get the name column for the constant summary table row.
298 *
299 * @param member the field to be documented.
300 * @return the name column of the constant table row
|