58 * @author Bhavesh Patel (Modified)
59 */
60 public class PackageUseWriter extends SubWriterHolderWriter {
61
62 final PackageElement packageElement;
63 final SortedMap<String, Set<TypeElement>> usingPackageToUsedClasses = new TreeMap<>();
64 protected HtmlTree mainTree = HtmlTree.MAIN();
65 final String packageUseTableSummary;
66
67 /**
68 * Constructor.
69 *
70 * @param configuration the configuration
71 * @param mapper a mapper to provide details of where elements are used
72 * @param filename the file to be generated
73 * @param pkgElement the package element to be documented
74 */
75 public PackageUseWriter(HtmlConfiguration configuration,
76 ClassUseMapper mapper, DocPath filename,
77 PackageElement pkgElement) {
78 super(configuration, DocPath.forPackage(pkgElement).resolve(filename));
79 this.packageElement = pkgElement;
80
81 // by examining all classes in this package, find what packages
82 // use these classes - produce a map between using package and
83 // used classes.
84 for (TypeElement usedClass : utils.getEnclosedTypeElements(pkgElement)) {
85 Set<TypeElement> usingClasses = mapper.classToClass.get(usedClass);
86 if (usingClasses != null) {
87 for (TypeElement usingClass : usingClasses) {
88 PackageElement usingPackage = utils.containingPackage(usingClass);
89 Set<TypeElement> usedClasses = usingPackageToUsedClasses
90 .get(utils.getPackageName(usingPackage));
91 if (usedClasses == null) {
92 usedClasses = new TreeSet<>(utils.makeGeneralPurposeComparator());
93 usingPackageToUsedClasses.put(utils.getPackageName(usingPackage),
94 usedClasses);
95 }
96 usedClasses.add(usedClass);
97 }
98 }
204 for (String packageName : usingPackageToUsedClasses.keySet()) {
205 PackageElement usingPackage = utils.elementUtils.getPackageElement(packageName);
206 HtmlTree li = new HtmlTree(HtmlTag.LI);
207 li.setStyle(HtmlStyle.blockList);
208 if (usingPackage != null) {
209 li.addContent(links.createAnchor(utils.getPackageName(usingPackage)));
210 }
211 String tableSummary = resources.getText("doclet.Use_Table_Summary",
212 resources.getText("doclet.classes"));
213 Content caption = contents.getContent(
214 "doclet.ClassUse_Classes.in.0.used.by.1",
215 getPackageLink(packageElement, utils.getPackageName(packageElement)),
216 getPackageLink(usingPackage, utils.getPackageName(usingPackage)));
217 Table table = new Table(configuration.htmlVersion, HtmlStyle.useSummary)
218 .setSummary(tableSummary)
219 .setCaption(caption)
220 .setHeader(classTableHeader)
221 .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast);
222 for (TypeElement te : usingPackageToUsedClasses.get(packageName)) {
223 DocPath dp = pathString(te,
224 DocPaths.CLASS_USE.resolve(DocPath.forName(utils, te)));
225 Content stringContent = new StringContent(utils.getSimpleName(te));
226 Content typeContent = links.createLink(dp.fragment(getPackageAnchorName(usingPackage)),
227 stringContent);
228 Content summary = new ContentBuilder();
229 addIndexComment(te, summary);
230
231 table.addRow(typeContent, summary);
232 }
233 li.addContent(table.toContent());
234 contentTree.addContent(li);
235 }
236 }
237
238 /**
239 * Get the header for the package use listing.
240 *
241 * @return a content tree representing the package use header
242 */
243 private HtmlTree getPackageUseHeader() {
244 String packageText = resources.getText("doclet.Package");
|
58 * @author Bhavesh Patel (Modified)
59 */
60 public class PackageUseWriter extends SubWriterHolderWriter {
61
62 final PackageElement packageElement;
63 final SortedMap<String, Set<TypeElement>> usingPackageToUsedClasses = new TreeMap<>();
64 protected HtmlTree mainTree = HtmlTree.MAIN();
65 final String packageUseTableSummary;
66
67 /**
68 * Constructor.
69 *
70 * @param configuration the configuration
71 * @param mapper a mapper to provide details of where elements are used
72 * @param filename the file to be generated
73 * @param pkgElement the package element to be documented
74 */
75 public PackageUseWriter(HtmlConfiguration configuration,
76 ClassUseMapper mapper, DocPath filename,
77 PackageElement pkgElement) {
78 super(configuration, configuration.docPaths.forPackage(pkgElement).resolve(filename));
79 this.packageElement = pkgElement;
80
81 // by examining all classes in this package, find what packages
82 // use these classes - produce a map between using package and
83 // used classes.
84 for (TypeElement usedClass : utils.getEnclosedTypeElements(pkgElement)) {
85 Set<TypeElement> usingClasses = mapper.classToClass.get(usedClass);
86 if (usingClasses != null) {
87 for (TypeElement usingClass : usingClasses) {
88 PackageElement usingPackage = utils.containingPackage(usingClass);
89 Set<TypeElement> usedClasses = usingPackageToUsedClasses
90 .get(utils.getPackageName(usingPackage));
91 if (usedClasses == null) {
92 usedClasses = new TreeSet<>(utils.makeGeneralPurposeComparator());
93 usingPackageToUsedClasses.put(utils.getPackageName(usingPackage),
94 usedClasses);
95 }
96 usedClasses.add(usedClass);
97 }
98 }
204 for (String packageName : usingPackageToUsedClasses.keySet()) {
205 PackageElement usingPackage = utils.elementUtils.getPackageElement(packageName);
206 HtmlTree li = new HtmlTree(HtmlTag.LI);
207 li.setStyle(HtmlStyle.blockList);
208 if (usingPackage != null) {
209 li.addContent(links.createAnchor(utils.getPackageName(usingPackage)));
210 }
211 String tableSummary = resources.getText("doclet.Use_Table_Summary",
212 resources.getText("doclet.classes"));
213 Content caption = contents.getContent(
214 "doclet.ClassUse_Classes.in.0.used.by.1",
215 getPackageLink(packageElement, utils.getPackageName(packageElement)),
216 getPackageLink(usingPackage, utils.getPackageName(usingPackage)));
217 Table table = new Table(configuration.htmlVersion, HtmlStyle.useSummary)
218 .setSummary(tableSummary)
219 .setCaption(caption)
220 .setHeader(classTableHeader)
221 .setColumnStyles(HtmlStyle.colFirst, HtmlStyle.colLast);
222 for (TypeElement te : usingPackageToUsedClasses.get(packageName)) {
223 DocPath dp = pathString(te,
224 DocPaths.CLASS_USE.resolve(docPaths.forName(te)));
225 Content stringContent = new StringContent(utils.getSimpleName(te));
226 Content typeContent = links.createLink(dp.fragment(getPackageAnchorName(usingPackage)),
227 stringContent);
228 Content summary = new ContentBuilder();
229 addIndexComment(te, summary);
230
231 table.addRow(typeContent, summary);
232 }
233 li.addContent(table.toContent());
234 contentTree.addContent(li);
235 }
236 }
237
238 /**
239 * Get the header for the package use listing.
240 *
241 * @return a content tree representing the package use header
242 */
243 private HtmlTree getPackageUseHeader() {
244 String packageText = resources.getText("doclet.Package");
|