diff -r 000000000000 -r 9a66ca7c79fa src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlDocWriter.java Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,357 @@ +/* + * Copyright 1997-2007 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.markup; + +import com.sun.tools.doclets.internal.toolkit.*; + +import com.sun.javadoc.*; +import java.io.*; +import java.util.*; +import com.sun.tools.doclets.internal.toolkit.util.*; + + +/** + * Class for the Html Format Code Generation specific to JavaDoc. + * This Class contains methods related to the Html Code Generation which + * are used by the Sub-Classes in the package com.sun.tools.doclets.standard + * and com.sun.tools.doclets.oneone. + * + * @since 1.2 + * @author Atul M Dambalkar + * @author Robert Field + */ +public abstract class HtmlDocWriter extends HtmlWriter { + + /** + * Constructor. Initializes the destination file name through the super + * class HtmlWriter. + * + * @param filename String file name. + */ + public HtmlDocWriter(Configuration configuration, + String filename) throws IOException { + super(configuration, + null, configuration.destDirName + filename, + configuration.docencoding); + configuration.message.notice("doclet.Generating_0", + configuration.destDirName + filename); + } + + public HtmlDocWriter(Configuration configuration, + String path, String filename) throws IOException { + super(configuration, + configuration.destDirName + path, filename, + configuration.docencoding); + configuration.message.notice("doclet.Generating_0", + configuration.destDirName + + ((path.length() > 0)? + path + File.separator: "") + filename); + } + + /** + * Accessor for configuration. + */ + public abstract Configuration configuration(); + + /** + * Print Html Hyper Link. + * + * @param link String name of the file. + * @param where Position of the link in the file. Character '#' is not + * needed. + * @param label Tag for the link. + * @param bold Boolean that sets label to bold. + */ + public void printHyperLink(String link, String where, + String label, boolean bold) { + print(getHyperLink(link, where, label, bold, "", "", "")); + } + + /** + * Print Html Hyper Link. + * + * @param link String name of the file. + * @param where Position of the link in the file. Character '#' is not + * needed. + * @param label Tag for the link. + */ + public void printHyperLink(String link, String where, String label) { + printHyperLink(link, where, label, false); + } + + /** + * Print Html Hyper Link. + * + * @param link String name of the file. + * @param where Position of the link in the file. Character '#' is not + * needed. + * @param label Tag for the link. + * @param bold Boolean that sets label to bold. + * @param stylename String style of text defined in style sheet. + */ + public void printHyperLink(String link, String where, + String label, boolean bold, + String stylename) { + print(getHyperLink(link, where, label, bold, stylename, "", "")); + } + + /** + * Return Html Hyper Link string. + * + * @param link String name of the file. + * @param where Position of the link in the file. Character '#' is not + * needed. + * @param label Tag for the link. + * @param bold Boolean that sets label to bold. + * @return String Hyper Link. + */ + public String getHyperLink(String link, String where, + String label, boolean bold) { + return getHyperLink(link, where, label, bold, "", "", ""); + } + + /** + * Get Html Hyper Link string. + * + * @param link String name of the file. + * @param where Position of the link in the file. Character '#' is not + * needed. + * @param label Tag for the link. + * @param bold Boolean that sets label to bold. + * @param stylename String style of text defined in style sheet. + * @return String Hyper Link. + */ + public String getHyperLink(String link, String where, + String label, boolean bold, + String stylename) { + return getHyperLink(link, where, label, bold, stylename, "", ""); + } + + /** + * Get Html Hyper Link string. + * + * @param link String name of the file. + * @param where Position of the link in the file. Character '#' is not + * needed. + * @param label Tag for the link. + * @param bold Boolean that sets label to bold. + * @param stylename String style of text defined in style sheet. + * @param title String that describes the link's content for accessibility. + * @param target Target frame. + * @return String Hyper Link. + */ + public String getHyperLink(String link, String where, + String label, boolean bold, + String stylename, String title, String target) { + StringBuffer retlink = new StringBuffer(); + retlink.append(""); + if (stylename != null && stylename.length() != 0) { + retlink.append(""); + } + if (bold) { + retlink.append(""); + } + retlink.append(label); + if (bold) { + retlink.append(""); + } + if (stylename != null && stylename.length() != 0) { + retlink.append(""); + } + retlink.append(""); + return retlink.toString(); + } + + /** + * Print link without positioning in the file. + * + * @param link String name of the file. + * @param label Tag for the link. + */ + public void printHyperLink(String link, String label) { + print(getHyperLink(link, "", label, false)); + } + + /** + * Get link string without positioning in the file. + * + * @param link String name of the file. + * @param label Tag for the link. + * @return Strign Hyper link. + */ + public String getHyperLink(String link, String label) { + return getHyperLink(link, "", label, false); + } + + /** + * Print the name of the package, this class is in. + * + * @param cd ClassDoc. + */ + public void printPkgName(ClassDoc cd) { + print(getPkgName(cd)); + } + + /** + * Get the name of the package, this class is in. + * + * @param cd ClassDoc. + */ + public String getPkgName(ClassDoc cd) { + String pkgName = cd.containingPackage().name(); + if (pkgName.length() > 0) { + pkgName += "."; + return pkgName; + } + return ""; + } + + /** + * Print the frameset version of the Html file header. + * Called only when generating an HTML frameset file. + * + * @param title Title of this HTML document. + */ + public void printFramesetHeader(String title) { + printFramesetHeader(title, false); + } + + /** + * Print the frameset version of the Html file header. + * Called only when generating an HTML frameset file. + * + * @param title Title of this HTML document. + * @param noTimeStamp If true, don't print time stamp in header. + */ + public void printFramesetHeader(String title, boolean noTimeStamp) { + println(""); + println(""); + html(); + head(); + if (! noTimeStamp) { + print(""); + } + if (configuration.charset.length() > 0) { + println(""); + } + title(); + println(title); + titleEnd(); + //Script to set the classFrame if necessary. + script(); + println(" targetPage = \"\" + window.location.search;"); + println(" if (targetPage != \"\" && targetPage != \"undefined\")"); + println(" targetPage = targetPage.substring(1);"); + println(" if (targetPage.indexOf(\":\") != -1)"); + println(" targetPage = \"undefined\";"); + + println(" function loadFrames() {"); + println(" if (targetPage != \"\" && targetPage != \"undefined\")"); + println(" top.classFrame.location = top.targetPage;"); + println(" }"); + scriptEnd(); + noScript(); + noScriptEnd(); + headEnd(); + } + + /** + * Print the appropriate spaces to format the class tree in the class page. + * + * @param len Number of spaces. + */ + public String spaces(int len) { + String space = ""; + + for (int i = 0; i < len; i++) { + space += " "; + } + return space; + } + + /** + * Print the closing </body> and </html> tags. + */ + public void printBodyHtmlEnd() { + println(); + bodyEnd(); + htmlEnd(); + } + + /** + * Calls {@link #printBodyHtmlEnd()} method. + */ + public void printFooter() { + printBodyHtmlEnd(); + } + + /** + * Print closing </html> tag. + */ + public void printFrameFooter() { + htmlEnd(); + } + + /** + * Print ten non-breaking spaces("&nbsp;"). + */ + public void printNbsps() { + print("          "); + } + + /** + * Get the day and date information for today, depending upon user option. + * + * @return String Today. + * @see java.util.Calendar + * @see java.util.GregorianCalendar + * @see java.util.TimeZone + */ + public String today() { + Calendar calendar = new GregorianCalendar(TimeZone.getDefault()); + return calendar.getTime().toString(); + } +}