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

Thu, 29 Aug 2013 11:41:20 -0700

author
jjg
date
Thu, 29 Aug 2013 11:41:20 -0700
changeset 1985
0e6577980181
parent 1936
33294f02c9a5
child 2147
130b8c0e570e
permissions
-rw-r--r--

8001669: javadoc internal DocletAbortException should set cause when appropriate
Reviewed-by: darcy

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

mercurial