0N/A/*
797N/A * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
553N/A * published by the Free Software Foundation. Oracle designates this
0N/A * particular file as subject to the "Classpath" exception as provided
553N/A * by Oracle in the LICENSE file that accompanied this code.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
553N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
553N/A * or visit www.oracle.com if you need additional information or have any
553N/A * questions.
0N/A */
0N/A
0N/Apackage com.sun.tools.doclets.formats.html;
0N/A
232N/Aimport java.io.*;
232N/A
0N/Aimport com.sun.javadoc.*;
765N/Aimport com.sun.tools.doclets.formats.html.markup.*;
232N/Aimport com.sun.tools.doclets.internal.toolkit.*;
0N/A
0N/A/**
0N/A * Writes annotation type required member documentation in HTML format.
0N/A *
0N/A * @author Jamie Ho
242N/A * @author Bhavesh Patel (Modified)
0N/A */
0N/Apublic class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
0N/A implements AnnotationTypeRequiredMemberWriter, MemberSummaryWriter {
0N/A
0N/A /**
0N/A * Construct a new AnnotationTypeRequiredMemberWriterImpl.
0N/A *
0N/A * @param writer the writer that will write the output.
0N/A * @param annotationType the AnnotationType that holds this member.
0N/A */
0N/A public AnnotationTypeRequiredMemberWriterImpl(SubWriterHolderWriter writer,
0N/A AnnotationTypeDoc annotationType) {
0N/A super(writer, annotationType);
0N/A }
0N/A
0N/A /**
765N/A * {@inheritDoc}
0N/A */
765N/A public Content getMemberSummaryHeader(ClassDoc classDoc,
765N/A Content memberSummaryTree) {
765N/A memberSummaryTree.addContent(
765N/A HtmlConstants.START_OF_ANNOTATION_TYPE_REQUIRED_MEMBER_SUMMARY);
765N/A Content memberTree = writer.getMemberTreeHeader();
765N/A writer.addSummaryHeader(this, classDoc, memberTree);
765N/A return memberTree;
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A public void addAnnotationDetailsTreeHeader(ClassDoc classDoc,
765N/A Content memberDetailsTree) {
765N/A if (!writer.printedAnnotationHeading) {
765N/A memberDetailsTree.addContent(writer.getMarkerAnchor(
765N/A "annotation_type_element_detail"));
765N/A Content heading = HtmlTree.HEADING(HtmlConstants.DETAILS_HEADING,
765N/A writer.annotationTypeDetailsLabel);
765N/A memberDetailsTree.addContent(heading);
765N/A writer.printedAnnotationHeading = true;
765N/A }
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A public Content getAnnotationDocTreeHeader(MemberDoc member,
765N/A Content annotationDetailsTree) {
765N/A annotationDetailsTree.addContent(
765N/A writer.getMarkerAnchor(member.name() +
765N/A ((ExecutableMemberDoc) member).signature()));
765N/A Content annotationDocTree = writer.getMemberTreeHeader();
765N/A Content heading = new HtmlTree(HtmlConstants.MEMBER_HEADING);
765N/A heading.addContent(member.name());
765N/A annotationDocTree.addContent(heading);
765N/A return annotationDocTree;
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A public Content getSignature(MemberDoc member) {
765N/A Content pre = new HtmlTree(HtmlTag.PRE);
765N/A writer.addAnnotationInfo(member, pre);
765N/A addModifiers(member, pre);
765N/A Content link = new RawHtml(
765N/A writer.getLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER,
765N/A getType(member))));
765N/A pre.addContent(link);
765N/A pre.addContent(writer.getSpace());
765N/A if (configuration().linksource) {
765N/A Content memberName = new StringContent(member.name());
765N/A writer.addSrcLink(member, memberName, pre);
765N/A } else {
765N/A addName(member.name(), pre);
0N/A }
765N/A return pre;
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A public void addDeprecated(MemberDoc member, Content annotationDocTree) {
765N/A addDeprecatedInfo(member, annotationDocTree);
765N/A }
765N/A
765N/A /**
765N/A * {@inheritDoc}
765N/A */
765N/A public void addComments(MemberDoc member, Content annotationDocTree) {
765N/A addComment(member, annotationDocTree);
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A public void addTags(MemberDoc member, Content annotationDocTree) {
765N/A writer.addTagsInfo(member, annotationDocTree);
0N/A }
0N/A
0N/A /**
765N/A * {@inheritDoc}
0N/A */
765N/A public Content getAnnotationDetails(Content annotationDetailsTree) {
765N/A return getMemberTree(annotationDetailsTree);
0N/A }
0N/A
0N/A /**
765N/A * {@inheritDoc}
0N/A */
765N/A public Content getAnnotationDoc(Content annotationDocTree,
765N/A boolean isLastContent) {
765N/A return getMemberTree(annotationDocTree, isLastContent);
0N/A }
0N/A
0N/A /**
0N/A * Close the writer.
0N/A */
0N/A public void close() throws IOException {
0N/A writer.close();
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A public void addSummaryLabel(Content memberTree) {
765N/A Content label = HtmlTree.HEADING(HtmlConstants.SUMMARY_HEADING,
765N/A writer.getResource("doclet.Annotation_Type_Required_Member_Summary"));
765N/A memberTree.addContent(label);
242N/A }
242N/A
242N/A /**
242N/A * {@inheritDoc}
242N/A */
765N/A public String getTableSummary() {
765N/A return configuration().getText("doclet.Member_Table_Summary",
242N/A configuration().getText("doclet.Annotation_Type_Required_Member_Summary"),
765N/A configuration().getText("doclet.annotation_type_required_members"));
242N/A }
242N/A
765N/A /**
765N/A * {@inheritDoc}
765N/A */
765N/A public String getCaption() {
765N/A return configuration().getText("doclet.Annotation_Type_Required_Members");
765N/A }
765N/A
765N/A /**
765N/A * {@inheritDoc}
765N/A */
765N/A public String[] getSummaryTableHeader(ProgramElementDoc member) {
242N/A String[] header = new String[] {
242N/A writer.getModifierTypeHeader(),
242N/A configuration().getText("doclet.0_and_1",
242N/A configuration().getText("doclet.Annotation_Type_Required_Member"),
242N/A configuration().getText("doclet.Description"))
242N/A };
765N/A return header;
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A public void addSummaryAnchor(ClassDoc cd, Content memberTree) {
765N/A memberTree.addContent(writer.getMarkerAnchor(
765N/A "annotation_type_required_element_summary"));
765N/A }
765N/A
765N/A /**
765N/A * {@inheritDoc}
765N/A */
765N/A public void addInheritedSummaryAnchor(ClassDoc cd, Content inheritedTree) {
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A public void addInheritedSummaryLabel(ClassDoc cd, Content inheritedTree) {
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A protected void addSummaryLink(int context, ClassDoc cd, ProgramElementDoc member,
765N/A Content tdSummary) {
765N/A Content strong = HtmlTree.STRONG(new RawHtml(
765N/A writer.getDocLink(context, (MemberDoc) member, member.name(), false)));
765N/A Content code = HtmlTree.CODE(strong);
765N/A tdSummary.addContent(code);
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A protected void addInheritedSummaryLink(ClassDoc cd,
765N/A ProgramElementDoc member, Content linksTree) {
0N/A //Not applicable.
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A protected void addSummaryType(ProgramElementDoc member, Content tdSummaryType) {
0N/A MemberDoc m = (MemberDoc)member;
765N/A addModifierAndType(m, getType(m), tdSummaryType);
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A protected Content getDeprecatedLink(ProgramElementDoc member) {
765N/A return writer.getDocLink(LinkInfoImpl.CONTEXT_MEMBER,
765N/A (MemberDoc) member, ((MemberDoc)member).qualifiedName());
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
0N/A if (link) {
765N/A return writer.getHyperLink("", "annotation_type_required_element_summary",
765N/A writer.getResource("doclet.navAnnotationTypeRequiredMember"));
0N/A } else {
765N/A return writer.getResource("doclet.navAnnotationTypeRequiredMember");
0N/A }
0N/A }
0N/A
0N/A /**
0N/A * {@inheritDoc}
0N/A */
765N/A protected void addNavDetailLink(boolean link, Content liNav) {
0N/A if (link) {
765N/A liNav.addContent(writer.getHyperLink("", "annotation_type_element_detail",
765N/A writer.getResource("doclet.navAnnotationTypeMember")));
0N/A } else {
765N/A liNav.addContent(writer.getResource("doclet.navAnnotationTypeMember"));
0N/A }
0N/A }
0N/A
0N/A private Type getType(MemberDoc member) {
0N/A if (member instanceof FieldDoc) {
0N/A return ((FieldDoc) member).type();
0N/A } else {
0N/A return ((MethodDoc) member).returnType();
0N/A }
0N/A }
0N/A}