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

Fri, 03 Dec 2010 20:31:57 -0800

author
mfang
date
Fri, 03 Dec 2010 20:31:57 -0800
changeset 762
4f086529d05c
parent 554
9d9f26857129
child 766
90af8d87741f
permissions
-rw-r--r--

6522789: [zh_CN] translation of "enclosing class" in doclet is incorrect
Reviewed-by: yhuang

duke@1 1 /*
ohair@554 2 * Copyright (c) 1998, 2008, 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
duke@1 28 import com.sun.tools.doclets.internal.toolkit.util.*;
duke@1 29 import com.sun.javadoc.*;
duke@1 30 import java.io.*;
duke@1 31 import java.util.*;
duke@1 32
duke@1 33 /**
duke@1 34 * Generate class usage information.
duke@1 35 *
duke@1 36 * @author Robert G. Field
bpatel@243 37 * @author Bhavesh Patel (Modified)
duke@1 38 */
duke@1 39 public class ClassUseWriter extends SubWriterHolderWriter {
duke@1 40
duke@1 41 final ClassDoc classdoc;
mcimadamore@184 42 Set<PackageDoc> pkgToPackageAnnotations = null;
jjg@74 43 final Map<String,List<ProgramElementDoc>> pkgToClassTypeParameter;
jjg@74 44 final Map<String,List<ProgramElementDoc>> pkgToClassAnnotations;
jjg@74 45 final Map<String,List<ProgramElementDoc>> pkgToMethodTypeParameter;
jjg@74 46 final Map<String,List<ProgramElementDoc>> pkgToMethodArgTypeParameter;
jjg@74 47 final Map<String,List<ProgramElementDoc>> pkgToMethodReturnTypeParameter;
jjg@74 48 final Map<String,List<ProgramElementDoc>> pkgToMethodAnnotations;
jjg@74 49 final Map<String,List<ProgramElementDoc>> pkgToMethodParameterAnnotations;
jjg@74 50 final Map<String,List<ProgramElementDoc>> pkgToFieldTypeParameter;
jjg@74 51 final Map<String,List<ProgramElementDoc>> pkgToFieldAnnotations;
jjg@74 52 final Map<String,List<ProgramElementDoc>> pkgToSubclass;
jjg@74 53 final Map<String,List<ProgramElementDoc>> pkgToSubinterface;
jjg@74 54 final Map<String,List<ProgramElementDoc>> pkgToImplementingClass;
jjg@74 55 final Map<String,List<ProgramElementDoc>> pkgToField;
jjg@74 56 final Map<String,List<ProgramElementDoc>> pkgToMethodReturn;
jjg@74 57 final Map<String,List<ProgramElementDoc>> pkgToMethodArgs;
jjg@74 58 final Map<String,List<ProgramElementDoc>> pkgToMethodThrows;
jjg@74 59 final Map<String,List<ProgramElementDoc>> pkgToConstructorAnnotations;
jjg@74 60 final Map<String,List<ProgramElementDoc>> pkgToConstructorParameterAnnotations;
jjg@74 61 final Map<String,List<ProgramElementDoc>> pkgToConstructorArgs;
jjg@74 62 final Map<String,List<ProgramElementDoc>> pkgToConstructorArgTypeParameter;
jjg@74 63 final Map<String,List<ProgramElementDoc>> pkgToConstructorThrows;
jjg@74 64 final SortedSet<PackageDoc> pkgSet;
duke@1 65 final MethodWriterImpl methodSubWriter;
duke@1 66 final ConstructorWriterImpl constrSubWriter;
duke@1 67 final FieldWriterImpl fieldSubWriter;
duke@1 68 final NestedClassWriterImpl classSubWriter;
bpatel@243 69 // Summary for various use tables.
bpatel@243 70 final String classUseTableSummary;
bpatel@243 71 final String subclassUseTableSummary;
bpatel@243 72 final String subinterfaceUseTableSummary;
bpatel@243 73 final String fieldUseTableSummary;
bpatel@243 74 final String methodUseTableSummary;
bpatel@243 75 final String constructorUseTableSummary;
duke@1 76
duke@1 77
duke@1 78 /**
duke@1 79 * Constructor.
duke@1 80 *
duke@1 81 * @param filename the file to be generated.
duke@1 82 * @throws IOException
duke@1 83 * @throws DocletAbortException
duke@1 84 */
duke@1 85 public ClassUseWriter(ConfigurationImpl configuration,
duke@1 86 ClassUseMapper mapper, String path,
duke@1 87 String filename, String relpath,
duke@1 88 ClassDoc classdoc) throws IOException {
duke@1 89 super(configuration, path, filename, relpath);
duke@1 90 this.classdoc = classdoc;
duke@1 91 if (mapper.classToPackageAnnotations.containsKey(classdoc.qualifiedName()))
jjg@74 92 pkgToPackageAnnotations = new HashSet<PackageDoc>(mapper.classToPackageAnnotations.get(classdoc.qualifiedName()));
duke@1 93 configuration.currentcd = classdoc;
jjg@74 94 this.pkgSet = new TreeSet<PackageDoc>();
duke@1 95 this.pkgToClassTypeParameter = pkgDivide(mapper.classToClassTypeParam);
duke@1 96 this.pkgToClassAnnotations = pkgDivide(mapper.classToClassAnnotations);
duke@1 97 this.pkgToMethodTypeParameter = pkgDivide(mapper.classToExecMemberDocTypeParam);
duke@1 98 this.pkgToMethodArgTypeParameter = pkgDivide(mapper.classToExecMemberDocArgTypeParam);
duke@1 99 this.pkgToFieldTypeParameter = pkgDivide(mapper.classToFieldDocTypeParam);
duke@1 100 this.pkgToFieldAnnotations = pkgDivide(mapper.annotationToFieldDoc);
duke@1 101 this.pkgToMethodReturnTypeParameter = pkgDivide(mapper.classToExecMemberDocReturnTypeParam);
duke@1 102 this.pkgToMethodAnnotations = pkgDivide(mapper.classToExecMemberDocAnnotations);
duke@1 103 this.pkgToMethodParameterAnnotations = pkgDivide(mapper.classToExecMemberDocParamAnnotation);
duke@1 104 this.pkgToSubclass = pkgDivide(mapper.classToSubclass);
duke@1 105 this.pkgToSubinterface = pkgDivide(mapper.classToSubinterface);
duke@1 106 this.pkgToImplementingClass = pkgDivide(mapper.classToImplementingClass);
duke@1 107 this.pkgToField = pkgDivide(mapper.classToField);
duke@1 108 this.pkgToMethodReturn = pkgDivide(mapper.classToMethodReturn);
duke@1 109 this.pkgToMethodArgs = pkgDivide(mapper.classToMethodArgs);
duke@1 110 this.pkgToMethodThrows = pkgDivide(mapper.classToMethodThrows);
duke@1 111 this.pkgToConstructorAnnotations = pkgDivide(mapper.classToConstructorAnnotations);
duke@1 112 this.pkgToConstructorParameterAnnotations = pkgDivide(mapper.classToConstructorParamAnnotation);
duke@1 113 this.pkgToConstructorArgs = pkgDivide(mapper.classToConstructorArgs);
duke@1 114 this.pkgToConstructorArgTypeParameter = pkgDivide(mapper.classToConstructorDocArgTypeParam);
duke@1 115 this.pkgToConstructorThrows = pkgDivide(mapper.classToConstructorThrows);
duke@1 116 //tmp test
duke@1 117 if (pkgSet.size() > 0 &&
duke@1 118 mapper.classToPackage.containsKey(classdoc.qualifiedName()) &&
duke@1 119 !pkgSet.equals(mapper.classToPackage.get(classdoc.qualifiedName()))) {
duke@1 120 configuration.root.printWarning("Internal error: package sets don't match: " + pkgSet + " with: " +
duke@1 121 mapper.classToPackage.get(classdoc.qualifiedName()));
duke@1 122 }
duke@1 123 methodSubWriter = new MethodWriterImpl(this);
duke@1 124 constrSubWriter = new ConstructorWriterImpl(this);
duke@1 125 fieldSubWriter = new FieldWriterImpl(this);
duke@1 126 classSubWriter = new NestedClassWriterImpl(this);
bpatel@243 127 classUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
bpatel@243 128 configuration.getText("doclet.classes"));
bpatel@243 129 subclassUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
bpatel@243 130 configuration.getText("doclet.subclasses"));
bpatel@243 131 subinterfaceUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
bpatel@243 132 configuration.getText("doclet.subinterfaces"));
bpatel@243 133 fieldUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
bpatel@243 134 configuration.getText("doclet.fields"));
bpatel@243 135 methodUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
bpatel@243 136 configuration.getText("doclet.methods"));
bpatel@243 137 constructorUseTableSummary = configuration.getText("doclet.Use_Table_Summary",
bpatel@243 138 configuration.getText("doclet.constructors"));
duke@1 139 }
duke@1 140
duke@1 141 /**
duke@1 142 * Write out class use pages.
duke@1 143 * @throws DocletAbortException
duke@1 144 */
duke@1 145 public static void generate(ConfigurationImpl configuration,
duke@1 146 ClassTree classtree) {
duke@1 147 ClassUseMapper mapper = new ClassUseMapper(configuration.root, classtree);
duke@1 148 ClassDoc[] classes = configuration.root.classes();
duke@1 149 for (int i = 0; i < classes.length; i++) {
duke@1 150 ClassUseWriter.generate(configuration, mapper, classes[i]);
duke@1 151 }
duke@1 152 PackageDoc[] pkgs = configuration.packages;
duke@1 153 for (int i = 0; i < pkgs.length; i++) {
duke@1 154 PackageUseWriter.generate(configuration, mapper, pkgs[i]);
duke@1 155 }
duke@1 156 }
duke@1 157
jjg@74 158 private Map<String,List<ProgramElementDoc>> pkgDivide(Map<String,? extends List<? extends ProgramElementDoc>> classMap) {
jjg@74 159 Map<String,List<ProgramElementDoc>> map = new HashMap<String,List<ProgramElementDoc>>();
jjg@74 160 List<? extends ProgramElementDoc> list= classMap.get(classdoc.qualifiedName());
duke@1 161 if (list != null) {
duke@1 162 Collections.sort(list);
jjg@74 163 Iterator<? extends ProgramElementDoc> it = list.iterator();
duke@1 164 while (it.hasNext()) {
jjg@74 165 ProgramElementDoc doc = it.next();
duke@1 166 PackageDoc pkg = doc.containingPackage();
duke@1 167 pkgSet.add(pkg);
jjg@74 168 List<ProgramElementDoc> inPkg = map.get(pkg.name());
duke@1 169 if (inPkg == null) {
jjg@74 170 inPkg = new ArrayList<ProgramElementDoc>();
duke@1 171 map.put(pkg.name(), inPkg);
duke@1 172 }
duke@1 173 inPkg.add(doc);
duke@1 174 }
duke@1 175 }
duke@1 176 return map;
duke@1 177 }
duke@1 178
duke@1 179 /**
duke@1 180 * Generate a class page.
duke@1 181 */
duke@1 182 public static void generate(ConfigurationImpl configuration,
duke@1 183 ClassUseMapper mapper, ClassDoc classdoc) {
duke@1 184 ClassUseWriter clsgen;
duke@1 185 String path = DirectoryManager.getDirectoryPath(classdoc.
duke@1 186 containingPackage());
duke@1 187 if (path.length() > 0) {
duke@1 188 path += File.separator;
duke@1 189 }
duke@1 190 path += "class-use";
duke@1 191 String filename = classdoc.name() + ".html";
duke@1 192 String pkgname = classdoc.containingPackage().name();
duke@1 193 pkgname += (pkgname.length() > 0)? ".class-use": "class-use";
duke@1 194 String relpath = DirectoryManager.getRelativePath(pkgname);
duke@1 195 try {
duke@1 196 clsgen = new ClassUseWriter(configuration,
duke@1 197 mapper, path, filename,
duke@1 198 relpath, classdoc);
duke@1 199 clsgen.generateClassUseFile();
duke@1 200 clsgen.close();
duke@1 201 } catch (IOException exc) {
duke@1 202 configuration.standardmessage.
duke@1 203 error("doclet.exception_encountered",
duke@1 204 exc.toString(), filename);
duke@1 205 throw new DocletAbortException();
duke@1 206 }
duke@1 207 }
duke@1 208
duke@1 209 /**
duke@1 210 * Print the class use list.
duke@1 211 */
duke@1 212 protected void generateClassUseFile() throws IOException {
duke@1 213
duke@1 214 printClassUseHeader();
duke@1 215
duke@1 216 if (pkgSet.size() > 0) {
duke@1 217 generateClassUse();
duke@1 218 } else {
duke@1 219 printText("doclet.ClassUse_No.usage.of.0",
duke@1 220 classdoc.qualifiedName());
duke@1 221 p();
duke@1 222 }
duke@1 223
duke@1 224 printClassUseFooter();
duke@1 225 }
duke@1 226
duke@1 227 protected void generateClassUse() throws IOException {
duke@1 228 if (configuration.packages.length > 1) {
duke@1 229 generatePackageList();
duke@1 230 generatePackageAnnotationList();
duke@1 231 }
duke@1 232 generateClassList();
duke@1 233 }
duke@1 234
duke@1 235 protected void generatePackageList() throws IOException {
bpatel@243 236 tableIndexSummary(useTableSummary);
bpatel@243 237 tableCaptionStart();
duke@1 238 printText("doclet.ClassUse_Packages.that.use.0",
duke@1 239 getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc,
duke@1 240 false)));
bpatel@243 241 tableCaptionEnd();
bpatel@243 242 summaryTableHeader(packageTableHeader, "col");
duke@1 243
mcimadamore@184 244 for (Iterator<PackageDoc> it = pkgSet.iterator(); it.hasNext();) {
mcimadamore@184 245 PackageDoc pkg = it.next();
duke@1 246 generatePackageUse(pkg);
duke@1 247 }
duke@1 248 tableEnd();
duke@1 249 space();
duke@1 250 p();
duke@1 251 }
duke@1 252
duke@1 253 protected void generatePackageAnnotationList() throws IOException {
duke@1 254 if ((! classdoc.isAnnotationType()) ||
duke@1 255 pkgToPackageAnnotations == null ||
duke@1 256 pkgToPackageAnnotations.size() == 0)
duke@1 257 return;
bpatel@243 258 tableIndexSummary(useTableSummary);
bpatel@243 259 tableCaptionStart();
duke@1 260 printText("doclet.ClassUse_PackageAnnotation",
duke@1 261 getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc,
duke@1 262 false)));
bpatel@243 263 tableCaptionEnd();
bpatel@243 264 summaryTableHeader(packageTableHeader, "col");
mcimadamore@184 265 for (Iterator<PackageDoc> it = pkgToPackageAnnotations.iterator(); it.hasNext();) {
mcimadamore@184 266 PackageDoc pkg = it.next();
duke@1 267 trBgcolorStyle("white", "TableRowColor");
duke@1 268 summaryRow(0);
duke@1 269 //Just want an anchor here.
duke@1 270 printPackageLink(pkg, pkg.name(), true);
duke@1 271 summaryRowEnd();
duke@1 272 summaryRow(0);
duke@1 273 printSummaryComment(pkg);
duke@1 274 space();
duke@1 275 summaryRowEnd();
duke@1 276 trEnd();
duke@1 277 }
duke@1 278 tableEnd();
duke@1 279 space();
duke@1 280 p();
duke@1 281 }
duke@1 282
duke@1 283 protected void generateClassList() throws IOException {
mcimadamore@184 284 for (Iterator<PackageDoc> it = pkgSet.iterator(); it.hasNext();) {
mcimadamore@184 285 PackageDoc pkg = it.next();
duke@1 286 anchor(pkg.name());
duke@1 287 tableIndexSummary();
duke@1 288 tableHeaderStart("#CCCCFF");
duke@1 289 printText("doclet.ClassUse_Uses.of.0.in.1",
duke@1 290 getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER,
duke@1 291 classdoc, false)),
duke@1 292 getPackageLink(pkg, Util.getPackageName(pkg), false));
duke@1 293 tableHeaderEnd();
duke@1 294 tableEnd();
duke@1 295 space();
duke@1 296 p();
duke@1 297 generateClassUse(pkg);
duke@1 298 }
duke@1 299 }
duke@1 300
duke@1 301 /**
duke@1 302 * Print the package use list.
duke@1 303 */
duke@1 304 protected void generatePackageUse(PackageDoc pkg) throws IOException {
duke@1 305 trBgcolorStyle("white", "TableRowColor");
duke@1 306 summaryRow(0);
duke@1 307 //Just want an anchor here.
duke@1 308 printHyperLink("", pkg.name(), Util.getPackageName(pkg), true);
duke@1 309 summaryRowEnd();
duke@1 310 summaryRow(0);
duke@1 311 printSummaryComment(pkg);
duke@1 312 space();
duke@1 313 summaryRowEnd();
duke@1 314 trEnd();
duke@1 315 }
duke@1 316
duke@1 317 /**
duke@1 318 * Print the class use list.
duke@1 319 */
duke@1 320 protected void generateClassUse(PackageDoc pkg) throws IOException {
duke@1 321 String classLink = getLink(new LinkInfoImpl(
duke@1 322 LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc, false));
duke@1 323 String pkgLink = getPackageLink(pkg, Util.getPackageName(pkg), false);
duke@1 324 classSubWriter.printUseInfo(pkgToClassAnnotations.get(pkg.name()),
bpatel@243 325 configuration.getText("doclet.ClassUse_Annotation", classLink,
bpatel@243 326 pkgLink), classUseTableSummary);
duke@1 327 classSubWriter.printUseInfo(pkgToClassTypeParameter.get(pkg.name()),
bpatel@243 328 configuration.getText("doclet.ClassUse_TypeParameter", classLink,
bpatel@243 329 pkgLink), classUseTableSummary);
duke@1 330 classSubWriter.printUseInfo(pkgToSubclass.get(pkg.name()),
bpatel@243 331 configuration.getText("doclet.ClassUse_Subclass", classLink,
bpatel@243 332 pkgLink), subclassUseTableSummary);
duke@1 333 classSubWriter.printUseInfo(pkgToSubinterface.get(pkg.name()),
bpatel@243 334 configuration.getText("doclet.ClassUse_Subinterface", classLink,
bpatel@243 335 pkgLink), subinterfaceUseTableSummary);
duke@1 336 classSubWriter.printUseInfo(pkgToImplementingClass.get(pkg.name()),
bpatel@243 337 configuration.getText("doclet.ClassUse_ImplementingClass", classLink,
bpatel@243 338 pkgLink), classUseTableSummary);
duke@1 339 fieldSubWriter.printUseInfo(pkgToField.get(pkg.name()),
bpatel@243 340 configuration.getText("doclet.ClassUse_Field", classLink,
bpatel@243 341 pkgLink), fieldUseTableSummary);
duke@1 342 fieldSubWriter.printUseInfo(pkgToFieldAnnotations.get(pkg.name()),
bpatel@243 343 configuration.getText("doclet.ClassUse_FieldAnnotations", classLink,
bpatel@243 344 pkgLink), fieldUseTableSummary);
duke@1 345 fieldSubWriter.printUseInfo(pkgToFieldTypeParameter.get(pkg.name()),
bpatel@243 346 configuration.getText("doclet.ClassUse_FieldTypeParameter", classLink,
bpatel@243 347 pkgLink), fieldUseTableSummary);
duke@1 348 methodSubWriter.printUseInfo(pkgToMethodAnnotations.get(pkg.name()),
bpatel@243 349 configuration.getText("doclet.ClassUse_MethodAnnotations", classLink,
bpatel@243 350 pkgLink), methodUseTableSummary);
duke@1 351 methodSubWriter.printUseInfo(pkgToMethodParameterAnnotations.get(pkg.name()),
bpatel@243 352 configuration.getText("doclet.ClassUse_MethodParameterAnnotations", classLink,
bpatel@243 353 pkgLink), methodUseTableSummary);
duke@1 354 methodSubWriter.printUseInfo(pkgToMethodTypeParameter.get(pkg.name()),
bpatel@243 355 configuration.getText("doclet.ClassUse_MethodTypeParameter", classLink,
bpatel@243 356 pkgLink), methodUseTableSummary);
duke@1 357 methodSubWriter.printUseInfo(pkgToMethodReturn.get(pkg.name()),
bpatel@243 358 configuration.getText("doclet.ClassUse_MethodReturn", classLink,
bpatel@243 359 pkgLink), methodUseTableSummary);
duke@1 360 methodSubWriter.printUseInfo(pkgToMethodReturnTypeParameter.get(pkg.name()),
bpatel@243 361 configuration.getText("doclet.ClassUse_MethodReturnTypeParameter", classLink,
bpatel@243 362 pkgLink), methodUseTableSummary);
duke@1 363 methodSubWriter.printUseInfo(pkgToMethodArgs.get(pkg.name()),
bpatel@243 364 configuration.getText("doclet.ClassUse_MethodArgs", classLink,
bpatel@243 365 pkgLink), methodUseTableSummary);
duke@1 366 methodSubWriter.printUseInfo(pkgToMethodArgTypeParameter.get(pkg.name()),
bpatel@243 367 configuration.getText("doclet.ClassUse_MethodArgsTypeParameters", classLink,
bpatel@243 368 pkgLink), methodUseTableSummary);
duke@1 369 methodSubWriter.printUseInfo(pkgToMethodThrows.get(pkg.name()),
bpatel@243 370 configuration.getText("doclet.ClassUse_MethodThrows", classLink,
bpatel@243 371 pkgLink), methodUseTableSummary);
duke@1 372 constrSubWriter.printUseInfo(pkgToConstructorAnnotations.get(pkg.name()),
bpatel@243 373 configuration.getText("doclet.ClassUse_ConstructorAnnotations", classLink,
bpatel@243 374 pkgLink), constructorUseTableSummary);
duke@1 375 constrSubWriter.printUseInfo(pkgToConstructorParameterAnnotations.get(pkg.name()),
bpatel@243 376 configuration.getText("doclet.ClassUse_ConstructorParameterAnnotations", classLink,
bpatel@243 377 pkgLink), constructorUseTableSummary);
duke@1 378 constrSubWriter.printUseInfo(pkgToConstructorArgs.get(pkg.name()),
bpatel@243 379 configuration.getText("doclet.ClassUse_ConstructorArgs", classLink,
bpatel@243 380 pkgLink), constructorUseTableSummary);
duke@1 381 constrSubWriter.printUseInfo(pkgToConstructorArgTypeParameter.get(pkg.name()),
bpatel@243 382 configuration.getText("doclet.ClassUse_ConstructorArgsTypeParameters", classLink,
bpatel@243 383 pkgLink), constructorUseTableSummary);
duke@1 384 constrSubWriter.printUseInfo(pkgToConstructorThrows.get(pkg.name()),
bpatel@243 385 configuration.getText("doclet.ClassUse_ConstructorThrows", classLink,
bpatel@243 386 pkgLink), constructorUseTableSummary);
duke@1 387 }
duke@1 388
duke@1 389 /**
duke@1 390 * Print the header for the class use Listing.
duke@1 391 */
duke@1 392 protected void printClassUseHeader() {
duke@1 393 String cltype = configuration.getText(classdoc.isInterface()?
duke@1 394 "doclet.Interface":
duke@1 395 "doclet.Class");
duke@1 396 String clname = classdoc.qualifiedName();
duke@1 397 printHtmlHeader(configuration.getText("doclet.Window_ClassUse_Header",
duke@1 398 cltype, clname), null, true);
duke@1 399 printTop();
duke@1 400 navLinks(true);
duke@1 401 hr();
duke@1 402 center();
duke@1 403 h2();
bpatel@182 404 strongText("doclet.ClassUse_Title", cltype, clname);
duke@1 405 h2End();
duke@1 406 centerEnd();
duke@1 407 }
duke@1 408
duke@1 409 /**
duke@1 410 * Print the footer for the class use Listing.
duke@1 411 */
duke@1 412 protected void printClassUseFooter() {
duke@1 413 hr();
duke@1 414 navLinks(false);
duke@1 415 printBottom();
duke@1 416 printBodyHtmlEnd();
duke@1 417 }
duke@1 418
duke@1 419
duke@1 420 /**
duke@1 421 * Print this package link
duke@1 422 */
duke@1 423 protected void navLinkPackage() {
duke@1 424 navCellStart();
duke@1 425 printHyperLink("../package-summary.html", "",
duke@1 426 configuration.getText("doclet.Package"), true, "NavBarFont1");
duke@1 427 navCellEnd();
duke@1 428 }
duke@1 429
duke@1 430 /**
duke@1 431 * Print class page indicator
duke@1 432 */
duke@1 433 protected void navLinkClass() {
duke@1 434 navCellStart();
duke@1 435 printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS_USE_HEADER, classdoc, "",
duke@1 436 configuration.getText("doclet.Class"), true, "NavBarFont1"));
duke@1 437 navCellEnd();
duke@1 438 }
duke@1 439
duke@1 440 /**
duke@1 441 * Print class use link
duke@1 442 */
duke@1 443 protected void navLinkClassUse() {
duke@1 444 navCellRevStart();
duke@1 445 fontStyle("NavBarFont1Rev");
bpatel@182 446 strongText("doclet.navClassUse");
duke@1 447 fontEnd();
duke@1 448 navCellEnd();
duke@1 449 }
duke@1 450
duke@1 451 protected void navLinkTree() {
duke@1 452 navCellStart();
duke@1 453 if (classdoc.containingPackage().isIncluded()) {
duke@1 454 printHyperLink("../package-tree.html", "",
duke@1 455 configuration.getText("doclet.Tree"), true, "NavBarFont1");
duke@1 456 } else {
duke@1 457 printHyperLink(relativePath + "overview-tree.html", "",
duke@1 458 configuration.getText("doclet.Tree"), true, "NavBarFont1");
duke@1 459 }
duke@1 460 navCellEnd();
duke@1 461 }
duke@1 462
duke@1 463 }

mercurial