1 /* 2 * Copyright (c) 2003, 2016, 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 package jdk.javadoc.internal.doclets.toolkit; 27 28 import java.io.*; 29 30 import javax.lang.model.element.TypeElement; 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 * Add the annotation content tree to the documentation content tree. 115 * 116 * @param contentTree content tree to which the annotation content will be added 117 * @param annotationContentTree annotation content tree which will be added to the content tree 118 */ 119 public void addAnnotationContentTree(Content contentTree, Content annotationContentTree); 120 121 /** 122 * Get the member tree. 123 * 124 * @param memberTree the content tree that will be modified and returned 125 * @return a content tree for the member 126 */ 127 public Content getMemberTree(Content memberTree); 128 129 /** 130 * Get the member summary tree. 131 * 132 * @param memberTree the content tree that will be used to build the summary tree 133 * @return a content tree for the member summary 134 */ 135 public Content getMemberSummaryTree(Content memberTree); 136 137 /** 138 * Get the member details tree. 139 * 140 * @param memberTree the content tree that will be used to build the details tree 141 * @return a content tree for the member details 142 */ 143 public Content getMemberDetailsTree(Content memberTree); 144 145 /** 146 * Add the footer of the page. 147 * 148 * @param contentTree content tree to which the footer will be added 149 */ 150 public void addFooter(Content contentTree); 151 152 /** 153 * Print the document. 154 * 155 * @param contentTree content tree that will be printed as a document 156 */ 157 public void printDocument(Content contentTree) throws IOException; 158 159 /** 160 * Close the writer. 161 */ 162 public void close() throws IOException; 163 164 /** 165 * Return the {@link TypeElement} being documented. 166 * 167 * @return the TypeElement representing the annotation being documented. 168 */ 169 public TypeElement getAnnotationTypeElement(); 170 }