--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/PackageWriterImpl.java Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,275 @@
+/*
+ * Copyright 1997-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package com.sun.tools.doclets.formats.html;
+
+import com.sun.tools.doclets.internal.toolkit.*;
+import com.sun.tools.doclets.internal.toolkit.util.*;
+
+import com.sun.javadoc.*;
+import java.io.*;
+import java.util.*;
+
+/**
+ * Class to generate file for each package contents in the right-hand
+ * frame. This will list all the Class Kinds in the package. A click on any
+ * class-kind will update the frame with the clicked class-kind page.
+ *
+ * @author Atul M Dambalkar
+ */
+public class PackageWriterImpl extends HtmlDocletWriter
+ implements PackageSummaryWriter {
+
+ /**
+ * The prev package name in the alpha-order list.
+ */
+ protected PackageDoc prev;
+
+ /**
+ * The next package name in the alpha-order list.
+ */
+ protected PackageDoc next;
+
+ /**
+ * The package being documented.
+ */
+ protected PackageDoc packageDoc;
+
+ /**
+ * The name of the output file.
+ */
+ private static final String OUTPUT_FILE_NAME = "package-summary.html";
+
+ /**
+ * Constructor to construct PackageWriter object and to generate
+ * "package-summary.html" file in the respective package directory.
+ * For example for package "java.lang" this will generate file
+ * "package-summary.html" file in the "java/lang" directory. It will also
+ * create "java/lang" directory in the current or the destination directory
+ * if it doesen't exist.
+ *
+ * @param configuration the configuration of the doclet.
+ * @param packageDoc PackageDoc under consideration.
+ * @param prev Previous package in the sorted array.
+ * @param next Next package in the sorted array.
+ */
+ public PackageWriterImpl(ConfigurationImpl configuration,
+ PackageDoc packageDoc, PackageDoc prev, PackageDoc next)
+ throws IOException {
+ super(configuration, DirectoryManager.getDirectoryPath(packageDoc), OUTPUT_FILE_NAME,
+ DirectoryManager.getRelativePath(packageDoc.name()));
+ this.prev = prev;
+ this.next = next;
+ this.packageDoc = packageDoc;
+ }
+
+ /**
+ * Return the name of the output file.
+ *
+ * @return the name of the output file.
+ */
+ public String getOutputFileName() {
+ return OUTPUT_FILE_NAME;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void writeSummaryHeader() {}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void writeSummaryFooter() {}
+
+ /**
+ * {@inheritDoc}
+ */
+ public void writeClassesSummary(ClassDoc[] classes, String label) {
+ if(classes.length > 0) {
+ Arrays.sort(classes);
+ tableIndexSummary();
+ boolean printedHeading = false;
+ for (int i = 0; i < classes.length; i++) {
+ if (!printedHeading) {
+ printFirstRow(label);
+ printedHeading = true;
+ }
+ if (!Util.isCoreClass(classes[i]) ||
+ !configuration.isGeneratedDoc(classes[i])) {
+ continue;
+ }
+ trBgcolorStyle("white", "TableRowColor");
+ summaryRow(15);
+ bold();
+ printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_PACKAGE,
+ classes[i], false));
+ boldEnd();
+ summaryRowEnd();
+ summaryRow(0);
+ if (Util.isDeprecated(classes[i])) {
+ boldText("doclet.Deprecated");
+ if (classes[i].tags("deprecated").length > 0) {
+ space();
+ printSummaryDeprecatedComment(classes[i],
+ classes[i].tags("deprecated")[0]);
+ }
+ } else {
+ printSummaryComment(classes[i]);
+ }
+ summaryRowEnd();
+ trEnd();
+ }
+ tableEnd();
+ println(" ");
+ p();
+ }
+ }
+
+ /**
+ * Print the table heading for the class-listing.
+ *
+ * @param label Label for the Class kind listing.
+ */
+ protected void printFirstRow(String label) {
+ tableHeaderStart("#CCCCFF");
+ bold(label);
+ tableHeaderEnd();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void writePackageDescription() {
+ if (packageDoc.inlineTags().length > 0) {
+ anchor("package_description");
+ h2(configuration.getText("doclet.Package_Description", packageDoc.name()));
+ p();
+ printInlineComment(packageDoc);
+ p();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void writePackageTags() {
+ printTags(packageDoc);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void writePackageHeader(String heading) {
+ String pkgName = packageDoc.name();
+ printHtmlHeader(pkgName,
+ configuration.metakeywords.getMetaKeywords(packageDoc), true);
+ printTop();
+ navLinks(true);
+ hr();
+ writeAnnotationInfo(packageDoc);
+ h2(configuration.getText("doclet.Package") + " " + heading);
+ if (packageDoc.inlineTags().length > 0 && ! configuration.nocomment) {
+ printSummaryComment(packageDoc);
+ p();
+ bold(configuration.getText("doclet.See"));
+ br();
+ printNbsps();
+ printHyperLink("", "package_description",
+ configuration.getText("doclet.Description"), true);
+ p();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void writePackageFooter() {
+ hr();
+ navLinks(false);
+ printBottom();
+ printBodyHtmlEnd();
+ }
+
+ /**
+ * Print "Use" link for this pacakge in the navigation bar.
+ */
+ protected void navLinkClassUse() {
+ navCellStart();
+ printHyperLink("package-use.html", "", configuration.getText("doclet.navClassUse"),
+ true, "NavBarFont1");
+ navCellEnd();
+ }
+
+ /**
+ * Print "PREV PACKAGE" link in the navigation bar.
+ */
+ protected void navLinkPrevious() {
+ if (prev == null) {
+ printText("doclet.Prev_Package");
+ } else {
+ String path = DirectoryManager.getRelativePath(packageDoc.name(),
+ prev.name());
+ printHyperLink(path + "package-summary.html", "",
+ configuration.getText("doclet.Prev_Package"), true);
+ }
+ }
+
+ /**
+ * Print "NEXT PACKAGE" link in the navigation bar.
+ */
+ protected void navLinkNext() {
+ if (next == null) {
+ printText("doclet.Next_Package");
+ } else {
+ String path = DirectoryManager.getRelativePath(packageDoc.name(),
+ next.name());
+ printHyperLink(path + "package-summary.html", "",
+ configuration.getText("doclet.Next_Package"), true);
+ }
+ }
+
+ /**
+ * Print "Tree" link in the navigation bar. This will be link to the package
+ * tree file.
+ */
+ protected void navLinkTree() {
+ navCellStart();
+ printHyperLink("package-tree.html", "", configuration.getText("doclet.Tree"),
+ true, "NavBarFont1");
+ navCellEnd();
+ }
+
+ /**
+ * Highlight "Package" in the navigation bar, as this is the package page.
+ */
+ protected void navLinkPackage() {
+ navCellRevStart();
+ fontStyle("NavBarFont1Rev");
+ boldText("doclet.Package");
+ fontEnd();
+ navCellEnd();
+ }
+}