ConstantsSummaryWriter.java revision 3233:b5d08bc0d224
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
26package jdk.javadoc.internal.doclets.toolkit;
27
28import java.io.*;
29import java.util.*;
30
31import javax.lang.model.element.PackageElement;
32import javax.lang.model.element.TypeElement;
33import javax.lang.model.element.VariableElement;
34
35/**
36 * The interface for writing constants summary output.
37 *
38 *  <p><b>This is NOT part of any supported API.
39 *  If you write code that depends on this, you do so at your own risk.
40 *  This code and its internal interfaces are subject to change or
41 *  deletion without notice.</b>
42 *
43 * @author Jamie Ho
44 * @author Bhavesh Patel (Modified)
45 */
46
47public interface ConstantsSummaryWriter {
48
49    /**
50     * Close the writer.
51     */
52    public abstract void close() throws IOException;
53
54    /**
55     * Get the header for the constant summary documentation.
56     *
57     * @return header that needs to be added to the documentation
58     */
59    public abstract Content getHeader();
60
61    /**
62     * Get the header for the constant content list.
63     *
64     * @return content header that needs to be added to the documentation
65     */
66    public abstract Content getContentsHeader();
67
68    /**
69     * Adds the given package name link to the constant content list tree.
70     *
71     * @param pkg                    the {@link PackageElement} to index.
72     * @param writtenPackageHeaders  the set of package headers that have already
73     *                               been indexed, we want to index utmost once.
74     * @param contentListTree        the content tree to which the link will be added
75     */
76    public abstract void addLinkToPackageContent(PackageElement pkg,
77            Set<PackageElement> writtenPackageHeaders, Content contentListTree);
78
79    /**
80     * Add the content list to the documentation tree.
81     *
82     * @param contentTree the tree to which the contents list will be added
83     * @param contentListTree the content that will be added to the list
84     */
85    public abstract void addContentsList(Content contentTree, Content contentListTree);
86
87    /**
88     * Get the constant summaries for the document.
89     *
90     * @return constant summaries header to be added to the documentation tree
91     */
92    public abstract Content getConstantSummaries();
93
94    /**
95     * Adds the given package name.
96     *
97     * @param pkg  the parsed package name.  We only Write the
98     *                          first 2 directory levels of the package
99     *                          name. For example, java.lang.ref would be
100     *                          indexed as java.lang.*.
101     * @param summariesTree the summaries documentation tree
102     * @param first true if the first package is listed
103     *                    be written
104     */
105    public abstract void addPackageName(PackageElement pkg, Content summariesTree, boolean first);
106
107    /**
108     * Get the class summary header for the constants summary.
109     *
110     * @return the header content for the class constants summary
111     */
112    public abstract Content getClassConstantHeader();
113
114    /**
115     * Add the content list to the documentation summaries tree.
116     *
117     * @param summariesTree the tree to which the class constants list will be added
118     * @param classConstantTree the class constant tree that will be added to the list
119     */
120    public abstract void addClassConstant(Content summariesTree, Content classConstantTree);
121
122    /**
123     * Adds the constant member table to the documentation tree.
124     *
125     * @param typeElement the class whose constants are being documented.
126     * @param fields the constants being documented.
127     * @param classConstantTree the documentation tree to which theconstant member
128     *                    table content will be added
129     */
130    public abstract void addConstantMembers(TypeElement typeElement, Collection<VariableElement> fields,
131            Content classConstantTree);
132
133    /**
134     * Add the summaries list to the content tree.
135     *
136     * @param contentTree the tree to which the summaries list will be added
137     * @param summariesTree the summaries content tree that will be added to the list
138     */
139    public abstract void addConstantSummaries(Content contentTree, Content summariesTree);
140
141    /**
142     * Adds the footer for the summary documentation.
143     *
144     * @param contentTree content tree to which the footer will be added
145     */
146    public abstract void addFooter(Content contentTree);
147
148    /**
149     * Print the constants summary document.
150     *
151     * @param contentTree content tree which should be printed
152     */
153    public abstract void printDocument(Content contentTree) throws IOException;
154
155}
156