duke@1: /* ohair@554: * Copyright (c) 1998, 2005, Oracle and/or its affiliates. All rights reserved. duke@1: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. duke@1: * duke@1: * This code is free software; you can redistribute it and/or modify it duke@1: * under the terms of the GNU General Public License version 2 only, as ohair@554: * published by the Free Software Foundation. Oracle designates this duke@1: * particular file as subject to the "Classpath" exception as provided ohair@554: * by Oracle in the LICENSE file that accompanied this code. duke@1: * duke@1: * This code is distributed in the hope that it will be useful, but WITHOUT duke@1: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or duke@1: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License duke@1: * version 2 for more details (a copy is included in the LICENSE file that duke@1: * accompanied this code). duke@1: * duke@1: * You should have received a copy of the GNU General Public License version duke@1: * 2 along with this work; if not, write to the Free Software Foundation, duke@1: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. duke@1: * ohair@554: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ohair@554: * or visit www.oracle.com if you need additional information or have any ohair@554: * questions. duke@1: */ duke@1: duke@1: package com.sun.tools.doclets.formats.html; duke@1: bpatel@766: import java.io.*; duke@1: import com.sun.tools.doclets.internal.toolkit.util.*; bpatel@766: import com.sun.tools.doclets.internal.toolkit.*; bpatel@766: import com.sun.tools.doclets.formats.html.markup.*; duke@1: duke@1: /** duke@1: * Generate the Help File for the generated API documentation. The help file duke@1: * contents are helpful for browsing the generated documentation. duke@1: * duke@1: * @author Atul M Dambalkar duke@1: */ duke@1: public class HelpWriter extends HtmlDocletWriter { duke@1: duke@1: /** duke@1: * Constructor to construct HelpWriter object. duke@1: * @param filename File to be generated. duke@1: */ duke@1: public HelpWriter(ConfigurationImpl configuration, duke@1: String filename) throws IOException { duke@1: super(configuration, filename); duke@1: } duke@1: duke@1: /** duke@1: * Construct the HelpWriter object and then use it to generate the help duke@1: * file. The name of the generated file is "help-doc.html". The help file duke@1: * will get generated if and only if "-helpfile" and "-nohelp" is not used duke@1: * on the command line. duke@1: * @throws DocletAbortException duke@1: */ duke@1: public static void generate(ConfigurationImpl configuration) { duke@1: HelpWriter helpgen; duke@1: String filename = ""; duke@1: try { duke@1: filename = "help-doc.html"; duke@1: helpgen = new HelpWriter(configuration, filename); duke@1: helpgen.generateHelpFile(); duke@1: helpgen.close(); duke@1: } catch (IOException exc) { duke@1: configuration.standardmessage.error( duke@1: "doclet.exception_encountered", duke@1: exc.toString(), filename); duke@1: throw new DocletAbortException(); duke@1: } duke@1: } duke@1: duke@1: /** duke@1: * Generate the help file contents. duke@1: */ duke@1: protected void generateHelpFile() { bpatel@766: String title = configuration.getText("doclet.Window_Help_title"); bpatel@766: Content body = getBody(true, getWindowTitle(title)); bpatel@766: addTop(body); bpatel@766: addNavLinks(true, body); bpatel@766: addHelpFileContents(body); bpatel@766: addNavLinks(false, body); bpatel@766: addBottom(body); bpatel@766: printHtmlDocument(null, true, body); duke@1: } duke@1: duke@1: /** bpatel@766: * Add the help file contents from the resource file to the content tree. While adding the duke@1: * help file contents it also keeps track of user options. If "-notree" bpatel@766: * is used, then the "overview-tree.html" will not get added and hence bpatel@766: * help information also will not get added. bpatel@766: * bpatel@766: * @param contentTree the content tree to which the help file contents will be added duke@1: */ bpatel@766: protected void addHelpFileContents(Content contentTree) { bpatel@766: Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, false, HtmlStyle.title, bpatel@766: getResource("doclet.Help_line_1")); bpatel@766: Content div = HtmlTree.DIV(HtmlStyle.header, heading); bpatel@766: Content line2 = HtmlTree.P(HtmlStyle.subTitle, bpatel@766: getResource("doclet.Help_line_2")); bpatel@766: div.addContent(line2); bpatel@766: contentTree.addContent(div); bpatel@766: HtmlTree ul = new HtmlTree(HtmlTag.UL); bpatel@766: ul.addStyle(HtmlStyle.blockList); duke@1: if (configuration.createoverview) { bpatel@766: Content overviewHeading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Overview")); bpatel@766: Content liOverview = HtmlTree.LI(HtmlStyle.blockList, overviewHeading); bpatel@766: Content line3 = getResource("doclet.Help_line_3", bpatel@766: getHyperLinkString("overview-summary.html", bpatel@766: configuration.getText("doclet.Overview"))); bpatel@766: Content overviewPara = HtmlTree.P(line3); bpatel@766: liOverview.addContent(overviewPara); bpatel@766: ul.addContent(liOverview); duke@1: } bpatel@766: Content packageHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Package")); bpatel@766: Content liPackage = HtmlTree.LI(HtmlStyle.blockList, packageHead); bpatel@766: Content line4 = getResource("doclet.Help_line_4"); bpatel@766: Content packagePara = HtmlTree.P(line4); bpatel@766: liPackage.addContent(packagePara); bpatel@766: HtmlTree ulPackage = new HtmlTree(HtmlTag.UL); bpatel@766: ulPackage.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Interfaces_Italic"))); bpatel@766: ulPackage.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Classes"))); bpatel@766: ulPackage.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Enums"))); bpatel@766: ulPackage.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Exceptions"))); bpatel@766: ulPackage.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Errors"))); bpatel@766: ulPackage.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.AnnotationTypes"))); bpatel@766: liPackage.addContent(ulPackage); bpatel@766: ul.addContent(liPackage); bpatel@766: Content classHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Help_line_5")); bpatel@766: Content liClass = HtmlTree.LI(HtmlStyle.blockList, classHead); bpatel@766: Content line6 = getResource("doclet.Help_line_6"); bpatel@766: Content classPara = HtmlTree.P(line6); bpatel@766: liClass.addContent(classPara); bpatel@766: HtmlTree ul1 = new HtmlTree(HtmlTag.UL); bpatel@766: ul1.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_line_7"))); bpatel@766: ul1.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_line_8"))); bpatel@766: ul1.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_line_9"))); bpatel@766: ul1.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_line_10"))); bpatel@766: ul1.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_line_11"))); bpatel@766: ul1.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_line_12"))); bpatel@766: liClass.addContent(ul1); bpatel@766: HtmlTree ul2 = new HtmlTree(HtmlTag.UL); bpatel@766: ul2.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Nested_Class_Summary"))); bpatel@766: ul2.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Field_Summary"))); bpatel@766: ul2.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Constructor_Summary"))); bpatel@766: ul2.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Method_Summary"))); bpatel@766: liClass.addContent(ul2); bpatel@766: HtmlTree ul3 = new HtmlTree(HtmlTag.UL); bpatel@766: ul3.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Field_Detail"))); bpatel@766: ul3.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Constructor_Detail"))); bpatel@766: ul3.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Method_Detail"))); bpatel@766: liClass.addContent(ul3); bpatel@766: Content line13 = getResource("doclet.Help_line_13"); bpatel@766: Content para = HtmlTree.P(line13); bpatel@766: liClass.addContent(para); bpatel@766: ul.addContent(liClass); duke@1: //Annotation Types bpatel@766: Content aHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.AnnotationType")); bpatel@766: Content liAnnotation = HtmlTree.LI(HtmlStyle.blockList, aHead); bpatel@766: Content aline1 = getResource("doclet.Help_annotation_type_line_1"); bpatel@766: Content aPara = HtmlTree.P(aline1); bpatel@766: liAnnotation.addContent(aPara); bpatel@766: HtmlTree aul = new HtmlTree(HtmlTag.UL); bpatel@766: aul.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_annotation_type_line_2"))); bpatel@766: aul.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_annotation_type_line_3"))); bpatel@766: aul.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Annotation_Type_Required_Member_Summary"))); bpatel@766: aul.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Annotation_Type_Optional_Member_Summary"))); bpatel@766: aul.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Annotation_Type_Member_Detail"))); bpatel@766: liAnnotation.addContent(aul); bpatel@766: ul.addContent(liAnnotation); duke@1: //Enums bpatel@766: Content enumHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Enum")); bpatel@766: Content liEnum = HtmlTree.LI(HtmlStyle.blockList, enumHead); bpatel@766: Content eline1 = getResource("doclet.Help_enum_line_1"); bpatel@766: Content enumPara = HtmlTree.P(eline1); bpatel@766: liEnum.addContent(enumPara); bpatel@766: HtmlTree eul = new HtmlTree(HtmlTag.UL); bpatel@766: eul.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_enum_line_2"))); bpatel@766: eul.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_enum_line_3"))); bpatel@766: eul.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Enum_Constant_Summary"))); bpatel@766: eul.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Enum_Constant_Detail"))); bpatel@766: liEnum.addContent(eul); bpatel@766: ul.addContent(liEnum); duke@1: if (configuration.classuse) { bpatel@766: Content useHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Help_line_14")); bpatel@766: Content liUse = HtmlTree.LI(HtmlStyle.blockList, useHead); bpatel@766: Content line15 = getResource("doclet.Help_line_15"); bpatel@766: Content usePara = HtmlTree.P(line15); bpatel@766: liUse.addContent(usePara); bpatel@766: ul.addContent(liUse); duke@1: } duke@1: if (configuration.createtree) { bpatel@766: Content treeHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Help_line_16")); bpatel@766: Content liTree = HtmlTree.LI(HtmlStyle.blockList, treeHead); bpatel@766: Content line17 = getResource("doclet.Help_line_17_with_tree_link", bpatel@766: getHyperLinkString("overview-tree.html", bpatel@766: configuration.getText("doclet.Class_Hierarchy"))); bpatel@766: Content treePara = HtmlTree.P(line17); bpatel@766: liTree.addContent(treePara); bpatel@766: HtmlTree tul = new HtmlTree(HtmlTag.UL); bpatel@766: tul.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_line_18"))); bpatel@766: tul.addContent(HtmlTree.LI( bpatel@766: getResource("doclet.Help_line_19"))); bpatel@766: liTree.addContent(tul); bpatel@766: ul.addContent(liTree); duke@1: } duke@1: if (!(configuration.nodeprecatedlist || duke@1: configuration.nodeprecated)) { bpatel@766: Content dHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Deprecated_API")); bpatel@766: Content liDeprecated = HtmlTree.LI(HtmlStyle.blockList, dHead); bpatel@766: Content line20 = getResource("doclet.Help_line_20_with_deprecated_api_link", bpatel@766: getHyperLinkString("deprecated-list.html", bpatel@766: configuration.getText("doclet.Deprecated_API"))); bpatel@766: Content dPara = HtmlTree.P(line20); bpatel@766: liDeprecated.addContent(dPara); bpatel@766: ul.addContent(liDeprecated); duke@1: } duke@1: if (configuration.createindex) { duke@1: String indexlink; duke@1: if (configuration.splitindex) { bpatel@766: indexlink = getHyperLinkString("index-files/index-1.html", bpatel@766: configuration.getText("doclet.Index")); duke@1: } else { bpatel@766: indexlink = getHyperLinkString("index-all.html", bpatel@766: configuration.getText("doclet.Index")); duke@1: } bpatel@766: Content indexHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Help_line_21")); bpatel@766: Content liIndex = HtmlTree.LI(HtmlStyle.blockList, indexHead); bpatel@766: Content line22 = getResource("doclet.Help_line_22", indexlink); bpatel@766: Content indexPara = HtmlTree.P(line22); bpatel@766: liIndex.addContent(indexPara); bpatel@766: ul.addContent(liIndex); duke@1: } bpatel@766: Content prevHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Help_line_23")); bpatel@766: Content liPrev = HtmlTree.LI(HtmlStyle.blockList, prevHead); bpatel@766: Content line24 = getResource("doclet.Help_line_24"); bpatel@766: Content prevPara = HtmlTree.P(line24); bpatel@766: liPrev.addContent(prevPara); bpatel@766: ul.addContent(liPrev); bpatel@766: Content frameHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Help_line_25")); bpatel@766: Content liFrame = HtmlTree.LI(HtmlStyle.blockList, frameHead); bpatel@766: Content line26 = getResource("doclet.Help_line_26"); bpatel@766: Content framePara = HtmlTree.P(line26); bpatel@766: liFrame.addContent(framePara); bpatel@766: ul.addContent(liFrame); bpatel@766: Content sHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Serialized_Form")); bpatel@766: Content liSerial = HtmlTree.LI(HtmlStyle.blockList, sHead); bpatel@766: Content line27 = getResource("doclet.Help_line_27"); bpatel@766: Content serialPara = HtmlTree.P(line27); bpatel@766: liSerial.addContent(serialPara); bpatel@766: ul.addContent(liSerial); bpatel@766: Content constHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING, bpatel@766: getResource("doclet.Constants_Summary")); bpatel@766: Content liConst = HtmlTree.LI(HtmlStyle.blockList, constHead); bpatel@766: Content line28 = getResource("doclet.Help_line_28"); bpatel@766: Content constPara = HtmlTree.P(line28); bpatel@766: liConst.addContent(constPara); bpatel@766: ul.addContent(liConst); bpatel@766: Content divContent = HtmlTree.DIV(HtmlStyle.contentContainer, ul); bpatel@766: Content line29 = HtmlTree.EM(getResource("doclet.Help_line_29")); bpatel@766: divContent.addContent(line29); bpatel@766: contentTree.addContent(divContent); duke@1: } duke@1: duke@1: /** bpatel@766: * Get the help label. bpatel@766: * bpatel@766: * @return a content tree for the help label duke@1: */ bpatel@766: protected Content getNavLinkHelp() { bpatel@766: Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, helpLabel); bpatel@766: return li; duke@1: } duke@1: }