001: /*
002: * Copyright 1998-2005 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025:
026: package com.sun.tools.doclets.formats.html;
027:
028: import com.sun.javadoc.*;
029: import java.io.*;
030: import java.util.*;
031:
032: /**
033: * Abstract class to generate the overview files in
034: * Frame and Non-Frame format. This will be sub-classed by to
035: * generate overview-frame.html as well as overview-summary.html.
036: *
037: * @author Atul M Dambalkar
038: */
039: public abstract class AbstractPackageIndexWriter extends
040: HtmlDocletWriter {
041:
042: /**
043: * Array of Packages to be documented.
044: */
045: protected PackageDoc[] packages;
046:
047: /**
048: * Constructor. Also initialises the packages variable.
049: *
050: * @param filename Name of the package index file to be generated.
051: */
052: public AbstractPackageIndexWriter(ConfigurationImpl configuration,
053: String filename) throws IOException {
054: super (configuration, filename);
055: this .relativepathNoSlash = ".";
056: packages = configuration.packages;
057: }
058:
059: protected abstract void printNavigationBarHeader();
060:
061: protected abstract void printNavigationBarFooter();
062:
063: protected abstract void printOverviewHeader();
064:
065: protected abstract void printIndexHeader(String text);
066:
067: protected abstract void printIndexRow(PackageDoc pkg);
068:
069: protected abstract void printIndexFooter();
070:
071: /**
072: * Generate the contants in the package index file. Call appropriate
073: * methods from the sub-class in order to generate Frame or Non
074: * Frame format.
075: * @param title the title of the window.
076: * @param includeScript boolean set true if windowtitle script is to be included
077: */
078: protected void generatePackageIndexFile(String title,
079: boolean includeScript) throws IOException {
080: String windowOverview = configuration.getText(title);
081: printHtmlHeader(windowOverview,
082: configuration.metakeywords.getOverviewMetaKeywords(
083: title, configuration.doctitle), includeScript);
084: printNavigationBarHeader();
085: printOverviewHeader();
086:
087: generateIndex();
088:
089: printOverview();
090:
091: printNavigationBarFooter();
092: printBodyHtmlEnd();
093: }
094:
095: /**
096: * Default to no overview, overwrite to add overview.
097: */
098: protected void printOverview() throws IOException {
099: }
100:
101: /**
102: * Generate the frame or non-frame package index.
103: */
104: protected void generateIndex() {
105: printIndexContents(packages, "doclet.Package_Summary");
106: }
107:
108: /**
109: * Generate code for package index contents. Call appropriate methods from
110: * the sub-classes.
111: *
112: * @param packages Array of packages to be documented.
113: * @param text String which will be used as the heading.
114: */
115: protected void printIndexContents(PackageDoc[] packages, String text) {
116: if (packages.length > 0) {
117: Arrays.sort(packages);
118: printIndexHeader(text);
119: printAllClassesPackagesLink();
120: for (int i = 0; i < packages.length; i++) {
121: if (packages[i] != null) {
122: printIndexRow(packages[i]);
123: }
124: }
125: printIndexFooter();
126: }
127: }
128:
129: /**
130: * Print the doctitle, if it is specified on the command line.
131: */
132: protected void printConfigurationTitle() {
133: if (configuration.doctitle.length() > 0) {
134: center();
135: h1(configuration.doctitle);
136: centerEnd();
137: }
138: }
139:
140: /**
141: * Highlight "Overview" in the bold format, in the navigation bar as this
142: * is the overview page.
143: */
144: protected void navLinkContents() {
145: navCellRevStart();
146: fontStyle("NavBarFont1Rev");
147: boldText("doclet.Overview");
148: fontEnd();
149: navCellEnd();
150: }
151:
152: /**
153: * Do nothing. This will be overridden in PackageIndexFrameWriter.
154: */
155: protected void printAllClassesPackagesLink() {
156: }
157: }
|