src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java

Fri, 27 Feb 2009 18:57:17 -0800

author
bpatel
date
Fri, 27 Feb 2009 18:57:17 -0800
changeset 233
5240b1120530
parent 1
9a66ca7c79fa
child 554
9d9f26857129
permissions
-rw-r--r--

6786690: Javadoc HTML WCAG 2.0 accessibility issues in standard doclet - DL tag and nesting issue
Reviewed-by: jjg

     1 /*
     2  * Copyright 1997-2004 Sun Microsystems, Inc.  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.  Sun designates this
     8  * particular file as subject to the "Classpath" exception as provided
     9  * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
    22  * CA 95054 USA or visit www.sun.com if you need additional information or
    23  * have any questions.
    24  */
    26 package com.sun.tools.doclets.formats.html;
    28 import com.sun.tools.doclets.internal.toolkit.util.*;
    29 import java.io.*;
    31 /**
    32  * Generate the documentation in the Html "frame" format in the browser. The
    33  * generated documentation will have two or three frames depending upon the
    34  * number of packages on the command line. In general there will be three frames
    35  * in the output, a left-hand top frame will have a list of all packages with
    36  * links to target left-hand bottom frame. The left-hand bottom frame will have
    37  * the particular package contents or the all-classes list, where as the single
    38  * right-hand frame will have overview or package summary or class file. Also
    39  * take care of browsers which do not support Html frames.
    40  *
    41  * @author Atul M Dambalkar
    42  */
    43 public class FrameOutputWriter extends HtmlDocletWriter {
    45     /**
    46      * Number of packages specified on the command line.
    47      */
    48     int noOfPackages;
    50     /**
    51      * Constructor to construct FrameOutputWriter object.
    52      *
    53      * @param filename File to be generated.
    54      */
    55     public FrameOutputWriter(ConfigurationImpl configuration,
    56                              String filename) throws IOException {
    57         super(configuration, filename);
    58     noOfPackages = configuration.packages.length;
    59     }
    61     /**
    62      * Construct FrameOutputWriter object and then use it to generate the Html
    63      * file which will have the description of all the frames in the
    64      * documentation. The name of the generated file is "index.html" which is
    65      * the default first file for Html documents.
    66      * @throws DocletAbortException
    67      */
    68     public static void generate(ConfigurationImpl configuration) {
    69         FrameOutputWriter framegen;
    70         String filename = "";
    71         try {
    72             filename = "index.html";
    73             framegen = new FrameOutputWriter(configuration, filename);
    74             framegen.generateFrameFile();
    75             framegen.close();
    76         } catch (IOException exc) {
    77             configuration.standardmessage.error(
    78                         "doclet.exception_encountered",
    79                         exc.toString(), filename);
    80             throw new DocletAbortException();
    81         }
    82     }
    84     /**
    85      * Generate the contants in the "index.html" file. Print the frame details
    86      * as well as warning if browser is not supporting the Html frames.
    87      */
    88     protected void generateFrameFile() {
    89         if (configuration.windowtitle.length() > 0) {
    90             printFramesetHeader(configuration.windowtitle, configuration.notimestamp);
    91         } else {
    92             printFramesetHeader(configuration.getText("doclet.Generated_Docs_Untitled"),
    93                                 configuration.notimestamp);
    94         }
    95         printFrameDetails();
    96         printFrameFooter();
    97     }
    99     /**
   100      * Generate the code for issueing the warning for a non-frame capable web
   101      * client. Also provide links to the non-frame version documentation.
   102      */
   103     protected void printFrameWarning() {
   104         noFrames();
   105         h2();
   106         printText("doclet.Frame_Alert");
   107         h2End();
   108         p();
   109         printText("doclet.Frame_Warning_Message");
   110         br();
   111         printText("doclet.Link_To");
   112         printHyperLink(configuration.topFile,
   113             configuration.getText("doclet.Non_Frame_Version"));
   114         println("");
   115         noFramesEnd();
   116     }
   118     /**
   119      * Print the frame sizes and their contents.
   120      */
   121     protected void printFrameDetails() {
   122         // title attribute intentionally made empty so
   123         // 508 tests will not flag it as missing
   124         frameSet("cols=\"20%,80%\" title=\"\" onLoad=\"top.loadFrames()\"");
   125         if (noOfPackages <= 1) {
   126             printAllClassesFrameTag();
   127         } else if (noOfPackages > 1) {
   128             frameSet("rows=\"30%,70%\" title=\"\" onLoad=\"top.loadFrames()\"");
   129             printAllPackagesFrameTag();
   130             printAllClassesFrameTag();
   131             frameSetEnd();
   132         }
   133         printClassFrameTag();
   134         printFrameWarning();
   135         frameSetEnd();
   136     }
   138     /**
   139      * Print the FRAME tag for the frame that lists all packages
   140      */
   141     private void printAllPackagesFrameTag() {
   142         frame("src=\"overview-frame.html\" name=\"packageListFrame\""
   143             + " title=\"" + configuration.getText("doclet.All_Packages") + "\"");
   144     }
   146     /**
   147      * Print the FRAME tag for the frame that lists all classes
   148      */
   149     private void printAllClassesFrameTag() {
   150         frame("src=\"" + "allclasses-frame.html" + "\""
   151             + " name=\"packageFrame\""
   152             + " title=\"" + configuration.getText("doclet.All_classes_and_interfaces")
   153             + "\"");
   154     }
   156     /**
   157      * Print the FRAME tag for the frame that describes the class in detail
   158      */
   159     private void printClassFrameTag() {
   160         frame("src=\"" + configuration.topFile + "\""
   161             + " name=\"classFrame\""
   162             + " title=\""
   163             + configuration.getText("doclet.Package_class_and_interface_descriptions")
   164             + "\" scrolling=\"yes\"");
   165     }
   167 }

mercurial