You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vs...@apache.org on 2007/10/26 14:31:30 UTC

svn commit: r588626 - in /maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main: java/org/apache/maven/jxr/java/src/ java/org/apache/maven/jxr/java/src/html/ resources/org/apache/maven/jxr/java/src/css/

Author: vsiveton
Date: Fri Oct 26 05:31:29 2007
New Revision: 588626

URL: http://svn.apache.org/viewvc?rev=588626&view=rev
Log:
o make rendering à la javadoc
o uppercase html tags
o updated CSS

Modified:
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/JavaSrc.java
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/AbstractPass.java
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/Pass1.java
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/Pass2.java
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/resources/org/apache/maven/jxr/java/src/css/styles.css

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/JavaSrc.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/JavaSrc.java?rev=588626&r1=588625&r2=588626&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/JavaSrc.java (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/JavaSrc.java Fri Oct 26 05:31:29 2007
@@ -23,6 +23,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Properties;
 
 import org.apache.maven.jxr.java.src.html.Pass1;
 import org.apache.maven.jxr.java.src.html.Pass2;
@@ -37,8 +38,12 @@
  */
 public class JavaSrc
 {
+    /** Field VERSION */
+    public static final String VERSION = getVersion();
+
     /** Field USAGE */
-    public static final String USAGE = "Usage: java " + JavaSrcOptions.getOptions() + "\n    " + JavaSrc.class.getName();
+    public static final String USAGE = "Usage: java " + JavaSrcOptions.getOptions() + "\n    "
+        + JavaSrc.class.getName();
 
     /**
      * Default location for css
@@ -365,8 +370,33 @@
      * @return InputStream An input stream for reading the resource, or <tt>null</tt>
      *         if the resource could not be found
      */
-    private InputStream getStream( String resource )
+    private static InputStream getStream( String resource )
+    {
+        return JavaSrc.class.getClassLoader().getResourceAsStream( resource );
+    }
+
+    /**
+     * Get the version of JavaSrc from Maven <code>pom.properties</code>.
+     *
+     * @return the current version of JavaSrc.
+     */
+    private static String getVersion()
     {
-        return getClass().getClassLoader().getResourceAsStream( resource );
+        InputStream is = getStream( "META-INF/maven/org.apache.maven.jxr/maven-jxr-java/pom.properties" );
+        if ( is != null )
+        {
+            Properties p = new Properties();
+            try
+            {
+                p.load( is );
+                return p.getProperty( "version" );
+            }
+            catch ( IOException e )
+            {
+                // nop
+            }
+        }
+
+        return "";
     }
 }

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/AbstractPass.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/AbstractPass.java?rev=588626&r1=588625&r2=588626&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/AbstractPass.java (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/AbstractPass.java Fri Oct 26 05:31:29 2007
@@ -20,8 +20,11 @@
  */
 
 import java.io.File;
+import java.util.GregorianCalendar;
 import java.util.StringTokenizer;
+import java.util.TimeZone;
 
+import org.apache.maven.jxr.java.src.JavaSrc;
 import org.apache.maven.jxr.java.src.JavaSrcOptions;
 
 /**
@@ -35,6 +38,8 @@
     protected static final String DEFAULT_EXCLUDES = "**/*~,**/#*#,**/.#*,**/%*%,**/._*,**/CVS,**/CVS/**,"
         + "**/.cvsignore,**/SCCS,**/SCCS/**,**/vssver.scc,**/.svn,**/.svn/**,**/.DS_Store";
 
+    protected static final String DEFAULT_DOCENCODING = "ISO-8859-1";
+
     private JavaSrcOptions options;
 
     /**
@@ -122,5 +127,14 @@
         {
             directory.mkdirs();
         }
+    }
+
+    /**
+     * @return an HTML comment with generated time.
+     */
+    static String getGeneratedBy()
+    {
+        return "<!-- Generated by Maven JXR " + JavaSrc.VERSION + " on "
+            + new GregorianCalendar( TimeZone.getDefault() ).getTime().toString() + " -->";
     }
 }

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/Pass1.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/Pass1.java?rev=588626&r1=588625&r2=588626&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/Pass1.java (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/Pass1.java Fri Oct 26 05:31:29 2007
@@ -258,24 +258,26 @@
         HTMLOutputWriter output = new LineOutputWriter( new BufferedOutputStream( new FileOutputStream( f ) ) );
         String backup = getBackupPath( tagList, element );
         String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
-            .getDocencoding() : System.getProperty( "file.encoding" ) );
+            .getDocencoding() : DEFAULT_DOCENCODING );
 
         String header = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
-            + "<html>\n"
-            + "<head>\n"
-            + "<meta http-equiv=\"Content-Type\" content=\"text/html; charset="
+            + "<HTML>\n"
+            + "<HEAD>\n"
+            + getGeneratedBy()
+            + "\n"
+            + "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset="
             + encoding
             + "\">\n"
-            + "<title>"
+            + "<TITLE>"
             + packageName
             + "."
             + SymbolTable.getClassList( t.getFile() )
-            + "</title>\n"
-            + "<LINK rel=\"stylesheet\" type=\"text/css\" href=\""
+            + "</TITLE>\n"
+            + "<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\""
             + backup
-            + "styles.css\">\n"
-            + "</head>\n"
-            + "<body>\n";
+            + "styles.css\" TITLE=\"Style\">\n"
+            + "</HEAD>\n"
+            + "<BODY>\n";
 
         if ( StringUtils.isNotEmpty( getOptions().getTop() ) )
         {
@@ -287,7 +289,7 @@
         // "'<A HREF=\"./"+htmlPackagePath+"/classList.html\" TARGET=\"packageFrame\">" + packageName + "</A>: " + SymbolTable.getClassList(t.getFile()) + "');\n"+
         packagePath = packageName.replace( '.', '/' );
 
-        output.write( "<pre>\n", 0, 6 );
+        output.write( "<PRE>\n", 0, 6 );
 
         return ( output );
     }
@@ -310,8 +312,8 @@
         }
 
         input.close();
-        output.write( "</pre>\n", 0, 7 );
-        output.write( "</body></html>" );
+        output.write( "</PRE>\n", 0, 7 );
+        output.write( "</BODY></HTML>" );
         output.flush();
         output.close();
     }
@@ -362,49 +364,6 @@
     }
 
     /**
-     * Method writeComment
-     *
-     * @param t
-     * @param input
-     * @param output
-     * @throws IOException
-     */
-    private void writeComment( HTMLTag t, LineNumberReader input, HTMLOutputWriter output )
-        throws IOException
-    {
-        int length = t.getLength();
-        int i = 0;
-
-        output.write( "<span class=\"comment\">" );
-
-        while ( i < length )
-        {
-            if ( currentChar == '\n' )
-            {
-                output.write( "</span>" );
-            }
-            output.writeHTML( (char) currentChar );
-
-            if ( currentChar == '\n' )
-            {
-                output.write( "<span class=\"comment\">" );
-                currentColumn = 0;
-            }
-
-            currentChar = input.read();
-            currentColumn++;
-            i++;
-        }
-
-        output.write( "</span>" );
-
-        if ( currentChar == '\n' )
-        {
-            currentColumn = 0;
-        }
-    }
-
-    /**
      * Method writeHTMLTag
      *
      * @param t
@@ -502,13 +461,56 @@
         }
     }
 
+    /**
+     * Method writeComment
+     *
+     * @param t
+     * @param input
+     * @param output
+     * @throws IOException
+     */
+    private void writeComment( HTMLTag t, LineNumberReader input, HTMLOutputWriter output )
+        throws IOException
+    {
+        int length = t.getLength();
+        int i = 0;
+
+        output.write( "<SPAN CLASS=\"comment\">" );
+
+        while ( i < length )
+        {
+            if ( currentChar == '\n' )
+            {
+                output.write( "</SPAN>" );
+            }
+            output.writeHTML( (char) currentChar );
+
+            if ( currentChar == '\n' )
+            {
+                output.write( "<SPAN CLASS=\"comment\">" );
+                currentColumn = 0;
+            }
+
+            currentChar = input.read();
+            currentColumn++;
+            i++;
+        }
+
+        output.write( "</SPAN>" );
+
+        if ( currentChar == '\n' )
+        {
+            currentColumn = 0;
+        }
+    }
+
     private void writeLiteral( HTMLTag t, LineNumberReader input, HTMLOutputWriter output )
         throws IOException
     {
         int length = t.getLength();
         int i = 0;
 
-        output.write( "<span class=\"string\">" );
+        output.write( "<SPAN CLASS=\"string\">" );
 
         while ( i < length )
         {
@@ -524,7 +526,7 @@
             i++;
         }
 
-        output.write( "</span>" );
+        output.write( "</SPAN>" );
 
         if ( currentChar == '\n' )
         {
@@ -538,7 +540,7 @@
         int length = t.getLength();
         int i = 0;
 
-        output.write( "<strong>" );
+        output.write( "<SPAN CLASS=\"keywords\"><B>" );
 
         while ( i < length )
         {
@@ -554,7 +556,7 @@
             i++;
         }
 
-        output.write( "</strong>" );
+        output.write( "</B></SPAN>" );
 
         if ( currentChar == '\n' )
         {

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/Pass2.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/Pass2.java?rev=588626&r1=588625&r2=588626&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/Pass2.java (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/src/html/Pass2.java Fri Oct 26 05:31:29 2007
@@ -345,16 +345,17 @@
 
         result.write( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
             + "\"http://www.w3.org/TR/html4/loose.dtd\">\n" );
-        result.write( "<html>" );
-        result.write( "<head>\n" );
-        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
-            .getDocencoding() : System.getProperty( "file.encoding" ) );
-        result.write( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">\n" );
-        result.write( "<title>" + packageName + "." + ref.getReferentFileClass() + " References</title>\n" );
-        result.write( "<link rel=\"stylesheet\" type=\"text/css\" " + "href=\"" + getBackupPath( packageName )
-            + "styles.css\">\n" );
-        result.write( "</head>\n" );
-        result.write( "<body>\n" );
+        result.write( "<HTML>" );
+        result.write( "<HEAD>\n" );
+        result.write( getGeneratedBy() + "\n" );
+        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions().getDocencoding()
+                                                                                   : DEFAULT_DOCENCODING );
+        result.write( "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=" + encoding + "\">\n" );
+        result.write( "<TITLE>" + packageName + "." + ref.getReferentFileClass() + " References</title>\n" );
+        result.write( "<LINK REL=\"stylesheet\" TYPE=\"text/css\" " + "HREF=\"" + getBackupPath( packageName )
+            + "styles.css\" TITLE=\"Style\">\n" );
+        result.write( "</HEAD>\n" );
+        result.write( "<BODY>\n" );
 
         return result;
     }
@@ -390,38 +391,37 @@
     {
         if ( ref.getReferentType().equals( ReferenceTypes.CLASS_REF ) )
         {
-            bw.write( "<p class=\"classReflist\">" );
+            bw.write( "<P CLASS=\"classReflist\">" );
 
-            String nameString = "<p class=\"classReflistHeader\">Class: <a name=\"" + ref.getReferentTag()
-                + "\" href=\"" + ref.getReferentFileClass() + "_java.html#" + ref.getReferentTag() + "\">"
-                + ref.getReferentClass() + "</a></p>";
+            String nameString = "<P CLASS=\"classReflistHeader\">Class: <A NAME=\"" + ref.getReferentTag()
+                + "\" HREF=\"" + ref.getReferentFileClass() + "_java.html#" + ref.getReferentTag() + "\">"
+                + ref.getReferentClass() + "</A></P>";
 
             bw.write( nameString );
         }
         else if ( ref.getReferentType().equals( ReferenceTypes.METHOD_REF ) )
         {
-            bw.write( "<p class=\"methodReflist\">" );
-            bw.write( "<!-- hello -->" );
+            bw.write( "<P CLASS=\"methodReflist\">" );
 
-            String nameString = "<p class=\"methodReflistHeader\">Method: <a name=\"" + ref.getReferentTag()
-                + "\" href=\"" + ref.getReferentFileClass() + "_java.html#" + ref.getReferentTag() + "\">"
-                + ref.getReferentTag() + "</a></p>";
+            String nameString = "<p class=\"methodReflistHeader\">Method: <A NAME=\"" + ref.getReferentTag()
+                + "\" HREF=\"" + ref.getReferentFileClass() + "_java.html#" + ref.getReferentTag() + "\">"
+                + ref.getReferentTag() + "</A></P>";
 
             bw.write( nameString );
         }
         else if ( ref.getReferentType().equals( ReferenceTypes.VARIABLE_REF ) )
         {
-            bw.write( "<p class=\"variableReflist\">" );
+            bw.write( "<P CLASS=\"variableReflist\">" );
 
-            String nameString = "<p class=\"variableReflistHeader\">Variable: <a name=\"" + ref.getReferentTag()
-                + "\" href=\"" + ref.getReferentFileClass() + "_java.html#" + ref.getReferentTag() + "\">"
-                + ref.getReferentTag() + "</a></p>";
+            String nameString = "<P CLASS=\"variableReflistHeader\">Variable: <A NAME=\"" + ref.getReferentTag()
+                + "\" HREF=\"" + ref.getReferentFileClass() + "_java.html#" + ref.getReferentTag() + "\">"
+                + ref.getReferentTag() + "</A></P>";
 
             bw.write( nameString );
         }
         else
         {
-            bw.write( "<p>open section " + ref.getReferentType() + "</p>" );
+            bw.write( "<P>open section " + ref.getReferentType() + "</P>" );
         }
 
         if ( log.isDebugEnabled() )
@@ -446,34 +446,34 @@
 
         if ( ref.getReferentType().equals( ReferenceTypes.CLASS_REF ) )
         {
-            String linkString = "<p class=\"classRefItem\"><a href=\"" + linkFilename + "#"
+            String linkString = "<P CLASS=\"classRefItem\"><A HREF=\"" + linkFilename + "#"
                 + ref.getReferringLineNumber() + "\">" + ref.getReferringPackage() + "." + ref.getReferringClass()
                 + "." + ref.getReferringMethod() + " (" + ref.getReferringFile() + ":" + ref.getReferringLineNumber()
-                + ")</a></p>\n";
+                + ")</A></P>\n";
 
             bw.write( linkString );
         }
         else if ( ref.getReferentType().equals( ReferenceTypes.METHOD_REF ) )
         {
-            String linkString = "<p class=\"methodRefItem\"><a href=\"" + linkFilename + "#"
+            String linkString = "<P CLASS=\"methodRefItem\"><A HREF=\"" + linkFilename + "#"
                 + ref.getReferringLineNumber() + "\">" + ref.getReferringPackage() + "." + ref.getReferringClass()
                 + "." + ref.getReferringMethod() + " (" + ref.getReferringFile() + ":" + ref.getReferringLineNumber()
-                + ")</a></p>\n";
+                + ")</A></P>\n";
 
             bw.write( linkString );
         }
         else if ( ref.getReferentType().equals( ReferenceTypes.VARIABLE_REF ) )
         {
-            String linkString = "<p class=\"variableRefItem\"><a href=\"" + linkFilename + "#"
+            String linkString = "<P CLASS=\"variableRefItem\"><A HREF=\"" + linkFilename + "#"
                 + ref.getReferringLineNumber() + "\">" + ref.getReferringPackage() + "." + ref.getReferringClass()
                 + "." + ref.getReferringMethod() + " (" + ref.getReferringFile() + ":" + ref.getReferringLineNumber()
-                + ")</a></p>\n";
+                + ")</A></P>\n";
 
             bw.write( linkString );
         }
         else
         {
-            bw.write( "<p>link for a " + ref.getReferentType() + "</p>" );
+            bw.write( "<P>link for a " + ref.getReferentType() + "</P>" );
         }
     }
 
@@ -494,8 +494,11 @@
 
     /**
      * Method createPackageFiles
+     *
+     * @throws IOException if any
      */
     private void createPackageFiles()
+        throws IOException
     {
         String packageName;
         String fileName;
@@ -524,61 +527,61 @@
 
             createDirs( file );
 
-            try
-            {
-                pw = new PrintWriter( new BufferedOutputStream( new FileOutputStream( file ) ) );
+            pw = new PrintWriter( new BufferedOutputStream( new FileOutputStream( file ) ) );
 
-                pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
-                    + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
-                pw.println( "<html>" );
-                pw.println( "<head>" );
-                String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
-                    .getDocencoding() : System.getProperty( "file.encoding" ) );
-                pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
-                pw.println( "<title>" + packageName + "</title>" );
-                pw.println( "<LINK rel=\"stylesheet\" type=\"text/css\" " + "href=\"" + getBackupPath( packageName )
-                    + "styles.css\">" );
-                pw.println( "</head>" );
-                pw.println( "<body>" );
-
-                pw.println( "<h3>" );
-                pw.println( "<a href=\"package-summary.html\" target=\"classFrame\">" + packageName + "</a>" );
-                pw.println( "</h3>" );
-                pw.println( "<p class=packagename>" + packageName + "</p>" );
-
-                pw.println( "<h3>Classes</h3>" );
-                Iterator iter = classes.iterator();
-
-                while ( iter.hasNext() )
-                {
-                    ClassFileEntry cf = (ClassFileEntry) iter.next();
-                    String className = cf.getClassName();
-                    String fileClassName = cf.getFileName();
-                    //int j = className.indexOf('.');
-                    String anchor;
-
-                    // if (j == -1)
-                    // {
-                    anchor = className;
-
-                    // }
-                    // else
-                    // {
-                    // anchor = className.substring(j+1);
-                    // }
-                    String tag = "<p class=\"classListItem\"><a href=\"" + fileClassName + "_java.html#" + anchor
-                        + "\" TARGET=\"classFrame\">" + className + "</a></p>";
-
-                    pw.println( tag );
-                }
+            pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
+                + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
+            pw.println( "<HTML>" );
+            pw.println( "<HEAD>" );
+            pw.println( getGeneratedBy() );
+            String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions().getDocencoding()
+                                                                                       : DEFAULT_DOCENCODING );
+            pw.println( "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=" + encoding + "\">" );
+            if ( StringUtils.isNotEmpty( getOptions().getWindowtitle() ) )
+            {
+                pw.println( "<TITLE>" + packageName + " (" + getOptions().getWindowtitle() + ")</TITLE>" );
+                pw.println( "<META NAME=\"keywords\" CONTENT=\"" + packageName + "\">" );
+            }
+            else
+            {
+                pw.println( "<TITLE>" + packageName + "</TITLE>" );
+            }
+            pw.println( "<LINK REL=\"stylesheet\" TYPE=\"text/css\" " + "HREF=\"" + getBackupPath( packageName )
+                + "styles.css\" TITLE=\"Style\">" );
+            pw.println( "</HEAD>" );
+
+            pw.println( "" );
+
+            pw.println( "<BODY BGCOLOR=\"white\">" );
+            pw.println( "<FONT size=\"+1\" CLASS=\"FrameTitleFont\">" );
+            pw.println( "<A HREF=\"package-summary.html\" TARGET=\"classFrame\">" + packageName + "</A></FONT>" );
+            pw.println( "<TABLE BORDER=\"0\" WIDTH=\"100%\" SUMMARY=\"\">" );
+            pw.println( "<TR>" );
+            pw.println( "<TD NOWRAP><FONT size=\"+1\" CLASS=\"FrameHeadingFont\">" );
+            pw.println( "Classes</FONT>&nbsp;" );
+            pw.println( "<FONT CLASS=\"FrameItemFont\">" );
+            pw.println( "<BR>" );
 
-                pw.println( "</body></html>" );
-                pw.close();
-            }
-            catch ( Exception ex )
+            Iterator iter = classes.iterator();
+            while ( iter.hasNext() )
             {
-                log.error( "Error writing file:" + fileName, ex );
-            }
+                ClassFileEntry cf = (ClassFileEntry) iter.next();
+                String className = cf.getClassName();
+                String fileClassName = cf.getFileName();
+                String anchor = className;
+
+                pw.println( "<A HREF=\"" + fileClassName + "_java.html#" + anchor + "\" TITLE=\"" + className
+                    + "\" TARGET=\"classFrame\">" + className + "</A>" );
+                pw.println( "<BR>" );
+            }
+            pw.println( "</FONT>" );
+            pw.println( "</TD>" );
+            pw.println( "</TR>" );
+            pw.println( "</TABLE>" );
+
+            pw.println( "</BODY>" );
+            pw.println( "</HTML>" );
+            pw.close();
         }
 
         println( totalClassCount + " classes total" );
@@ -719,29 +722,56 @@
 
         pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" "
             + "\"http://www.w3.org/TR/html4/frameset.dtd\">" );
-        pw.println( "<head>" );
-        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
-            .getDocencoding() : System.getProperty( "file.encoding" ) );
-        pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
+        pw.println( "<HTML>" );
+        pw.println( "<HEAD>" );
+        pw.println( getGeneratedBy() );
+        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions().getDocencoding()
+                                                                                   : DEFAULT_DOCENCODING );
+        pw.println( "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=" + encoding + "\">" );
         if ( StringUtils.isNotEmpty( getOptions().getWindowtitle() ) )
         {
-            pw.println( "<title>" + getOptions().getWindowtitle() + "</title>" );
+            pw.println( "<TITLE>" + getOptions().getWindowtitle() + "</TITLE>" );
         }
         else
         {
-            pw.println( "<title>JavaSrc</title>" );
+            pw.println( "<TITLE>JavaSrc</TITLE>" );
         }
-        pw.println( "</head>" );
-        pw.println( "<frameset cols=\"20%,80%\">" );
-        pw.println( "  <frameset rows=\"30%,70%\">" );
-        pw.println( "    <frame src=\"overview-frame.html\" name=\"packageListFrame\">" );
-        pw.println( "    <frame src=\"allclasses-frame.html\" name=\"packageFrame\">" );
-        pw.println( "  </frameset>" );
+        pw.println( "<SCRIPT TYPE=\"text/javascript\">" );
+        pw.println( "<!--" );
+        pw.println( "    targetPage = \"\" + window.location.search;" );
+        pw.println( "    if (targetPage != \"\" && targetPage != \"undefined\")" );
+        pw.println( "       targetPage = targetPage.substring(1);" );
+        pw.println( "    function loadFrames() {" );
+        pw.println( "        if (targetPage != \"\" && targetPage != \"undefined\")" );
+        pw.println( "             top.classFrame.location = top.targetPage;" );
+        pw.println( "    }" );
+        pw.println( "//-->" );
+        pw.println( "</SCRIPT>" );
+        pw.println( "</HEAD>" );
+
+        pw.println( "" );
+
+        pw.println( "<FRAMESET COLS=\"20%,80%\" TITLE=\"\" ONLOAD=\"top.loadFrames()>\">" );
+        pw.println( "  <FRAMESET ROWS=\"30%,70%\" TITLE=\"\" ONLOAD=\"top.loadFrames()>\">" );
+        pw.println( "    <FRAME SRC=\"overview-frame.html\" NAME=\"packageListFrame\" TITLE=\"All Packages\">" );
+        pw.println( "    <FRAME SRC=\"allclasses-frame.html\" NAME=\"packageFrame\" "
+            + "TITLE=\"All classes and interfaces (except non-static nested types\">" );
+        pw.println( "  </FRAMESET>" );
         pw.println( "  " );
-        pw.println( "  <frameset rows=\"*\">" );
-        pw.println( "    <frame src=\"overview-summary.html\" name=\"classFrame\">" );
-        pw.println( "  </frameset>" );
-        pw.println( "</frameset>" );
+        pw.println( "  <FRAMESET ROWS=\"*\">" );
+        pw.println( "    <FRAME SRC=\"overview-summary.html\" NAME=\"classFrame\" "
+            + "TITLE=\"Package, class and interface descriptions\" SCROLLING=\"yes\">" );
+        pw.println( "    <NOFRAMES>" );
+        pw.println( "      <H2>Frame Alert</H2>" );
+        pw.println( "      <P>" );
+        pw.println( "      This document is designed to be viewed using the frames feature. "
+            + "If you see this message, you are using a non-frame-capable web client." );
+        pw.println( "      <BR>" );
+        pw.println( "      Link to<A HREF=\"overview-summary.html\">Non-frame version.</A>" );
+        pw.println( "    </NOFRAMES>" );
+        pw.println( "  </FRAMESET>" );
+        pw.println( "</FRAMESET>" );
+        pw.println( "</HTML>" );
         pw.close();
     }
 
@@ -765,31 +795,70 @@
 
         pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
             + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
-        pw.println( "<html>" );
-        pw.println( "<head>" );
-        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
-            .getDocencoding() : System.getProperty( "file.encoding" ) );
-        pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
-        pw.println( "<title>Overview</title>" );
-        pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">" );
-        pw.println( "</head>" );
-        pw.println( "<body>" );
+        pw.println( "<HTML>" );
+        pw.println( "<HEAD>" );
+        pw.println( getGeneratedBy() );
+        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions().getDocencoding()
+                                                                                   : DEFAULT_DOCENCODING );
+        pw.println( "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=" + encoding + "\">" );
+        if ( StringUtils.isNotEmpty( getOptions().getWindowtitle() ) )
+        {
+            pw.println( "<TITLE>Overview (" + getOptions().getWindowtitle() + ")</TITLE>" );
+            pw.println( "<META NAME=\"keywords\" CONTENT=\"Overview, " + getOptions().getWindowtitle() + "\">" );
+        }
+        else
+        {
+            pw.println( "<TITLE>Overview</TITLE>" );
+        }
+        pw.println( "<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"styles.css\" TITLE=\"Style\">" );
+        pw.println( "</HEAD>" );
+
+        pw.println( "" );
+
+        pw.println( "<BODY BGCOLOR=\"white\">" );
+        pw.println( "<TABLE BORDER=\"0\" WIDTH=\"100%\" SUMMARY=\"\">" );
+        pw.println( "<TR>" );
+        pw.println( "<TH ALIGN=\"left\" NOWRAP>" );
+        pw.println( "<FONT size=\"+1\" CLASS=\"FrameTitleFont\">" );
         if ( StringUtils.isNotEmpty( getOptions().getPackagesheader() ) )
         {
-            pw.println( "<b>" + getOptions().getPackagesheader() + "</b>" );
+            pw.println( "<B>" + getOptions().getPackagesheader() + "</B>" );
         }
-        pw.println( "<h3><a href=\"allclasses-frame.html\" target=\"packageFrame\">All Classes</a></h3>" );
-        pw.println( "<h3>Packages</h3>" );
+        pw.println( "</FONT></TH>" );
+        pw.println( "</TR>" );
+        pw.println( "</TABLE>" );
+
+        pw.println( "" );
+
+        pw.println( "<TABLE BORDER=\"0\" WIDTH=\"100%\" SUMMARY=\"\">" );
+        pw.println( "<TR>" );
+        pw.println( "<TD NOWRAP>" );
+        pw.println( "<FONT CLASS=\"FrameItemFont\">" );
+        pw.println( "<A HREF=\"allclasses-frame.html\" TARGET=\"packageFrame\">All Classes</A>" );
+        pw.println( "</FONT><P>" );
+        pw.println( "<FONT size=\"+1\" CLASS=\"FrameHeadingFont\">Packages</FONT>" );
+        pw.println( "<BR>" );
         while ( iter.hasNext() )
         {
             packageName = (String) iter.next();
             packageFileName = packageName.replace( '.', '/' ) + '/' + "classList.html";
 
-            pw.println( "<p class=\"packageListItem\"><A HREF=\"" + packageFileName + "\" TARGET=\"packageFrame\">"
-                + packageName + "</A></p>" );
-        }
+            pw.println( "<FONT CLASS=\"FrameItemFont\">" );
+            pw.println( "<A HREF=\"" + packageFileName + "\" TARGET=\"packageFrame\">" + packageName + "</A>" );
+            pw.println( "</FONT>" );
+            pw.println( "<BR>" );
+        }
+        pw.println( "</TD>" );
+        pw.println( "</TR>" );
+        pw.println( "</TABLE>" );
+
+        pw.println( "" );
+
+        pw.println( "<P>" );
+        pw.println( "&nbsp;" );
+        pw.println( "</BODY>" );
+        pw.println( "</HTML>" );
 
-        pw.println( "</body></html>" );
         pw.close();
     }
 
@@ -810,32 +879,55 @@
 
         pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
             + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
-        pw.println( "<html>" );
-        pw.println( "<head>" );
-        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
-            .getDocencoding() : System.getProperty( "file.encoding" ) );
-        pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
-        pw.println( "<title>All classes</title>" );
-        pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">" );
-        pw.println( "</head>" );
-        pw.println( "<body>" );
+        pw.println( "<HTML>" );
+        pw.println( "<HEAD>" );
+        pw.println( getGeneratedBy() );
+        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions().getDocencoding()
+                                                                                   : DEFAULT_DOCENCODING );
+        pw.println( "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=" + encoding + "\">" );
+        if ( StringUtils.isNotEmpty( getOptions().getWindowtitle() ) )
+        {
+            pw.println( "<TITLE>All classes (" + getOptions().getWindowtitle() + ")</TITLE>" );
+        }
+        else
+        {
+            pw.println( "<TITLE>All classes</TITLE>" );
+        }
+        pw.println( "<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"styles.css\" TITLE=\"Style\">" );
+        pw.println( "</HEAD>" );
 
-        pw.println( "<h3>All Classes</h3>" );
-        Iterator iter = orderedAllClasses().iterator();
+        pw.println( "" );
 
+        pw.println( "<BODY BGCOLOR=\"white\">" );
+        pw.println( "<FONT size=\"+1\" CLASS=\"FrameHeadingFont\">" );
+        pw.println( "<B>All Classes</B></FONT>" );
+        pw.println( "<BR>" );
+        pw.println( "" );
+        pw.println( "<TABLE BORDER=\"0\" WIDTH=\"100%\" SUMMARY=\"\">" );
+        pw.println( "<TR>" );
+        pw.println( "<TD NOWRAP><FONT CLASS=\"FrameItemFont\">" );
+        Iterator iter = orderedAllClasses().iterator();
         while ( iter.hasNext() )
         {
             ClassFileEntry cf = (ClassFileEntry) iter.next();
             String className = cf.getClassName();
             String fileClassName = cf.getFileName();
             String anchor = className;
-            String tag = "<p class=\"classListItem\"><a href=\"" + fileClassName + "_java.html#" + anchor
-                + "\" TARGET=\"classFrame\">" + className + "</a></p>";
 
-            pw.println( tag );
-        }
+            // TODO add <I> for interface
+            pw.println( "<A HREF=\"" + fileClassName + "_java.html#" + anchor + "\" TITLE=\"" + className + "\" "
+                + "TARGET=\"classFrame\">" + className + "</A>" );
+            pw.println( "<BR>" );
+        }
+        pw.println( "</FONT>" );
+        pw.println( "</TD>" );
+        pw.println( "</TR>" );
+        pw.println( "</TABLE>" );
+
+        pw.println( "" );
 
-        pw.println( "</body></html>" );
+        pw.println( "</BODY>" );
+        pw.println( "</HTML>" );
         pw.close();
     }
 
@@ -878,34 +970,63 @@
 
             pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
                 + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
-            pw.println( "<html>" );
-            pw.println( "<head>" );
-            String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
-                .getDocencoding() : System.getProperty( "file.encoding" ) );
-            pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
-            pw.println( "<title>" + packageName + " Summary</title>" );
-            pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"" + getBackupPath( packageName )
-                + "styles.css\">" );
-            pw.println( "</head>" );
-            pw.println( "<body>" );
+            pw.println( "<HTML>" );
+            pw.println( "<HEAD>" );
+            pw.println( getGeneratedBy() );
+            String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions().getDocencoding()
+                                                                                       : DEFAULT_DOCENCODING );
+            pw.println( "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=" + encoding + "\">" );
+            if ( StringUtils.isNotEmpty( getOptions().getWindowtitle() ) )
+            {
+                pw.println( "<TITLE>" + packageName + " (" + getOptions().getWindowtitle() + ")</TITLE>" );
+                pw.println( "META NAME=\"keywords\" CONTENT=\"package " + packageName + "\">" );
+            }
+            else
+            {
+                pw.println( "<TITLE>" + packageName + " Summary</TITLE>" );
+            }
+            pw.println( "<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"" + getBackupPath( packageName )
+                + "styles.css\" TITLE=\"Style\">" );
+            pw.println( "<SCRIPT TYPE=\"text/javascript\">" );
+            pw.println( "<!--" );
+            pw.println( "function windowTitle()" );
+            pw.println( "{" );
+            if ( StringUtils.isNotEmpty( getOptions().getWindowtitle() ) )
+            {
+                pw.println( "    parent.document.title=\"" + packageName + " (" + getOptions().getWindowtitle()
+                    + ")\";" );
+            }
+            else
+            {
+                pw.println( "    parent.document.title=\"" + packageName + " Summary\";" );
+            }
+            pw.println( "}" );
+            pw.println( "//-->" );
+            pw.println( "</SCRIPT>" );
+            pw.println( "</HEAD>" );
 
+            pw.println( "" );
+
+            pw.println( "<BODY BGCOLOR=\"white\" ONLOAD=\"windowTitle();\">" );
+
+            pw.println( "" );
+            pw.println( "<!-- ========= START OF TOP NAVBAR ======= -->" );
             if ( StringUtils.isNotEmpty( getOptions().getTop() ) )
             {
                 pw.println( getOptions().getTop() );
-                pw.println( "<hr>" );
+                pw.println( "<HR>" );
             }
+            createPackageSummaryFilesExtras( pw, getBackupPath( packageName ), "package-summary.html", true );
+            pw.println( "<!-- ========= END OF TOP NAVBAR ========= -->" );
 
-            createPackageSummaryFilesExtras( pw, getBackupPath( packageName ), "package-summary.html" );
-
-            pw.println( "<h2>" + packageName + "</h2>" );
-
-            pw.println( "<table class=\"summary\">" );
-            pw.println( "<thead>" );
-            pw.println( "<tr>" );
-            pw.println( "<th>Class Summary</th>" );
-            pw.println( "</tr>" );
-            pw.println( "</thead>" );
-            pw.println( "<tbody>" );
+            pw.println( "<HR>" );
+            pw.println( "<H2>Package " + packageName + "</H2>" );
+            pw.println( "" );
+            pw.println( "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" CELLSPACING=\"0\" SUMMARY=\"\">" );
+            pw.println( "<TR BGCOLOR=\"#CCCCFF\" CLASS=\"TableHeadingColor\">" );
+            pw.println( "<TH ALIGN=\"left\" COLSPAN=\"2\"><FONT SIZE=\"+2\">" );
+            pw.println( "<B>Class Summary</B></FONT></TH>" );
+            pw.println( "</TR>" );
 
             Iterator iter = classes.iterator();
 
@@ -914,47 +1035,117 @@
                 ClassFileEntry cf = (ClassFileEntry) iter.next();
                 String className = cf.getClassName();
                 String fileClassName = cf.getFileName();
-                String anchor;
+                String anchor = className;
 
-                anchor = className;
-                pw.println( "<tr>" );
-                pw.println( "<td>" );
-                pw.println( "<a href=\"" + fileClassName + "_java.html#" + anchor + "\" TARGET=\"classFrame\">"
-                    + className + "</a>" );
-                pw.println( "</td>" );
-                pw.println( "</tr>" );
-            }
-            pw.println( "</tbody>" );
-            pw.println( "</table>" );
-
-            createPackageSummaryFilesExtras( pw, getBackupPath( packageName ), "package-summary.html" );
-
-            pw.println( "<hr>" );
-            pw.println( "<div class=\"bottom\">Copyright &copy; 2001-2003 Apache Software Foundation. "
-                + "All Rights Reserved.</div>" );
-            pw.println( "</body></html>" );
+                pw.println( "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" );
+                pw.println( "<TD WIDTH=\"15%\">" );
+                pw.println( "<B><A HREF=\"" + fileClassName + "_java.html#" + anchor + "\" TITLE=\"" + className
+                    + "\">" + className + "</A></B>" );
+                pw.println( "</TD>" );
+                pw.println( "<TD></TD>" );
+                pw.println( "</TR>" );
+            }
+            pw.println( "</TBODY>" );
+            pw.println( "</TABLE>" );
+
+            pw.println( "" );
+            pw.println( "<P>&nbsp;</P><HR>" );
+
+            pw.println( "<!-- ======= START OF BOTTOM NAVBAR ====== -->" );
+            createPackageSummaryFilesExtras( pw, getBackupPath( packageName ), "package-summary.html", false );
+            pw.println( "<!-- ======= END OF BOTTOM NAVBAR ====== -->" );
+
+            if ( StringUtils.isNotEmpty( getOptions().getBottom() ) )
+            {
+                pw.println( "<HR>" );
+                pw.println( getOptions().getBottom() );
+            }
+            pw.println( "</BODY>" );
+            pw.println( "</HTML>" );
             pw.close();
         }
     }
 
-    private void createPackageSummaryFilesExtras( PrintWriter pw, String root, String current )
+    private void createPackageSummaryFilesExtras( PrintWriter pw, String root, String current, boolean top )
     {
-        pw.println( "<div class=\"overview\">" );
-        pw.println( "<ul>" );
-        pw.println( "<li><a href=\"" + root + "overview-summary.html\">Overview</a></li>" );
-        pw.println( "<li class=\"selected\">Package</li>" );
-        pw.println( "</ul>" );
-        pw.println( "</div>" );
-        pw.println( "<div class=\"framenoframe\">" );
-        pw.println( "<ul>" );
-        pw.println( "<li>" );
-        pw.println( "<a href=\"" + root + "index.html\" target=\"_top\">FRAMES</a>" );
-        pw.println( "</li>" );
-        pw.println( "<li>" );
-        pw.println( "<a href=\"" + current + "\" target=\"_top\">NO FRAMES</a>" );
-        pw.println( "</li>" );
-        pw.println( "</ul>" );
-        pw.println( "</div>" );
+        if ( top )
+        {
+            pw.println( "<A NAME=\"navbar_top\"><!-- --></A>" );
+            pw.println( "<A HREF=\"#skip-navbar_top\" TITLE=\"Skip navigation links\"></A>" );
+        }
+        else
+        {
+            pw.println( "<A NAME=\"navbar_bottom\"><!-- --></A>" );
+            pw.println( "<A HREF=\"#skip-navbar_bottom\" TITLE=\"Skip navigation links\"></A>" );
+        }
+        pw.println( "<TABLE BORDER=\"0\" WIDTH=\"100%\" CELLPADDING=\"1\" CELLSPACING=\"0\" SUMMARY=\"\">" );
+        pw.println( "<TR>" );
+        pw.println( "<TD COLSPAN=\"2\" BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        if ( top )
+        {
+            pw.println( "<A NAME=\"navbar_top_firstrow\"><!-- --></A>" );
+        }
+        else
+        {
+            pw.println( "<A NAME=\"navbar_bottom_firstrow\"><!-- --></A>" );
+        }
+        pw.println( "<TABLE BORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"3\" SUMMARY=\"\">" );
+        pw.println( "  <TR ALIGN=\"center\" VALIGN=\"top\">" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "    <A HREF=\"" + root
+            + "overview-summary.html\"><FONT CLASS=\"NavBarFont1\"><B>Overview</B></FONT></A>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#FFFFFF\" CLASS=\"NavBarCell1Rev\">" );
+        pw.println( "     &nbsp;<FONT CLASS=\"NavBarFont1Rev\"><B>Package</B></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "    <FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "    <FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "    <FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "    <FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "    <FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "    <FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  </TR>" );
+        pw.println( "</TABLE>" );
+        pw.println( "</TD>" );
+        pw.println( "<TD ALIGN=\"right\" VALIGN=\"top\" ROWSPAN=\"3\"><EM>" );
+        if ( top )
+        {
+            if ( StringUtils.isNotEmpty( getOptions().getHeader() ) )
+            {
+                pw.println( getOptions().getHeader() );
+            }
+        }
+        else
+        {
+            if ( StringUtils.isNotEmpty( getOptions().getFooter() ) )
+            {
+                pw.println( getOptions().getFooter() );
+            }
+        }
+        pw.println( "</EM>" );
+        pw.println( "</TD>" );
+        pw.println( "</TR>" );
+        pw.println( "" );
+        pw.println( "<TR>" );
+        pw.println( "<TD BGCOLOR=\"white\" CLASS=\"NavBarCell2\"><FONT SIZE=\"-2\">&nbsp;&nbsp;&nbsp;</FONT></TD>" );
+        pw.println( "<TD BGCOLOR=\"white\" CLASS=\"NavBarCell2\"><FONT SIZE=\"-2\">" );
+        pw.println( "  <A HREF=\"" + root + "index.html\" TARGET=\"_top\"><B>FRAMES</B></A>  &nbsp;" );
+        pw.println( "&nbsp;<A HREF=\"" + current + "\" TARGET=\"_top\"><B>NO FRAMES</B></A>  &nbsp;" );
+        pw.println( "</FONT></TD>" );
+        pw.println( "</TR>" );
+        pw.println( "</TABLE>" );
+        if ( top )
+        {
+            pw.println( "<A NAME=\"skip-navbar_top\"></A>" );
+        }
+        else
+        {
+            pw.println( "<A NAME=\"skip-navbar_bottom\"></A>" );
+        }
     }
 
     /**
@@ -974,33 +1165,70 @@
 
         pw.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" "
             + "\"http://www.w3.org/TR/html4/loose.dtd\">" );
-        pw.println( "<html>" );
-        pw.println( "<head>" );
-        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions()
-            .getDocencoding() : System.getProperty( "file.encoding" ) );
-        pw.println( "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" + encoding + "\">" );
-        pw.println( "<title>Overview</title>" );
-        pw.println( "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">" );
-        pw.println( "</head>" );
-        pw.println( "<body>" );
+        pw.println( "<HTML>" );
+        pw.println( "<HEAD>" );
+        pw.println( getGeneratedBy() );
+        String encoding = ( StringUtils.isNotEmpty( getOptions().getDocencoding() ) ? getOptions().getDocencoding()
+                                                                                   : DEFAULT_DOCENCODING );
+        pw.println( "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=" + encoding + "\">" );
+        if ( StringUtils.isNotEmpty( getOptions().getWindowtitle() ) )
+        {
+            pw.println( "<TITLE>Overview (" + getOptions().getWindowtitle() + ")</TITLE>" );
+            pw.println( "<META NAME=\"keywords\" CONTENT=\"Overview, " + getOptions().getWindowtitle() + "\">" );
+        }
+        else
+        {
+            pw.println( "<TITLE>Overview Summary</TITLE>" );
+        }
+        pw.println( "<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"styles.css\" TITLE=\"Style\">" );
+        pw.println( "<SCRIPT TYPE=\"text/javascript\">" );
+        pw.println( "<!--" );
+        pw.println( "function windowTitle()" );
+        pw.println( "{" );
+        if ( StringUtils.isNotEmpty( getOptions().getWindowtitle() ) )
+        {
+            pw.println( "    parent.document.title=\"Overview (" + getOptions().getWindowtitle() + ")\";" );
+        }
+        else
+        {
+            pw.println( "    parent.document.title=\"Overview Summary\";" );
+        }
+        pw.println( "}" );
+        pw.println( "//-->" );
+        pw.println( "</SCRIPT>" );
+        pw.println( "</HEAD>" );
+
+        pw.println( "" );
 
+        pw.println( "<BODY BGCOLOR=\"white\" ONLOAD=\"windowTitle();\">" );
+
+        pw.println( "" );
+        pw.println( "<!-- ========= START OF TOP NAVBAR ======= -->" );
         if ( StringUtils.isNotEmpty( getOptions().getTop() ) )
         {
             pw.println( getOptions().getTop() );
-            pw.println( "<hr>" );
+            pw.println( "<HR>" );
         }
+        createOverviewSummaryFrameExtras( pw, true );
+        pw.println( "<!-- ========= END OF TOP NAVBAR ========= -->" );
 
-        createOverviewSummaryFrameExtras( pw );
-
-        pw.println( "<h2>" + getOptions().getDoctitle() + "</h2>" );
-
-        pw.println( "<table class=\"summary\">" );
-        pw.println( "<thead>" );
-        pw.println( "<tr>" );
-        pw.println( "<th>Packages</th>" );
-        pw.println( "</tr>" );
-        pw.println( "</thead>" );
-        pw.println( "<tbody>" );
+        pw.println( "<HR>" );
+        pw.println( "<CENTER>" );
+        if ( StringUtils.isNotEmpty( getOptions().getDoctitle() ) )
+        {
+            pw.println( "<H1>" + getOptions().getDoctitle() + "</H1>" );
+        }
+        else
+        {
+            pw.println( "<H1></H1>" );
+        }
+        pw.println( "</CENTER>" );
+        pw.println( "" );
+        pw.println( "<TABLE BORDER=\"1\" WIDTH=\"100%\" CELLPADDING=\"3\" CELLSPACING=\"0\" SUMMARY=\"\">" );
+        pw.println( "<TR BGCOLOR=\"#CCCCFF\" CLASS=\"TableHeadingColor\">" );
+        pw.println( "<TH ALIGN=\"left\" COLSPAN=\"2\"><FONT SIZE=\"+2\">" );
+        pw.println( "<B>Packages</B></FONT></TH>" );
+        pw.println( "</TR>" );
 
         Iterator iter = packageNames.iterator();
         while ( iter.hasNext() )
@@ -1008,45 +1236,109 @@
             String packageName = (String) iter.next();
             String packageFileName = packageName.replace( '.', '/' ) + '/' + "package-summary.html";
 
-            pw.println( "<tr>" );
-            pw.println( "<td>" );
-            pw.println( "<a href=\"" + packageFileName + "\">" + packageName + "</a>" );
-            pw.println( "</td>" );
-            pw.println( "</tr>" );
-        }
-
-        pw.println( "</tbody>" );
-        pw.println( "</table>" );
+            pw.println( "<TR BGCOLOR=\"white\" CLASS=\"TableRowColor\">" );
+            pw.println( "<TD WIDTH=\"20%\"><B><A HREF=\"" + packageFileName + "\">" + packageName + "</A></B></TD>" );
+            pw.println( "<TD>&nbsp;</TD>" );
+            pw.println( "</TR>" );
+        }
+        pw.println( "</TABLE>" );
+
+        pw.println( "" );
+        pw.println( "<P>&nbsp;</P><HR>" );
+
+        pw.println( "<!-- ========= START OF BOTTOM NAVBAR ======= -->" );
+        createOverviewSummaryFrameExtras( pw, false );
+        pw.println( "<!-- ========= END OF BOTTOM NAVBAR ======= -->" );
 
-        createOverviewSummaryFrameExtras( pw );
-        pw.println( "<hr>" );
         if ( StringUtils.isNotEmpty( getOptions().getBottom() ) )
         {
-            pw.println( "<div class=\"bottom\">" );
+            pw.println( "<HR>" );
             pw.println( getOptions().getBottom() );
-            pw.println( "</div>" );
         }
-        pw.println( "</body></html>" );
+
+        pw.println( "</BODY>" );
+        pw.println( "</HTML>" );
         pw.close();
     }
 
-    private void createOverviewSummaryFrameExtras( PrintWriter pw )
+    private void createOverviewSummaryFrameExtras( PrintWriter pw, boolean top )
     {
-        pw.println( "<div class=\"overview\">" );
-        pw.println( "<ul>" );
-        pw.println( "<li class=\"selected\">Overview</li>" );
-        pw.println( "<li>Package</li>" );
-        pw.println( "</ul>" );
-        pw.println( "</div>" );
-        pw.println( "<div class=\"framenoframe\">" );
-        pw.println( "<ul>" );
-        pw.println( "<li>" );
-        pw.println( "<a href=\"index.html\" target=\"_top\">FRAMES</a>" );
-        pw.println( "</li>" );
-        pw.println( "<li>" );
-        pw.println( "<a href=\"overview-summary.html\" target=\"_top\">NO FRAMES</a>" );
-        pw.println( "</li>" );
-        pw.println( "</ul>" );
-        pw.println( "</div>" );
+        if ( top )
+        {
+            pw.println( "<A NAME=\"navbar_top\"><!-- --></A>" );
+            pw.println( "<A HREF=\"#skip-navbar_top\" TITLE=\"Skip navigation links\"></A>" );
+        }
+        else
+        {
+            pw.println( "<A NAME=\"navbar_bottom\"><!-- --></A>" );
+            pw.println( "<A HREF=\"#skip-navbar_bottom\" TITLE=\"Skip navigation links\"></A>" );
+        }
+        pw.println( "<TABLE BORDER=\"0\" WIDTH=\"100%\" CELLPADDING=\"1\" CELLSPACING=\"0\" SUMMARY=\"\">" );
+        pw.println( "<TR>" );
+        pw.println( "<TD COLSPAN=\"2\" BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        if ( top )
+        {
+            pw.println( "<A NAME=\"navbar_top_firstrow\"><!-- --></A>" );
+        }
+        else
+        {
+            pw.println( "<A NAME=\"navbar_bottom_firstrow\"><!-- --></A>" );
+        }
+        pw.println( "<TABLE BORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"3\" SUMMARY=\"\">" );
+        pw.println( "  <TR ALIGN=\"center\" VALIGN=\"top\">" );
+        pw.println( "  <TD BGCOLOR=\"#FFFFFF\" CLASS=\"NavBarCell1Rev\">"
+            + "<FONT CLASS=\"NavBarFont1Rev\"><B>Overview</B></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "     &nbsp;<FONT CLASS=\"NavBarFont1\">Package</FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "     &nbsp;<FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "     &nbsp;<FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "     &nbsp;<FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "     &nbsp;<FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "     &nbsp;<FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  <TD BGCOLOR=\"#EEEEFF\" CLASS=\"NavBarCell1\">" );
+        pw.println( "     &nbsp;<FONT CLASS=\"NavBarFont1\"></FONT>&nbsp;</TD>" );
+        pw.println( "  </TR>" );
+        pw.println( "</TABLE>" );
+        pw.println( "</TD>" );
+        pw.println( "<TD ALIGN=\"right\" VALIGN=\"top\" ROWSPAN=\"3\"><EM>" );
+        if ( top )
+        {
+            if ( StringUtils.isNotEmpty( getOptions().getHeader() ) )
+            {
+                pw.println( getOptions().getHeader() );
+            }
+        }
+        else
+        {
+            if ( StringUtils.isNotEmpty( getOptions().getFooter() ) )
+            {
+                pw.println( getOptions().getFooter() );
+            }
+        }
+        pw.println( "</EM>" );
+        pw.println( "</TD>" );
+        pw.println( "</TR>" );
+        pw.println( "" );
+        pw.println( "<TR>" );
+        pw.println( "<TD BGCOLOR=\"white\" CLASS=\"NavBarCell2\"><FONT SIZE=\"-2\">&nbsp;&nbsp;&nbsp;</FONT></TD>" );
+        pw.println( "<TD BGCOLOR=\"white\" CLASS=\"NavBarCell2\"><FONT SIZE=\"-2\">" );
+        pw.println( "  <A HREF=\"index.html\" target=\"_top\"><B>FRAMES</B></A>  &nbsp;" );
+        pw.println( "&nbsp;<A HREF=\"overview-summary.html\" TARGET=\"_top\"><B>NO FRAMES</B></A>  &nbsp;" );
+        pw.println( "</FONT></TD>" );
+        pw.println( "</TR>" );
+        pw.println( "</TABLE>" );
+        if ( top )
+        {
+            pw.println( "<A NAME=\"skip-navbar_top\"></A>" );
+        }
+        else
+        {
+            pw.println( "<A NAME=\"skip-navbar_bottom\"></A>" );
+        }
     }
 }

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/resources/org/apache/maven/jxr/java/src/css/styles.css
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/resources/org/apache/maven/jxr/java/src/css/styles.css?rev=588626&r1=588625&r2=588626&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/resources/org/apache/maven/jxr/java/src/css/styles.css (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/resources/org/apache/maven/jxr/java/src/css/styles.css Fri Oct 26 05:31:29 2007
@@ -15,124 +15,64 @@
 * limitations under the License.
 */
 /* Javadoc style sheet */
-/* Define colors, fonts and other style attributes here to override the defaults  */
-body { 
-	background-color: #fff;
-	font-family: Arial, Helvetica, sans-serif;
-}
-
-a:link { color: #00f;}
-a:visited { color: #00a;}
-a:active, a:hover { color: #f30 !important;}
-
-ul, li	{
-	list-style-type:none ;
-	margin:0;
-	padding:0;
-}
-
-table td{
-	padding: 3px;
-	border: 1px solid #000;
-}
-table{
-	width:100%;
-	border: 1px solid #000;
-	border-collapse: collapse;
-}
-
-div.overview {
-	background-color:#ddd;
-	padding: 4px 4px 4px 0;
-}
-div.overview li, div.framenoframe li {
-	display: inline;
-}
-div.framenoframe {
-	text-align: center;
-	font-size: x-small;
-}
-div.framenoframe li {
-	margin: 0 3px 0 3px;
-}
-div.overview li {
-	margin:3px 3px 0 3px;
-	padding: 4px;
-}
-li.selected {
-	background-color:#888;
-	color: #fff;
-	font-weight: bold;
-}
-
-table.summary {
-	margin-bottom: 20px;
-}
-table.summary td, table.summary th {
-	font-weight: bold;
-	text-align: left;
-	padding: 3px;
-}
-table.summary th{
-	background-color:#036;
-	color: #fff;
-}
-table.summary td{
-	background-color:#eee;
-	border: 1px solid black;
-}
-
-em {
-	color: #A00;
-}
-em.comment {
-	color: #390;
-}
-.string {
-	color: #009;
-}
-div#footer {
-	text-align:center;
-}
-#overview {
-	padding:2px;
-}
-            
-            
-hr {
-	height: 1px;
-	color: #000;
-}
-.comment   { color:#007d00; font-style:italic } 
-.linenum   { color:#888 font-weight:normal; } 
-.textDiv   { font-weight:bold } 
-
-.packageListItem { margin:0; padding:0; border:0 } 
-.packageName {  font-weight:bold } 
-
-.classDef  { color:#875b37;font-weight:bold } 
-.classRef  { color:#875b37;font-weight:normal; } 
-.classListItem  {  margin:0; padding:0; border:0 } 
-.classReflist         { border-bottom:solid } 
-.classReflistHeader   { font-weight:bold; border:0; margin:0; padding:0 } 
-.classRefItem         { margin:0; padding:0; border:0 } 
-p.classRefItem a        { color:#875b37 } 
-p.classReflistHeader a  { color:#875b37 } 
-
-
-.methodDef { color:#377587;font-weight:bold } 
-.methodRef { color:#377587;font-weight:normal } 
-.methodReflist         { } 
-.methodReflistHeader   { font-weight:bold; border:0; margin:0; padding:0} 
-.methodRefItem         { margin:0; padding:0; border:0; color:#009 } 
-p.methodRefItem a        { color:#377587 } 
-p.methodReflistHeader a  { color:#377587 } 
-
-
-.varDef    { color:#232187;font-weight:bold } 
-.varRef    { color:#232187;font-weight:normal } 
-.variableReflist         { } 
-.variableReflistHeader   { color:#000000;font-weight:bold;  border:0; margin:0; padding:0} 
-.variableRefItem         { margin:0; padding:0; border:0; color:#660 } 
-p.variableRefItem a        { color:#232187; } 
-p.variableRefListheader a  { color:#232187; } 
+
+/* Define colors, fonts and other style attributes here to override the defaults */
+
+/* Page background color */
+body { background-color: #FFFFFF }
+
+/* Headings */
+h1 { font-size: 145% }
+
+/* Table colors */
+.TableHeadingColor     { background: #CCCCFF } /* Dark mauve */
+.TableSubHeadingColor  { background: #EEEEFF } /* Light mauve */
+.TableRowColor         { background: #FFFFFF } /* White */
+
+/* Font used in left-hand frame lists */
+.FrameTitleFont   { font-size: 100%; font-family: Helvetica, Arial, sans-serif }
+.FrameHeadingFont { font-size:  90%; font-family: Helvetica, Arial, sans-serif }
+.FrameItemFont    { font-size:  90%; font-family: Helvetica, Arial, sans-serif }
+
+/* Navigation bar fonts and colors */
+.NavBarCell1    { background-color:#EEEEFF;} /* Light mauve */
+.NavBarCell1Rev { background-color:#00008B;} /* Dark Blue */
+.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;}
+.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
+
+.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
+
+/* JavaSrc style sheet */
+.comment   { color:#007d00; font-style:italic }
+.linenum   { color:#888 font-weight:normal; }
+.string { color: #009;}
+.keywords { color: #7f0055;}
+
+.packageListItem { margin:0; padding:0; border:0 }
+.packageName {  font-weight:bold }
+
+.classDef  { color:#875b37;font-weight:bold }
+.classRef  { color:#875b37;font-weight:normal; }
+.classListItem  {  margin:0; padding:0; border:0 }
+.classReflist         { border-bottom:solid }
+.classReflistHeader   { font-weight:bold; border:0; margin:0; padding:0 }
+.classRefItem         { margin:0; padding:0; border:0 }
+p.classRefItem a        { color:#875b37 }
+p.classReflistHeader a  { color:#875b37 }
+
+.methodDef { color:#377587;font-weight:bold }
+.methodRef { color:#377587;font-weight:normal }
+.methodReflist         { }
+.methodReflistHeader   { font-weight:bold; border:0; margin:0; padding:0}
+.methodRefItem         { margin:0; padding:0; border:0; color:#009 }
+p.methodRefItem a        { color:#377587 }
+p.methodReflistHeader a  { color:#377587 }
+
+.varDef    { color:#232187;font-weight:bold }
+.varRef    { color:#232187;font-weight:normal }
+.variableReflist         { }
+.variableReflistHeader   { color:#000000;font-weight:bold;  border:0; margin:0; padding:0}
+.variableRefItem         { margin:0; padding:0; border:0; color:#660 }
+p.variableRefItem a        { color:#232187; }
+p.variableRefListheader a  { color:#232187; }