001 /*
002 * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved.
003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004 *
005 * This code is free software; you can redistribute it and/or modify it
006 * under the terms of the GNU General Public License version 2 only, as
007 * published by the Free Software Foundation. Sun designates this
008 * particular file as subject to the "Classpath" exception as provided
009 * by Sun in the LICENSE file that accompanied this code.
010 *
011 * This code is distributed in the hope that it will be useful, but WITHOUT
012 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014 * version 2 for more details (a copy is included in the LICENSE file that
015 * accompanied this code).
016 *
017 * You should have received a copy of the GNU General Public License version
018 * 2 along with this work; if not, write to the Free Software Foundation,
019 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020 *
021 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022 * CA 95054 USA or visit www.sun.com if you need additional information or
023 * have any questions.
024 */
025
026 package com.sun.tools.doclets.internal.toolkit;
027
028 import com.sun.javadoc.*;
029 import java.util.*;
030 import java.io.*;
031
032 /**
033 * The interface for writing constants summary output.
034 *
035 * This code is not part of an API.
036 * It is implementation that is subject to change.
037 * Do not use it as an API
038 *
039 * @author Jamie Ho
040 * @since 1.5
041 */
042
043 public interface ConstantsSummaryWriter {
044
045 /**
046 * Write the header for the summary.
047 */
048 public abstract void writeHeader();
049
050 /**
051 * Write the footer for the summary.
052 */
053 public abstract void writeFooter();
054
055 /**
056 * Close the writer.
057 */
058 public abstract void close() throws IOException;
059
060 /**
061 * Write the header for the index.
062 */
063 public abstract void writeContentsHeader();
064
065 /**
066 * Write the footer for the index.
067 */
068 public abstract void writeContentsFooter();
069
070 /**
071 * Add the given package name to the index.
072 * @param pkg the {@link PackageDoc} to index.
073 * @param parsedPackageName the parsed package name. We only Write the
074 * first 2 directory levels of the package
075 * name. For example, java.lang.ref would be
076 * indexed as java.lang.*.
077 * @param WriteedPackageHeaders the set of package headers that have already
078 * been indexed. We don't want to index
079 * something more than once.
080 */
081 public abstract void writeLinkToPackageContent(PackageDoc pkg, String parsedPackageName,
082 Set<String> WriteedPackageHeaders);
083
084 /**
085 * Write the given package name.
086 * @param pkg the {@link PackageDoc} to index.
087 * @param parsedPackageName the parsed package name. We only Write the
088 * first 2 directory levels of the package
089 * name. For example, java.lang.ref would be
090 * indexed as java.lang.*.
091 */
092 public abstract void writePackageName(PackageDoc pkg,
093 String parsedPackageName);
094
095 /**
096 * Write the heading for the current table of constants for a given class.
097 * @param cd the class whose constants are being documented.
098 */
099 public abstract void writeConstantMembersHeader(ClassDoc cd);
100
101 /**
102 * Document the given constants.
103 * @param cd the class whose constants are being documented.
104 * @param fields the constants being documented.
105 */
106 public abstract void writeConstantMembers(ClassDoc cd, List<FieldDoc> fields);
107
108 /**
109 * Document the given constants.
110 * @param cd the class whose constants are being documented.
111 */
112 public abstract void writeConstantMembersFooter(ClassDoc cd);
113
114 }