FileDocCategorySizeDatePackage
ConstructorSubWriter.javaAPI DocExample3919Wed Apr 19 11:17:12 BST 2000com.sun.tools.doclets.standard

ConstructorSubWriter.java

/*
 * @(#)ConstructorSubWriter.java	1.17 00/02/02
 *
 * Copyright 1997-2000 Sun Microsystems, Inc. All Rights Reserved.
 * 
 * This software is the proprietary information of Sun Microsystems, Inc.  
 * Use is subject to license terms.
 * 
 */


package com.sun.tools.doclets.standard;

import com.sun.tools.doclets.*;
import com.sun.javadoc.*;
import java.util.*;

/**
 *
 * @author Robert Field
 * @author Atul M Dambalkar
 */
public class ConstructorSubWriter extends ExecutableMemberSubWriter {

    protected boolean foundNonPublicMember = false;

    public ConstructorSubWriter(SubWriterHolderWriter writer, 
                                ClassDoc classdoc) {
        super(writer, classdoc);
        checkForNonPublicMembers(visibleMemberMap.getMembersFor(classdoc));
    }

    public ConstructorSubWriter(SubWriterHolderWriter writer) {
        super(writer);
    }

    public void printSummaryLabel(ClassDoc cd) {
        writer.boldText("doclet.Constructor_Summary"); 
    }

    public void printSummaryAnchor(ClassDoc cd) {
        writer.anchor("constructor_summary");
    }
    
    public void printInheritedSummaryAnchor(ClassDoc cd) {
    }   // no such
    
    public void printInheritedSummaryLabel(ClassDoc cd) {
        // no such
    }

    public int getMemberKind() {
        return VisibleMemberMap.CONSTRUCTORS;
    }

    protected void printSummaryType(ProgramElementDoc member) {
        if (foundNonPublicMember) {
            writer.printTypeSummaryHeader();
            if (member.isProtected()) {
                print("protected ");
            } else if (member.isPrivate()) {
                print("private ");
            } else if (member.isPublic()) {
                writer.space();
            } else {
                writer.printText("doclet.Package_private");
            }
            writer.printTypeSummaryFooter();
	}
    }

    protected void printTags(ProgramElementDoc member) {
        ParamTag[] params = ((ConstructorDoc)member).paramTags();
        ThrowsTag[] thrown = ((ConstructorDoc)member).throwsTags();
        Tag[] sinces = member.tags("since");
        SeeTag[] sees = member.seeTags();
        if (params.length + thrown.length + sees.length + sinces.length > 0) {
            writer.dd();
            writer.dl();
            printParamTags(params);
            printThrowsTags(thrown);
            writer.printSinceTag(member);
            writer.printSeeTags(member);
            writer.dlEnd();
            writer.ddEnd();
        }
    }
                               
    protected void printHeader(ClassDoc cd) {
        writer.anchor("constructor_detail");
        writer.printTableHeadingBackground(writer.
                                       getText("doclet.Constructor_Detail"));
    }

    protected void navSummaryLink() {
         printNavSummaryLink(classdoc, 
            visibleMemberMap.getMembersFor(classdoc).size() > 0? true: false);
    } 

    protected void printNavSummaryLink(ClassDoc cd, boolean link) {
        if (link) {
            writer.printHyperLink("", "constructor_summary",
                                  writer.getText("doclet.navConstructor"));
        } else {
            writer.printText("doclet.navConstructor");
        }
    }

    protected void printNavDetailLink(boolean link) {
        if (link) {
            writer.printHyperLink("", "constructor_detail",
                                      writer.getText("doclet.navConstructor"));
        } else {
            writer.printText("doclet.navConstructor");
        } 
    }

    protected void checkForNonPublicMembers(List members) {
        for (int i = 0; i < members.size(); i++) {
            if (!foundNonPublicMember) {
                if (!((ProgramElementDoc)(members.get(i))).isPublic()) {
                    foundNonPublicMember = true;
                    break;
                }
            }
        }
    }
}