View Javadoc
1   /*
2    * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4    *
5    * This code is free software; you can redistribute it and/or modify it
6    * under the terms of the GNU General Public License version 2 only, as
7    * published by the Free Software Foundation.  Oracle designates this
8    * particular file as subject to the "Classpath" exception as provided
9    * by Oracle in the LICENSE file that accompanied this code.
10   *
11   * This code is distributed in the hope that it will be useful, but WITHOUT
12   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14   * version 2 for more details (a copy is included in the LICENSE file that
15   * accompanied this code).
16   *
17   * You should have received a copy of the GNU General Public License version
18   * 2 along with this work; if not, write to the Free Software Foundation,
19   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20   *
21   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22   * or visit www.oracle.com if you need additional information or have any
23   * questions.
24   */
25  
26  
27  package com.sun.tools.doclets.internal.toolkit;
28  
29  import java.io.*;
30  import com.sun.javadoc.*;
31  
32  /**
33   * The interface for writing annotation type output.
34   *
35   *  <p><b>This is NOT part of any supported API.
36   *  If you write code that depends on this, you do so at your own risk.
37   *  This code and its internal interfaces are subject to change or
38   *  deletion without notice.</b>
39   *
40   * @author Jamie Ho
41   * @author Bhavesh Patel (Modified)
42   * @since 1.5
43   */
44  
45  public interface AnnotationTypeWriter {
46  
47      /**
48       * Get the header of the page.
49       *
50       * @param header the header string to write
51       * @return a content tree for the header documentation
52       */
53      public Content getHeader(String header);
54  
55      /**
56       * Get the annotation content header.
57       *
58       * @return annotation content header that needs to be added to the documentation
59       */
60      public Content getAnnotationContentHeader();
61  
62      /**
63       * Get the annotation information tree header.
64       *
65       * @return annotation information tree header that needs to be added to the documentation
66       */
67      public Content getAnnotationInfoTreeHeader();
68  
69      /**
70       * Get the annotation information.
71       *
72       * @param annotationInfoTree content tree containing the annotation information
73       * @return a content tree for the annotation
74       */
75      public Content getAnnotationInfo(Content annotationInfoTree);
76  
77      /**
78       * Add the signature of the current annotation type.
79       *
80       * @param modifiers the modifiers for the signature
81       * @param annotationInfoTree the annotation content tree to which the signature will be added
82       */
83      public void addAnnotationTypeSignature(String modifiers, Content annotationInfoTree);
84  
85      /**
86       * Build the annotation type description.
87       *
88       * @param annotationInfoTree content tree to which the description will be added
89       */
90      public void addAnnotationTypeDescription(Content annotationInfoTree);
91  
92      /**
93       * Add the tag information for the current annotation type.
94       *
95       * @param annotationInfoTree content tree to which the tag information will be added
96       */
97      public void addAnnotationTypeTagInfo(Content annotationInfoTree);
98  
99      /**
100      * If this annotation is deprecated, add the appropriate information.
101      *
102      * @param annotationInfoTree content tree to which the deprecated information will be added
103      */
104     public void addAnnotationTypeDeprecationInfo (Content annotationInfoTree);
105 
106     /**
107      * Get the member tree header for the annotation type.
108      *
109      * @return a content tree for the member tree header
110      */
111     public Content getMemberTreeHeader();
112 
113     /**
114      * Get the member tree.
115      *
116      * @param memberTree the content tree that will be modified and returned
117      * @return a content tree for the member
118      */
119     public Content getMemberTree(Content memberTree);
120 
121     /**
122      * Get the member summary tree.
123      *
124      * @param memberTree the content tree that will be used to build the summary tree
125      * @return a content tree for the member summary
126      */
127     public Content getMemberSummaryTree(Content memberTree);
128 
129     /**
130      * Get the member details tree.
131      *
132      * @param memberTree the content tree that will be used to build the details tree
133      * @return a content tree for the member details
134      */
135     public Content getMemberDetailsTree(Content memberTree);
136 
137     /**
138      * Add the footer of the page.
139      *
140      * @param contentTree content tree to which the footer will be added
141      */
142     public void addFooter(Content contentTree);
143 
144     /**
145      * Print the document.
146      *
147      * @param contentTree content tree that will be printed as a document
148      */
149     public void printDocument(Content contentTree) throws IOException;
150 
151     /**
152      * Close the writer.
153      */
154     public void close() throws IOException;
155 
156     /**
157      * Return the {@link AnnotationTypeDoc} being documented.
158      *
159      * @return the AnnotationTypeDoc being documented.
160      */
161     public AnnotationTypeDoc getAnnotationTypeDoc();
162 }