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

Sun, 11 Apr 2010 23:24:24 -0700

author
yhuang
date
Sun, 11 Apr 2010 23:24:24 -0700
changeset 539
06e06ec0d6f2
parent 243
edd944553131
child 554
9d9f26857129
permissions
-rw-r--r--

6875904: Java 7 message synchronization 1
Reviewed-by: ogino, faryad

duke@1 1 /*
duke@1 2 * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
duke@1 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@1 4 *
duke@1 5 * This code is free software; you can redistribute it and/or modify it
duke@1 6 * under the terms of the GNU General Public License version 2 only, as
duke@1 7 * published by the Free Software Foundation. Sun designates this
duke@1 8 * particular file as subject to the "Classpath" exception as provided
duke@1 9 * by Sun in the LICENSE file that accompanied this code.
duke@1 10 *
duke@1 11 * This code is distributed in the hope that it will be useful, but WITHOUT
duke@1 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@1 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@1 14 * version 2 for more details (a copy is included in the LICENSE file that
duke@1 15 * accompanied this code).
duke@1 16 *
duke@1 17 * You should have received a copy of the GNU General Public License version
duke@1 18 * 2 along with this work; if not, write to the Free Software Foundation,
duke@1 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@1 20 *
duke@1 21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
duke@1 22 * CA 95054 USA or visit www.sun.com if you need additional information or
duke@1 23 * have any questions.
duke@1 24 */
duke@1 25
duke@1 26 package com.sun.tools.doclets.formats.html;
duke@1 27
duke@1 28 import com.sun.tools.doclets.internal.toolkit.*;
duke@1 29 import com.sun.tools.doclets.internal.toolkit.util.*;
duke@1 30
duke@1 31 import com.sun.javadoc.*;
duke@1 32 import java.io.*;
duke@1 33 import java.util.*;
duke@1 34
duke@1 35 /**
duke@1 36 * Class to generate file for each package contents in the right-hand
duke@1 37 * frame. This will list all the Class Kinds in the package. A click on any
duke@1 38 * class-kind will update the frame with the clicked class-kind page.
duke@1 39 *
duke@1 40 * @author Atul M Dambalkar
bpatel@243 41 * @author Bhavesh Patel (Modified)
duke@1 42 */
duke@1 43 public class PackageWriterImpl extends HtmlDocletWriter
duke@1 44 implements PackageSummaryWriter {
duke@1 45
duke@1 46 /**
duke@1 47 * The prev package name in the alpha-order list.
duke@1 48 */
duke@1 49 protected PackageDoc prev;
duke@1 50
duke@1 51 /**
duke@1 52 * The next package name in the alpha-order list.
duke@1 53 */
duke@1 54 protected PackageDoc next;
duke@1 55
duke@1 56 /**
duke@1 57 * The package being documented.
duke@1 58 */
duke@1 59 protected PackageDoc packageDoc;
duke@1 60
duke@1 61 /**
duke@1 62 * The name of the output file.
duke@1 63 */
duke@1 64 private static final String OUTPUT_FILE_NAME = "package-summary.html";
duke@1 65
duke@1 66 /**
duke@1 67 * Constructor to construct PackageWriter object and to generate
duke@1 68 * "package-summary.html" file in the respective package directory.
duke@1 69 * For example for package "java.lang" this will generate file
duke@1 70 * "package-summary.html" file in the "java/lang" directory. It will also
duke@1 71 * create "java/lang" directory in the current or the destination directory
duke@1 72 * if it doesen't exist.
duke@1 73 *
duke@1 74 * @param configuration the configuration of the doclet.
duke@1 75 * @param packageDoc PackageDoc under consideration.
duke@1 76 * @param prev Previous package in the sorted array.
duke@1 77 * @param next Next package in the sorted array.
duke@1 78 */
duke@1 79 public PackageWriterImpl(ConfigurationImpl configuration,
duke@1 80 PackageDoc packageDoc, PackageDoc prev, PackageDoc next)
duke@1 81 throws IOException {
duke@1 82 super(configuration, DirectoryManager.getDirectoryPath(packageDoc), OUTPUT_FILE_NAME,
duke@1 83 DirectoryManager.getRelativePath(packageDoc.name()));
duke@1 84 this.prev = prev;
duke@1 85 this.next = next;
duke@1 86 this.packageDoc = packageDoc;
duke@1 87 }
duke@1 88
duke@1 89 /**
duke@1 90 * Return the name of the output file.
duke@1 91 *
duke@1 92 * @return the name of the output file.
duke@1 93 */
duke@1 94 public String getOutputFileName() {
duke@1 95 return OUTPUT_FILE_NAME;
duke@1 96 }
duke@1 97
duke@1 98 /**
duke@1 99 * {@inheritDoc}
duke@1 100 */
duke@1 101 public void writeSummaryHeader() {}
duke@1 102
duke@1 103 /**
duke@1 104 * {@inheritDoc}
duke@1 105 */
duke@1 106 public void writeSummaryFooter() {}
duke@1 107
duke@1 108 /**
duke@1 109 * {@inheritDoc}
duke@1 110 */
bpatel@243 111 public void writeClassesSummary(ClassDoc[] classes, String label, String tableSummary, String[] tableHeader) {
duke@1 112 if(classes.length > 0) {
duke@1 113 Arrays.sort(classes);
bpatel@243 114 tableIndexSummary(tableSummary);
duke@1 115 boolean printedHeading = false;
duke@1 116 for (int i = 0; i < classes.length; i++) {
duke@1 117 if (!printedHeading) {
bpatel@243 118 printTableCaption(label);
bpatel@243 119 printFirstRow(tableHeader);
duke@1 120 printedHeading = true;
duke@1 121 }
duke@1 122 if (!Util.isCoreClass(classes[i]) ||
duke@1 123 !configuration.isGeneratedDoc(classes[i])) {
duke@1 124 continue;
duke@1 125 }
duke@1 126 trBgcolorStyle("white", "TableRowColor");
duke@1 127 summaryRow(15);
bpatel@182 128 strong();
duke@1 129 printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_PACKAGE,
duke@1 130 classes[i], false));
bpatel@182 131 strongEnd();
duke@1 132 summaryRowEnd();
duke@1 133 summaryRow(0);
duke@1 134 if (Util.isDeprecated(classes[i])) {
bpatel@182 135 strongText("doclet.Deprecated");
duke@1 136 if (classes[i].tags("deprecated").length > 0) {
duke@1 137 space();
duke@1 138 printSummaryDeprecatedComment(classes[i],
duke@1 139 classes[i].tags("deprecated")[0]);
duke@1 140 }
duke@1 141 } else {
duke@1 142 printSummaryComment(classes[i]);
duke@1 143 }
duke@1 144 summaryRowEnd();
duke@1 145 trEnd();
duke@1 146 }
duke@1 147 tableEnd();
duke@1 148 println("&nbsp;");
duke@1 149 p();
duke@1 150 }
duke@1 151 }
duke@1 152
duke@1 153 /**
bpatel@243 154 * Print the table caption for the class-listing.
bpatel@243 155 *
bpatel@243 156 * @param label label for the Class kind listing.
bpatel@243 157 */
bpatel@243 158 protected void printTableCaption(String label) {
bpatel@243 159 tableCaptionStart();
bpatel@243 160 print(label);
bpatel@243 161 tableCaptionEnd();
bpatel@243 162 }
bpatel@243 163
bpatel@243 164 /**
duke@1 165 * Print the table heading for the class-listing.
duke@1 166 *
bpatel@243 167 * @param tableHeader table header string for the Class listing.
duke@1 168 */
bpatel@243 169 protected void printFirstRow(String[] tableHeader) {
bpatel@243 170 summaryTableHeader(tableHeader, "col");
duke@1 171 }
duke@1 172
duke@1 173 /**
duke@1 174 * {@inheritDoc}
duke@1 175 */
duke@1 176 public void writePackageDescription() {
duke@1 177 if (packageDoc.inlineTags().length > 0) {
duke@1 178 anchor("package_description");
duke@1 179 h2(configuration.getText("doclet.Package_Description", packageDoc.name()));
duke@1 180 p();
duke@1 181 printInlineComment(packageDoc);
duke@1 182 p();
duke@1 183 }
duke@1 184 }
duke@1 185
duke@1 186 /**
duke@1 187 * {@inheritDoc}
duke@1 188 */
duke@1 189 public void writePackageTags() {
duke@1 190 printTags(packageDoc);
duke@1 191 }
duke@1 192
duke@1 193 /**
duke@1 194 * {@inheritDoc}
duke@1 195 */
duke@1 196 public void writePackageHeader(String heading) {
duke@1 197 String pkgName = packageDoc.name();
duke@1 198 printHtmlHeader(pkgName,
duke@1 199 configuration.metakeywords.getMetaKeywords(packageDoc), true);
duke@1 200 printTop();
duke@1 201 navLinks(true);
duke@1 202 hr();
duke@1 203 writeAnnotationInfo(packageDoc);
duke@1 204 h2(configuration.getText("doclet.Package") + " " + heading);
duke@1 205 if (packageDoc.inlineTags().length > 0 && ! configuration.nocomment) {
duke@1 206 printSummaryComment(packageDoc);
duke@1 207 p();
bpatel@182 208 strong(configuration.getText("doclet.See"));
duke@1 209 br();
duke@1 210 printNbsps();
duke@1 211 printHyperLink("", "package_description",
duke@1 212 configuration.getText("doclet.Description"), true);
duke@1 213 p();
duke@1 214 }
duke@1 215 }
duke@1 216
duke@1 217 /**
duke@1 218 * {@inheritDoc}
duke@1 219 */
duke@1 220 public void writePackageFooter() {
duke@1 221 hr();
duke@1 222 navLinks(false);
duke@1 223 printBottom();
duke@1 224 printBodyHtmlEnd();
duke@1 225 }
duke@1 226
duke@1 227 /**
duke@1 228 * Print "Use" link for this pacakge in the navigation bar.
duke@1 229 */
duke@1 230 protected void navLinkClassUse() {
duke@1 231 navCellStart();
duke@1 232 printHyperLink("package-use.html", "", configuration.getText("doclet.navClassUse"),
duke@1 233 true, "NavBarFont1");
duke@1 234 navCellEnd();
duke@1 235 }
duke@1 236
duke@1 237 /**
duke@1 238 * Print "PREV PACKAGE" link in the navigation bar.
duke@1 239 */
duke@1 240 protected void navLinkPrevious() {
duke@1 241 if (prev == null) {
duke@1 242 printText("doclet.Prev_Package");
duke@1 243 } else {
duke@1 244 String path = DirectoryManager.getRelativePath(packageDoc.name(),
duke@1 245 prev.name());
duke@1 246 printHyperLink(path + "package-summary.html", "",
duke@1 247 configuration.getText("doclet.Prev_Package"), true);
duke@1 248 }
duke@1 249 }
duke@1 250
duke@1 251 /**
duke@1 252 * Print "NEXT PACKAGE" link in the navigation bar.
duke@1 253 */
duke@1 254 protected void navLinkNext() {
duke@1 255 if (next == null) {
duke@1 256 printText("doclet.Next_Package");
duke@1 257 } else {
duke@1 258 String path = DirectoryManager.getRelativePath(packageDoc.name(),
duke@1 259 next.name());
duke@1 260 printHyperLink(path + "package-summary.html", "",
duke@1 261 configuration.getText("doclet.Next_Package"), true);
duke@1 262 }
duke@1 263 }
duke@1 264
duke@1 265 /**
duke@1 266 * Print "Tree" link in the navigation bar. This will be link to the package
duke@1 267 * tree file.
duke@1 268 */
duke@1 269 protected void navLinkTree() {
duke@1 270 navCellStart();
duke@1 271 printHyperLink("package-tree.html", "", configuration.getText("doclet.Tree"),
duke@1 272 true, "NavBarFont1");
duke@1 273 navCellEnd();
duke@1 274 }
duke@1 275
duke@1 276 /**
duke@1 277 * Highlight "Package" in the navigation bar, as this is the package page.
duke@1 278 */
duke@1 279 protected void navLinkPackage() {
duke@1 280 navCellRevStart();
duke@1 281 fontStyle("NavBarFont1Rev");
bpatel@182 282 strongText("doclet.Package");
duke@1 283 fontEnd();
duke@1 284 navCellEnd();
duke@1 285 }
duke@1 286 }

mercurial