Tue, 14 May 2013 10:14:54 -0700
8012176: reduce use of TagletOutputImpl.toString
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); |
duke@1 | 75 | throw new DocletAbortException(); |
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@934 | 319 | Content line30 = HtmlTree.EM(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 | } |