001: /*
002: * Copyright 1998-2005 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.formats.html;
027:
028: import com.sun.tools.doclets.internal.toolkit.util.*;
029:
030: import java.io.*;
031:
032: /**
033: * Generate only one index file for all the Member Names with Indexing in
034: * Unicode Order. The name of the generated file is "index-all.html" and it is
035: * generated in current or the destination directory.
036: *
037: * @see java.lang.Character
038: * @author Atul M Dambalkar
039: */
040: public class SingleIndexWriter extends AbstractIndexWriter {
041:
042: /**
043: * Construct the SingleIndexWriter with filename "index-all.html" and the
044: * {@link IndexBuilder}
045: *
046: * @param filename Name of the index file to be generated.
047: * @param indexbuilder Unicode based Index from {@link IndexBuilder}
048: */
049: public SingleIndexWriter(ConfigurationImpl configuration,
050: String filename, IndexBuilder indexbuilder)
051: throws IOException {
052: super (configuration, filename, indexbuilder);
053: relativepathNoSlash = ".";
054: relativePath = "./";
055: }
056:
057: /**
058: * Generate single index file, for all Unicode characters.
059: *
060: * @param indexbuilder IndexBuilder built by {@link IndexBuilder}
061: * @throws DocletAbortException
062: */
063: public static void generate(ConfigurationImpl configuration,
064: IndexBuilder indexbuilder) {
065: SingleIndexWriter indexgen;
066: String filename = "index-all.html";
067: try {
068: indexgen = new SingleIndexWriter(configuration, filename,
069: indexbuilder);
070: indexgen.generateIndexFile();
071: indexgen.close();
072: } catch (IOException exc) {
073: configuration.standardmessage.error(
074: "doclet.exception_encountered", exc.toString(),
075: filename);
076: throw new DocletAbortException();
077: }
078: }
079:
080: /**
081: * Generate the contents of each index file, with Header, Footer,
082: * Member Field, Method and Constructor Description.
083: */
084: protected void generateIndexFile() throws IOException {
085: printHtmlHeader(configuration
086: .getText("doclet.Window_Single_Index"), null, true);
087: printTop();
088: navLinks(true);
089: printLinksForIndexes();
090:
091: hr();
092:
093: for (int i = 0; i < indexbuilder.elements().length; i++) {
094: Character unicode = (Character) ((indexbuilder.elements())[i]);
095: generateContents(unicode, indexbuilder
096: .getMemberList(unicode));
097: }
098:
099: printLinksForIndexes();
100: navLinks(false);
101:
102: printBottom();
103: printBodyHtmlEnd();
104: }
105:
106: /**
107: * Print Links for all the Index Files per unicode character.
108: */
109: protected void printLinksForIndexes() {
110: for (int i = 0; i < indexbuilder.elements().length; i++) {
111: String unicode = (indexbuilder.elements())[i].toString();
112: printHyperLink("#_" + unicode + "_", unicode);
113: print(' ');
114: }
115: }
116: }
|