< prev index next >

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java

Print this page




  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");


< prev index next >