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

Wed, 13 Apr 2011 16:57:22 -0700

author
ohair
date
Wed, 13 Apr 2011 16:57:22 -0700
changeset 966
53f212bed4f4
parent 943
72bdd232e0ea
parent 962
0ff2bbd38f10
child 1349
d604fd09480b
permissions
-rw-r--r--

Merge

duke@1 1 /*
ohair@962 2 * Copyright (c) 1998, 2011, Oracle and/or its affiliates. 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
ohair@554 7 * published by the Free Software Foundation. Oracle designates this
duke@1 8 * particular file as subject to the "Classpath" exception as provided
ohair@554 9 * by Oracle 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 *
ohair@554 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ohair@554 22 * or visit www.oracle.com if you need additional information or have any
ohair@554 23 * questions.
duke@1 24 */
duke@1 25
duke@1 26 package com.sun.tools.doclets.formats.html;
duke@1 27
bpatel@766 28 import java.io.*;
duke@1 29 import com.sun.tools.doclets.internal.toolkit.util.*;
bpatel@766 30 import com.sun.tools.doclets.internal.toolkit.*;
bpatel@766 31 import com.sun.tools.doclets.formats.html.markup.*;
duke@1 32
duke@1 33 /**
duke@1 34 * Generate the Help File for the generated API documentation. The help file
duke@1 35 * contents are helpful for browsing the generated documentation.
duke@1 36 *
duke@1 37 * @author Atul M Dambalkar
duke@1 38 */
duke@1 39 public class HelpWriter extends HtmlDocletWriter {
duke@1 40
duke@1 41 /**
duke@1 42 * Constructor to construct HelpWriter object.
duke@1 43 * @param filename File to be generated.
duke@1 44 */
duke@1 45 public HelpWriter(ConfigurationImpl configuration,
duke@1 46 String filename) throws IOException {
duke@1 47 super(configuration, filename);
duke@1 48 }
duke@1 49
duke@1 50 /**
duke@1 51 * Construct the HelpWriter object and then use it to generate the help
duke@1 52 * file. The name of the generated file is "help-doc.html". The help file
duke@1 53 * will get generated if and only if "-helpfile" and "-nohelp" is not used
duke@1 54 * on the command line.
duke@1 55 * @throws DocletAbortException
duke@1 56 */
duke@1 57 public static void generate(ConfigurationImpl configuration) {
duke@1 58 HelpWriter helpgen;
duke@1 59 String filename = "";
duke@1 60 try {
duke@1 61 filename = "help-doc.html";
duke@1 62 helpgen = new HelpWriter(configuration, filename);
duke@1 63 helpgen.generateHelpFile();
duke@1 64 helpgen.close();
duke@1 65 } catch (IOException exc) {
duke@1 66 configuration.standardmessage.error(
duke@1 67 "doclet.exception_encountered",
duke@1 68 exc.toString(), filename);
duke@1 69 throw new DocletAbortException();
duke@1 70 }
duke@1 71 }
duke@1 72
duke@1 73 /**
duke@1 74 * Generate the help file contents.
duke@1 75 */
duke@1 76 protected void generateHelpFile() {
bpatel@766 77 String title = configuration.getText("doclet.Window_Help_title");
bpatel@766 78 Content body = getBody(true, getWindowTitle(title));
bpatel@766 79 addTop(body);
bpatel@766 80 addNavLinks(true, body);
bpatel@766 81 addHelpFileContents(body);
bpatel@766 82 addNavLinks(false, body);
bpatel@766 83 addBottom(body);
bpatel@766 84 printHtmlDocument(null, true, body);
duke@1 85 }
duke@1 86
duke@1 87 /**
bpatel@766 88 * Add the help file contents from the resource file to the content tree. While adding the
duke@1 89 * help file contents it also keeps track of user options. If "-notree"
bpatel@766 90 * is used, then the "overview-tree.html" will not get added and hence
bpatel@766 91 * help information also will not get added.
bpatel@766 92 *
bpatel@766 93 * @param contentTree the content tree to which the help file contents will be added
duke@1 94 */
bpatel@766 95 protected void addHelpFileContents(Content contentTree) {
bpatel@766 96 Content heading = HtmlTree.HEADING(HtmlConstants.TITLE_HEADING, false, HtmlStyle.title,
bpatel@766 97 getResource("doclet.Help_line_1"));
bpatel@766 98 Content div = HtmlTree.DIV(HtmlStyle.header, heading);
bpatel@943 99 Content line2 = HtmlTree.DIV(HtmlStyle.subTitle,
bpatel@766 100 getResource("doclet.Help_line_2"));
bpatel@766 101 div.addContent(line2);
bpatel@766 102 contentTree.addContent(div);
bpatel@766 103 HtmlTree ul = new HtmlTree(HtmlTag.UL);
bpatel@766 104 ul.addStyle(HtmlStyle.blockList);
duke@1 105 if (configuration.createoverview) {
bpatel@766 106 Content overviewHeading = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 107 getResource("doclet.Overview"));
bpatel@766 108 Content liOverview = HtmlTree.LI(HtmlStyle.blockList, overviewHeading);
bpatel@766 109 Content line3 = getResource("doclet.Help_line_3",
bpatel@766 110 getHyperLinkString("overview-summary.html",
bpatel@766 111 configuration.getText("doclet.Overview")));
bpatel@766 112 Content overviewPara = HtmlTree.P(line3);
bpatel@766 113 liOverview.addContent(overviewPara);
bpatel@766 114 ul.addContent(liOverview);
duke@1 115 }
bpatel@766 116 Content packageHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 117 getResource("doclet.Package"));
bpatel@766 118 Content liPackage = HtmlTree.LI(HtmlStyle.blockList, packageHead);
bpatel@766 119 Content line4 = getResource("doclet.Help_line_4");
bpatel@766 120 Content packagePara = HtmlTree.P(line4);
bpatel@766 121 liPackage.addContent(packagePara);
bpatel@766 122 HtmlTree ulPackage = new HtmlTree(HtmlTag.UL);
bpatel@766 123 ulPackage.addContent(HtmlTree.LI(
bpatel@766 124 getResource("doclet.Interfaces_Italic")));
bpatel@766 125 ulPackage.addContent(HtmlTree.LI(
bpatel@766 126 getResource("doclet.Classes")));
bpatel@766 127 ulPackage.addContent(HtmlTree.LI(
bpatel@766 128 getResource("doclet.Enums")));
bpatel@766 129 ulPackage.addContent(HtmlTree.LI(
bpatel@766 130 getResource("doclet.Exceptions")));
bpatel@766 131 ulPackage.addContent(HtmlTree.LI(
bpatel@766 132 getResource("doclet.Errors")));
bpatel@766 133 ulPackage.addContent(HtmlTree.LI(
bpatel@766 134 getResource("doclet.AnnotationTypes")));
bpatel@766 135 liPackage.addContent(ulPackage);
bpatel@766 136 ul.addContent(liPackage);
bpatel@766 137 Content classHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 138 getResource("doclet.Help_line_5"));
bpatel@766 139 Content liClass = HtmlTree.LI(HtmlStyle.blockList, classHead);
bpatel@766 140 Content line6 = getResource("doclet.Help_line_6");
bpatel@766 141 Content classPara = HtmlTree.P(line6);
bpatel@766 142 liClass.addContent(classPara);
bpatel@766 143 HtmlTree ul1 = new HtmlTree(HtmlTag.UL);
bpatel@766 144 ul1.addContent(HtmlTree.LI(
bpatel@766 145 getResource("doclet.Help_line_7")));
bpatel@766 146 ul1.addContent(HtmlTree.LI(
bpatel@766 147 getResource("doclet.Help_line_8")));
bpatel@766 148 ul1.addContent(HtmlTree.LI(
bpatel@766 149 getResource("doclet.Help_line_9")));
bpatel@766 150 ul1.addContent(HtmlTree.LI(
bpatel@766 151 getResource("doclet.Help_line_10")));
bpatel@766 152 ul1.addContent(HtmlTree.LI(
bpatel@766 153 getResource("doclet.Help_line_11")));
bpatel@766 154 ul1.addContent(HtmlTree.LI(
bpatel@766 155 getResource("doclet.Help_line_12")));
bpatel@766 156 liClass.addContent(ul1);
bpatel@766 157 HtmlTree ul2 = new HtmlTree(HtmlTag.UL);
bpatel@766 158 ul2.addContent(HtmlTree.LI(
bpatel@766 159 getResource("doclet.Nested_Class_Summary")));
bpatel@766 160 ul2.addContent(HtmlTree.LI(
bpatel@766 161 getResource("doclet.Field_Summary")));
bpatel@766 162 ul2.addContent(HtmlTree.LI(
bpatel@766 163 getResource("doclet.Constructor_Summary")));
bpatel@766 164 ul2.addContent(HtmlTree.LI(
bpatel@766 165 getResource("doclet.Method_Summary")));
bpatel@766 166 liClass.addContent(ul2);
bpatel@766 167 HtmlTree ul3 = new HtmlTree(HtmlTag.UL);
bpatel@766 168 ul3.addContent(HtmlTree.LI(
bpatel@766 169 getResource("doclet.Field_Detail")));
bpatel@766 170 ul3.addContent(HtmlTree.LI(
bpatel@766 171 getResource("doclet.Constructor_Detail")));
bpatel@766 172 ul3.addContent(HtmlTree.LI(
bpatel@766 173 getResource("doclet.Method_Detail")));
bpatel@766 174 liClass.addContent(ul3);
bpatel@766 175 Content line13 = getResource("doclet.Help_line_13");
bpatel@766 176 Content para = HtmlTree.P(line13);
bpatel@766 177 liClass.addContent(para);
bpatel@766 178 ul.addContent(liClass);
duke@1 179 //Annotation Types
bpatel@766 180 Content aHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 181 getResource("doclet.AnnotationType"));
bpatel@766 182 Content liAnnotation = HtmlTree.LI(HtmlStyle.blockList, aHead);
bpatel@766 183 Content aline1 = getResource("doclet.Help_annotation_type_line_1");
bpatel@766 184 Content aPara = HtmlTree.P(aline1);
bpatel@766 185 liAnnotation.addContent(aPara);
bpatel@766 186 HtmlTree aul = new HtmlTree(HtmlTag.UL);
bpatel@766 187 aul.addContent(HtmlTree.LI(
bpatel@766 188 getResource("doclet.Help_annotation_type_line_2")));
bpatel@766 189 aul.addContent(HtmlTree.LI(
bpatel@766 190 getResource("doclet.Help_annotation_type_line_3")));
bpatel@766 191 aul.addContent(HtmlTree.LI(
bpatel@766 192 getResource("doclet.Annotation_Type_Required_Member_Summary")));
bpatel@766 193 aul.addContent(HtmlTree.LI(
bpatel@766 194 getResource("doclet.Annotation_Type_Optional_Member_Summary")));
bpatel@766 195 aul.addContent(HtmlTree.LI(
bpatel@766 196 getResource("doclet.Annotation_Type_Member_Detail")));
bpatel@766 197 liAnnotation.addContent(aul);
bpatel@766 198 ul.addContent(liAnnotation);
duke@1 199 //Enums
bpatel@766 200 Content enumHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 201 getResource("doclet.Enum"));
bpatel@766 202 Content liEnum = HtmlTree.LI(HtmlStyle.blockList, enumHead);
bpatel@766 203 Content eline1 = getResource("doclet.Help_enum_line_1");
bpatel@766 204 Content enumPara = HtmlTree.P(eline1);
bpatel@766 205 liEnum.addContent(enumPara);
bpatel@766 206 HtmlTree eul = new HtmlTree(HtmlTag.UL);
bpatel@766 207 eul.addContent(HtmlTree.LI(
bpatel@766 208 getResource("doclet.Help_enum_line_2")));
bpatel@766 209 eul.addContent(HtmlTree.LI(
bpatel@766 210 getResource("doclet.Help_enum_line_3")));
bpatel@766 211 eul.addContent(HtmlTree.LI(
bpatel@766 212 getResource("doclet.Enum_Constant_Summary")));
bpatel@766 213 eul.addContent(HtmlTree.LI(
bpatel@766 214 getResource("doclet.Enum_Constant_Detail")));
bpatel@766 215 liEnum.addContent(eul);
bpatel@766 216 ul.addContent(liEnum);
duke@1 217 if (configuration.classuse) {
bpatel@766 218 Content useHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 219 getResource("doclet.Help_line_14"));
bpatel@766 220 Content liUse = HtmlTree.LI(HtmlStyle.blockList, useHead);
bpatel@766 221 Content line15 = getResource("doclet.Help_line_15");
bpatel@766 222 Content usePara = HtmlTree.P(line15);
bpatel@766 223 liUse.addContent(usePara);
bpatel@766 224 ul.addContent(liUse);
duke@1 225 }
duke@1 226 if (configuration.createtree) {
bpatel@766 227 Content treeHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 228 getResource("doclet.Help_line_16"));
bpatel@766 229 Content liTree = HtmlTree.LI(HtmlStyle.blockList, treeHead);
bpatel@766 230 Content line17 = getResource("doclet.Help_line_17_with_tree_link",
bpatel@766 231 getHyperLinkString("overview-tree.html",
bpatel@766 232 configuration.getText("doclet.Class_Hierarchy")));
bpatel@766 233 Content treePara = HtmlTree.P(line17);
bpatel@766 234 liTree.addContent(treePara);
bpatel@766 235 HtmlTree tul = new HtmlTree(HtmlTag.UL);
bpatel@766 236 tul.addContent(HtmlTree.LI(
bpatel@766 237 getResource("doclet.Help_line_18")));
bpatel@766 238 tul.addContent(HtmlTree.LI(
bpatel@766 239 getResource("doclet.Help_line_19")));
bpatel@766 240 liTree.addContent(tul);
bpatel@766 241 ul.addContent(liTree);
duke@1 242 }
duke@1 243 if (!(configuration.nodeprecatedlist ||
duke@1 244 configuration.nodeprecated)) {
bpatel@766 245 Content dHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 246 getResource("doclet.Deprecated_API"));
bpatel@766 247 Content liDeprecated = HtmlTree.LI(HtmlStyle.blockList, dHead);
bpatel@766 248 Content line20 = getResource("doclet.Help_line_20_with_deprecated_api_link",
bpatel@766 249 getHyperLinkString("deprecated-list.html",
bpatel@766 250 configuration.getText("doclet.Deprecated_API")));
bpatel@766 251 Content dPara = HtmlTree.P(line20);
bpatel@766 252 liDeprecated.addContent(dPara);
bpatel@766 253 ul.addContent(liDeprecated);
duke@1 254 }
duke@1 255 if (configuration.createindex) {
duke@1 256 String indexlink;
duke@1 257 if (configuration.splitindex) {
bpatel@766 258 indexlink = getHyperLinkString("index-files/index-1.html",
bpatel@766 259 configuration.getText("doclet.Index"));
duke@1 260 } else {
bpatel@766 261 indexlink = getHyperLinkString("index-all.html",
bpatel@766 262 configuration.getText("doclet.Index"));
duke@1 263 }
bpatel@766 264 Content indexHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 265 getResource("doclet.Help_line_21"));
bpatel@766 266 Content liIndex = HtmlTree.LI(HtmlStyle.blockList, indexHead);
bpatel@766 267 Content line22 = getResource("doclet.Help_line_22", indexlink);
bpatel@766 268 Content indexPara = HtmlTree.P(line22);
bpatel@766 269 liIndex.addContent(indexPara);
bpatel@766 270 ul.addContent(liIndex);
duke@1 271 }
bpatel@766 272 Content prevHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 273 getResource("doclet.Help_line_23"));
bpatel@766 274 Content liPrev = HtmlTree.LI(HtmlStyle.blockList, prevHead);
bpatel@766 275 Content line24 = getResource("doclet.Help_line_24");
bpatel@766 276 Content prevPara = HtmlTree.P(line24);
bpatel@766 277 liPrev.addContent(prevPara);
bpatel@766 278 ul.addContent(liPrev);
bpatel@766 279 Content frameHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 280 getResource("doclet.Help_line_25"));
bpatel@766 281 Content liFrame = HtmlTree.LI(HtmlStyle.blockList, frameHead);
bpatel@766 282 Content line26 = getResource("doclet.Help_line_26");
bpatel@766 283 Content framePara = HtmlTree.P(line26);
bpatel@766 284 liFrame.addContent(framePara);
bpatel@766 285 ul.addContent(liFrame);
bpatel@934 286 Content allclassesHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@934 287 getResource("doclet.All_Classes"));
bpatel@934 288 Content liAllClasses = HtmlTree.LI(HtmlStyle.blockList, allclassesHead);
bpatel@934 289 Content line27 = getResource("doclet.Help_line_27",
bpatel@934 290 getHyperLinkString("allclasses-noframe.html",
bpatel@934 291 configuration.getText("doclet.All_Classes")));
bpatel@934 292 Content allclassesPara = HtmlTree.P(line27);
bpatel@934 293 liAllClasses.addContent(allclassesPara);
bpatel@934 294 ul.addContent(liAllClasses);
bpatel@766 295 Content sHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 296 getResource("doclet.Serialized_Form"));
bpatel@766 297 Content liSerial = HtmlTree.LI(HtmlStyle.blockList, sHead);
bpatel@934 298 Content line28 = getResource("doclet.Help_line_28");
bpatel@934 299 Content serialPara = HtmlTree.P(line28);
bpatel@766 300 liSerial.addContent(serialPara);
bpatel@766 301 ul.addContent(liSerial);
bpatel@766 302 Content constHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
bpatel@766 303 getResource("doclet.Constants_Summary"));
bpatel@766 304 Content liConst = HtmlTree.LI(HtmlStyle.blockList, constHead);
bpatel@934 305 Content line29 = getResource("doclet.Help_line_29");
bpatel@934 306 Content constPara = HtmlTree.P(line29);
bpatel@766 307 liConst.addContent(constPara);
bpatel@766 308 ul.addContent(liConst);
bpatel@766 309 Content divContent = HtmlTree.DIV(HtmlStyle.contentContainer, ul);
bpatel@934 310 Content line30 = HtmlTree.EM(getResource("doclet.Help_line_30"));
bpatel@934 311 divContent.addContent(line30);
bpatel@766 312 contentTree.addContent(divContent);
duke@1 313 }
duke@1 314
duke@1 315 /**
bpatel@766 316 * Get the help label.
bpatel@766 317 *
bpatel@766 318 * @return a content tree for the help label
duke@1 319 */
bpatel@766 320 protected Content getNavLinkHelp() {
bpatel@766 321 Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, helpLabel);
bpatel@766 322 return li;
duke@1 323 }
duke@1 324 }

mercurial