home *** CD-ROM | disk | FTP | other *** search
Java Source | 1999-09-19 | 7.5 KB | 236 lines |
- /*
- * @(#)AbstractIndexWriter.java 1.7 98/04/17
- *
- * Copyright 1998 by Sun Microsystems, Inc.,
- * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
- * All rights reserved.
- *
- * This software is the confidential and proprietary information
- * of Sun Microsystems, Inc. ("Confidential Information"). You
- * shall not disclose such Confidential Information and shall use
- * it only in accordance with the terms of the license agreement
- * you entered into with Sun.
- */
-
- package com.sun.tools.doclets.standard;
-
- import com.sun.tools.doclets.*;
- import com.sun.javadoc.*;
- import java.io.*;
- import java.lang.*;
- import java.util.*;
-
- /**
- * Generate Index for all the Member Names with Indexing in
- * Unicode Order. This class is a base class for {@link SingleIndexWriter} and
- * {@link SplitIndexWriter}. It uses the functionality from
- * {@link HtmlStandardWriter} and {@link HtmlWriter} to generate the Index
- * Contents.
- *
- * @see IndexBuilder
- * @author Atul M Dambalkar
- */
- public class AbstractIndexWriter extends HtmlStandardWriter {
-
- /**
- * The index of all the members with unicode character.
- */
- protected IndexBuilder indexbuilder;
-
- /**
- * This constructor will be used by {@link SplitIndexWriter}. Initialises
- * path to this file and relative path from this file.
- *
- * @param path Path to the file which is getting generated.
- * @param filename Name of the file which is getting genrated.
- * @param relpath Relative path from this file to the current directory.
- * @param indexbuilder Unicode based Index from {@link IndexBuilder}
- */
- protected AbstractIndexWriter(String path, String filename,
- String relpath, IndexBuilder indexbuilder)
- throws IOException {
- super(path, filename, relpath);
- this.indexbuilder = indexbuilder;
- }
-
- /**
- * This Constructor will be used by {@link SingleIndexWriter}.
- *
- * @param filename Name of the file which is getting genrated.
- * @param indexbuilder Unicode based Index form {@link IndexBuilder}
- */
- protected AbstractIndexWriter(String filename, IndexBuilder indexbuilder)
- throws IOException {
- super(filename);
- this.indexbuilder = indexbuilder;
- }
-
- /**
- * Print the text "Index" in bold format in the navigation bar.
- */
- protected void navLinkIndex() {
- navCellRevStart();
- fontStyle("NavBarFont1Rev");
- boldText("doclet.Index");
- fontEnd();
- navCellEnd();
- }
-
- /**
- * Generate the member information for the unicode character along with the
- * list of the members.
- *
- * @param unicode Unicode for which member list information to be generated.
- * @param memberlist List of members for the unicode character.
- */
- protected void generateContents(Character unicode, List memberlist) {
- anchor("_" + unicode + "_");
- h2();
- bold(unicode.toString());
- h2End();
- dl();
- for (int i = 0; i < memberlist.size(); i++) {
- Doc element = (Doc)memberlist.get(i);
- if (element instanceof MemberDoc) {
- printDescription((MemberDoc)element);
- } else if (element instanceof ClassDoc) {
- printDescription((ClassDoc)element);
- } else if (element instanceof PackageDoc) {
- printDescription((PackageDoc)element);
- }
- }
- dlEnd();
- hr();
- }
-
-
- /**
- * Print one line summary comment for the package.
- *
- * @param pd PackageDoc passed.
- */
- protected void printDescription(PackageDoc pd) {
- dt();
- printPackageLink(pd);
- print(" - ");
- print("package " + pd.name());
- dd();
- printSummaryComment(pd);
- }
-
- /**
- * Print one line summary comment for the class.
- *
- * @param cd ClassDoc passed.
- */
- protected void printDescription(ClassDoc cd) {
- dt();
- printClassLink(cd, true);
- print(" - ");
- printClassInfo(cd);
- dd();
- printComment(cd);
- }
-
- /**
- * What is the classkind? Print the classkind(class, interface, exception,
- * error of the class passed.
- *
- * @param cd ClassDoc.
- */
- protected void printClassInfo(ClassDoc cd) {
- if (cd.isOrdinaryClass()) {
- print("class ");
- } else if (cd.isInterface()) {
- print("interface ");
- } else if (cd.isException()) {
- print("exception ");
- } else { // error
- print("error ");
- }
- printPreQualifiedClassLink(cd);
- print('.');
- }
-
-
- /**
- * Generate Description for Class, Field, Method or Constructor.
- * for Java.* Packages Class Members.
- *
- * @param member MemberDoc for the member of the Class Kind.
- * @see com.sun.javadoc.MemberDoc
- */
- protected void printDescription(MemberDoc element) {
- String name = (element instanceof ExecutableMemberDoc)?
- element.name() +
- ((ExecutableMemberDoc)element).flatSignature():
- element.name();
- ClassDoc containing = element.containingClass();
- String qualname = containing.qualifiedName();
- String baseClassName = containing.name();
- dt();
- printDocLink(element, name, true);
- println(" - ");
- printMemberDesc(element);
- println();
- dd();
- printComment(element);
- println();
- }
-
-
- /**
- * Print comment for each element in the index. If the element is deprecated
- * and it has a @deprecated tag, use that comment. Else if the containing
- * class for this element is deprecated, then add the word "Deprecated." at
- * the start and then print the normal comment.
- *
- * @param element Index element.
- */
- protected void printComment(ProgramElementDoc element) {
- Tag[] tags;
- if ((tags = element.tags("deprecated")).length > 0) {
- boldText("doclet.Deprecated"); space();
- printInlineDeprecatedComment(tags[0]);
- } else {
- ClassDoc cont = element.containingClass();
- while (cont != null) {
- if (cont.tags("deprecated").length > 0) {
- boldText("doclet.Deprecated"); space();
- break;
- }
- cont = cont.containingClass();
- }
- printSummaryComment(element);
- }
- }
-
- /**
- * Print description about the Static Varible/Method/Constructor for a
- * member.
- *
- * @param member MemberDoc for the member within the Class Kind.
- * @see com.sun.javadoc.MemberDoc
- */
- protected void printMemberDesc(MemberDoc member) {
- ClassDoc containing = member.containingClass();
- String classdesc = (containing.isInterface()? "interface ": "class ") +
- getPreQualifiedClassLink(containing);
- if (member.isField()) {
- if (member.isStatic()) {
- printText("doclet.Static_variable_in", classdesc);
- } else {
- printText("doclet.Variable_in", classdesc);
- }
- } else if (member.isConstructor()) {
- printText("doclet.Constructor_for", classdesc);
- } else if (member.isMethod()) {
- if (member.isStatic()) {
- printText("doclet.Static_method_in", classdesc);
- } else {
- printText("doclet.Method_in", classdesc);
- }
- }
- }
- }
-