You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jv...@apache.org on 2004/04/14 22:34:16 UTC

cvs commit: maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/navigation Item.java Link.java Menu.java Navigation.java

jvanzyl     2004/04/14 13:34:16

  Modified:    maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc
                        XdocPlugin.java
               maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render
                        DefaultXMLWriter.java DefaultXdocRenderer.java
                        XMLWriter.java XdocRenderer.java
                        Xpp3DomBuilder.java
  Added:       maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element
                        BodyElementRenderer.java
                        DefaultElementRenderer.java DocumentRenderer.java
                        PropertiesRenderer.java SectionRenderer.java
                        SourceRenderer.java SubsectionRenderer.java
                        TableRenderer.java TableRowRenderer.java
               maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/navigation
                        Item.java Link.java Menu.java Navigation.java
  Log:
  o reworking to break out each renderer into its own source file.
  
  Revision  Changes    Path
  1.7       +3 -1      maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/XdocPlugin.java
  
  Index: XdocPlugin.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/XdocPlugin.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XdocPlugin.java	12 Apr 2004 23:44:28 -0000	1.6
  +++ XdocPlugin.java	14 Apr 2004 20:34:15 -0000	1.7
  @@ -69,6 +69,8 @@
               catch ( Exception e )
               {
                   System.out.println( "error rendering: " + file );
  +
  +                e.printStackTrace();
               }
           }
   
  
  
  
  1.3       +12 -2     maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/DefaultXMLWriter.java
  
  Index: DefaultXMLWriter.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/DefaultXMLWriter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultXMLWriter.java	8 Apr 2004 02:45:58 -0000	1.2
  +++ DefaultXMLWriter.java	14 Apr 2004 20:34:15 -0000	1.3
  @@ -39,11 +39,21 @@
           tagIsEmpty = false;
           finishTag();
   
  -        // We might have to revisit this but for elements with embedded html we
  -        // don't want to escape the characters.
  +        write( text );
  +    }
  +
  +    public void writeEscapedText( String text )
  +    {
  +        readyForNewLine = false;
  +
  +        tagIsEmpty = false;
  +
  +        finishTag();
   
           text = text.replaceAll( "&", "&" );
  +
           text = text.replaceAll( "<", "&lt;" );
  +
           text = text.replaceAll( ">", "&gt;" );
   
           write( text );
  
  
  
  1.8       +28 -1065  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/DefaultXdocRenderer.java
  
  Index: DefaultXdocRenderer.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/DefaultXdocRenderer.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DefaultXdocRenderer.java	8 Apr 2004 14:39:40 -0000	1.7
  +++ DefaultXdocRenderer.java	14 Apr 2004 20:34:15 -0000	1.8
  @@ -1,26 +1,25 @@
   package org.apache.maven.xdoc.render;
   
   import org.apache.maven.project.MavenProject;
  -import org.codehaus.plexus.util.StringUtils;
  +import org.apache.maven.xdoc.render.element.BodyElementRenderer;
  +import org.apache.maven.xdoc.render.element.DefaultElementRenderer;
  +import org.apache.maven.xdoc.render.element.DocumentRenderer;
  +import org.apache.maven.xdoc.render.element.XdocElementRenderer;
  +import org.apache.maven.xdoc.render.element.PropertiesRenderer;
  +import org.apache.maven.xdoc.render.element.SectionRenderer;
  +import org.apache.maven.xdoc.render.element.SourceRenderer;
  +import org.apache.maven.xdoc.render.element.SubsectionRenderer;
  +import org.apache.maven.xdoc.render.element.TableRenderer;
  +import org.apache.maven.xdoc.render.element.TableRowRenderer;
   
   import java.io.File;
   import java.io.FileReader;
   import java.io.FileWriter;
  -import java.util.ArrayList;
  -import java.util.Calendar;
  -import java.util.Date;
   import java.util.HashMap;
  -import java.util.HashSet;
  -import java.util.Iterator;
  -import java.util.List;
   import java.util.Map;
  -import java.util.Set;
   
   /**
  - *
  - *
    * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
  - *
    * @version $Id$
    */
   public class DefaultXdocRenderer
  @@ -33,111 +32,32 @@
       public DefaultXdocRenderer()
           throws Exception
       {
  -        // Set up the Map that instructs the dom builder which elements
  -        // are handled here.
  +        builder = new Xpp3DomBuilder();
   
           renderers = new HashMap();
   
  -        renderers.put( "document", new DocumentRenderer() );
  +        renderers.put( "document", new DocumentRenderer( this ) );
   
  -        renderers.put( "section", new SectionRenderer() );
  +        renderers.put( "section", new SectionRenderer( this ) );
   
  -        renderers.put( "subsection", new SubsectionRenderer() );
  +        renderers.put( "subsection", new SubsectionRenderer( this ) );
   
  -        renderers.put( "body", new BodyRenderer() );
  +        renderers.put( "body", new BodyElementRenderer( this, builder ) );
   
  -        renderers.put( "properties", new PropertiesRenderer() );
  -        
  -        renderers.put( "source", new SourceRenderer() );
  +        renderers.put( "properties", new PropertiesRenderer( this ) );
   
  -        renderers.put( "table", new TableRenderer() );
  +        renderers.put( "source", new SourceRenderer( this ) );
   
  -        renderers.put( "tr", new TableRowRenderer() );
  +        renderers.put( "table", new TableRenderer( this ) );
   
  -        renderers.put( "default", new DefaultElementRenderer() );
  -
  -        // These are the elements we take care of renderering
  -
  -        Set elements = new HashSet();
  -        
  -        elements.add( "a" );
  -
  -        elements.add( "search" );
  -
  -        elements.add( "title" );
  -
  -        elements.add( "author" );
  -
  -        elements.add( "links" );
  -
  -        elements.add( "project" );
  -
  -        elements.add( "item" );
  -
  -        elements.add( "menu" );
  -
  -        elements.add( "p" );
  -
  -        elements.add( "td" );
  -
  -        elements.add( "th" );
  -
  -        elements.add( "pre" );
  -
  -        for ( Iterator i = renderers.keySet().iterator(); i.hasNext(); )
  -        {
  -            elements.add( i.next() );
  -        }
  -
  -        builder = new Xpp3DomBuilder( elements );
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // Rendering context
  -    // ----------------------------------------------------------------------
  -
  -    class RenderingContext
  -    {
  -        String basedir;
  -
  -        String relativePath;
  -
  -        String outputName;
  -
  -        MavenProject project;
  -
  -        String outputDirectory;
  -
  -        public RenderingContext( String basedir, MavenProject project, String outputDirectory, String relativePath, String outputName )
  -        {
  -            this.basedir = basedir;
  -
  -            this.relativePath = relativePath;
  -
  -            // For navigation comparisons we'll prepend a "/"
  -            this.outputName = "/" + outputName;
  -
  -            this.project = project;
  -
  -            this.outputDirectory = outputDirectory;
  -        }
  -
  -        // Elements we need out of the POM
  -        //
  -        // #project.getName()
  -        // #project.getUrl()
  -        // #project.getLogo()
  -        // #project.getInceptionYear()
  -        // #project.getOrganization().getName()
  -        // #project.getOrganization().getUrl()
  -        // #project.getOrganization().getLogo()
  +        renderers.put( "tr", new TableRowRenderer( this ) );
   
  +        renderers.put( "default", new DefaultElementRenderer( this ) );
       }
   
       public void render( String xdoc, String basedir, MavenProject project, String outputDirectory )
           throws Exception
       {
  -
           String relativePath = PathTool.getRelativePath( basedir, new File( basedir, xdoc ).getPath() );
   
           File in = new File( basedir, xdoc );
  @@ -161,8 +81,6 @@
   
           RenderingContext renderingContext = new RenderingContext( basedir, project, outputDirectory, relativePath, outputName );
   
  -        unmarshallNavigation( renderingContext );
  -
           renderElement( document, xmlWriter, renderingContext );
   
           writer.flush();
  @@ -170,984 +88,29 @@
           writer.close();
       }
   
  -    // ----------------------------------------------------------------------
  -    // Document
  -    // ----------------------------------------------------------------------
  -
  -    class DocumentRenderer
  -        implements ElementRenderer
  -    {
  -        public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -        {
  -            // -- html
  -            writer.startElement( "html" );
  -
  -            // -- head
  -            writer.startElement( "head" );
  -
  -            // -- title
  -            writer.startElement( "title" );
  -
  -            writer.writeText( element.getChild( "properties" ).getChild( "title" ).getValue() );
  -
  -            // -- title
  -            writer.endElement();
  -
  -            // -- style
  -            writer.startElement( "style" );
  -
  -            writer.addAttribute( "type", "text/css" );
  -
  -            writer.addAttribute( "media", "all" );
  -
  -            writer.writeText( "@import url(\"" + renderingContext.relativePath + "/style/maven-base.css\");" );
  -
  -            writer.writeText( "@import url(\"" + renderingContext.relativePath + "/style/maven-theme.css\");" );
  -
  -            writer.endElement();
  -
  -            writer.startElement( "link" );
  -
  -            writer.addAttribute( "rel", "stylesheet" );
  -
  -            writer.addAttribute( "type", "text/css" );
  -
  -            writer.addAttribute( "href", renderingContext.relativePath + "/style/print.css" );
  -
  -            writer.addAttribute( "media", "print" );
  -
  -            writer.endElement();
  -
  -            // -- meta
  -            renderElement( element.getChild( "properties" ), writer, renderingContext );
  -
  -            // -- head
  -            writer.endElement();
  -
  -            renderElement( element.getChild( "body" ), writer, renderingContext );
  -
  -            // -- html
  -            writer.endElement();
  -        }
  -    }
  -
  -    private void renderChildren( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -    {
  -        int children = element.getChildCount();
  -
  -        for ( int i = 0; i < children; i++ )
  -        {
  -            renderElement( element.getChild( i ), writer, renderingContext );
  -        }
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // Body renderer
  -    // ----------------------------------------------------------------------
  -
  -
  -    class BodyRenderer
  -        implements ElementRenderer
  -    {
  -        public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -        {
  -            writer.startElement( "body" );
  -
  -            banner( writer, renderingContext );
  -
  -            breadCrumbs( navigationElement, writer, renderingContext );
  -
  -            writer.startElement( "table" );
  -
  -            writer.addAttribute( "border", "0" );
  -
  -            writer.addAttribute( "width", "100%" );
  -
  -            writer.addAttribute( "cellpadding", "8" );
  -
  -            writer.addAttribute( "cellspacing", "0" );
  -
  -            writer.addAttribute( "id", "layout" );
  -
  -            writer.startElement( "tr" );
  -
  -            writer.addAttribute( "valign", "top" );
  -
  -            // ----------------------------------------------------------------------
  -            //
  -            // ----------------------------------------------------------------------
  -
  -            navigation( navigationElement, writer, renderingContext );
  -
  -            // ----------------------------------------------------------------------
  -            //
  -            // ----------------------------------------------------------------------
  -
  -            writer.startElement( "td" );
  -
  -            writer.addAttribute( "rowspan", "2" );
  -
  -            writer.startElement( "div" );
  -
  -            writer.addAttribute( "id", "bodyColumn" );
  -
  -            writer.startElement( "div" );
  -
  -            writer.addAttribute( "class", "contentBox" );
  -
  -            renderChildren( element, writer, renderingContext );
  -
  -            writer.endElement();
  -
  -            writer.endElement();
  -
  -            // ----------------------------------------------------------------------
  -            //
  -            // ----------------------------------------------------------------------
  -
  -            writer.endElement();
  -
  -            writer.endElement();
  -
  -            writer.endElement();
  -
  -            // ----------------------------------------------------------------------
  -            //
  -            // ----------------------------------------------------------------------
  -
  -            footer( writer, renderingContext );
  -
  -            // ----------------------------------------------------------------------
  -            //
  -            // ----------------------------------------------------------------------
  -
  -            writer.endElement();
  -        }
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // Properties renderer
  -    // ----------------------------------------------------------------------
  -
  -    class PropertiesRenderer
  -        implements ElementRenderer
  -    {
  -        public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -        {
  -            int children = element.getChildCount();
  -
  -            for ( int i = 0; i < children; i++ )
  -            {
  -                Xpp3Dom child = element.getChild( i );
  -
  -                if ( child.getName().equals( "author" ) )
  -                {
  -                    writer.startElement( "meta" );
  -
  -                    writer.addAttribute( "name", "author" );
  -
  -                    writer.addAttribute( "content", child.getValue() );
  -
  -                    writer.endElement();
  -
  -                    writer.startElement( "meta" );
  -
  -                    writer.addAttribute( "name", "email" );
  -
  -                    writer.addAttribute( "content", child.getAttribute( "email" ) );
  -
  -                    writer.endElement();
  -                }
  -            }
  -        }
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // Section Renderer
  -    // ----------------------------------------------------------------------
  -
  -    class SectionRenderer
  -        implements ElementRenderer
  -    {
  -        public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -        {
  -            writer.startElement( "div" );
  -
  -            writer.addAttribute( "class", "section" );
  -
  -            writer.startElement( "div" );
  -
  -            writer.addAttribute( "class", "sectionTitle" );
  -
  -            writer.startElement( "a" );
  -
  -            String sectionName = element.getAttribute( "name" );
  -
  -            writer.addAttribute( "name", StringUtils.replace( sectionName, " ", "_" ) );
  -
  -            writer.writeText( sectionName );
  -
  -            writer.endElement();
  -
  -            writer.endElement();
  -
  -            renderChildren( element, writer, renderingContext );
  -
  -            writer.endElement();
  -        }
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // Section Renderer
  -    // ----------------------------------------------------------------------
  -
  -    class SubsectionRenderer
  -        implements ElementRenderer
  -    {
  -        public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -        {
  -            writer.startElement( "div" );
  -
  -            writer.addAttribute( "class", "subsection" );
  -
  -            writer.startElement( "h3" );
  -
  -            writer.writeText( element.getAttribute( "name" ) );
  -
  -            writer.endElement();
  -
  -            renderChildren( element, writer, renderingContext );
  -
  -            writer.endElement();
  -        }
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // Table Renderer
  -    // ----------------------------------------------------------------------
  -
  -    private void poweredBy( XMLWriter writer, RenderingContext renderingContext )
  -    {
  -        writer.startElement( "div" );
  -
  -        writer.addAttribute( "style", "margin-top: 20px; width: 100%; text-align: center;" );
  -
  -        writer.startElement( "a" );
  -
  -        writer.addAttribute( "href", "http://maven.apache.org" );
  -
  -        writer.startElement( "img" );
  -
  -        writer.addAttribute( "alt", "Built By Maven" );
  -
  -        writer.addAttribute( "src", renderingContext.relativePath + "/images/maven-button-1.png" );
  -
  -        writer.addAttribute( "id", "poweredBy" );
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -    }
  -
  -    private void search( XMLWriter writer, RenderingContext renderingContext )
  -    {
  -        writer.startElement( "div" );
  -
  -        writer.addAttribute( "id", "search" );
  -
  -        writer.startElement( "h5" );
  -
  -        writer.writeText( renderingContext.project.getName() );
  -
  -        writer.endElement();
  -
  -        writer.startElement( "form" );
  -
  -        writer.addAttribute( "method", "get" );
  -
  -        writer.addAttribute( "action", "http://www.google.com/search" );
  -
  -        writer.startElement( "a" );
  -
  -        writer.addAttribute( "class", "navlink" );
  -
  -        writer.addAttribute( "href", "http://www.google.com" );
  -
  -        writer.startElement( "img" );
  -
  -        writer.addAttribute( "src", "http://www.google.com/logos/Logo_25wht.gif" );
  -
  -        writer.addAttribute( "width", "75" );
  -
  -        writer.addAttribute( "height", "32" );
  -
  -        writer.addAttribute( "alt", "Google" );
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        String siteUrl = renderingContext.project.getUrl();
  -
  -        if ( siteUrl.endsWith( "/" ) )
  -        {
  -            siteUrl = StringUtils.chop( siteUrl );
  -        }
  -
  -        //--
  -
  -        writer.startElement( "input" );
  -
  -        writer.addAttribute( "type", "text" );
  -
  -        writer.addAttribute( "id", "q" );
  -
  -        writer.addAttribute( "size", "15" );
  -
  -        writer.addAttribute( "name", "q" );
  -
  -        writer.addAttribute( "maxlength", "255" );
  -
  -        writer.addAttribute( "value", "" );
  -
  -        writer.endElement();
  -
  -        //--
  -
  -        writer.startElement( "input" );
  -
  -        writer.addAttribute( "type", "submit" );
  -
  -        writer.addAttribute( "id", "btnG" );
  -
  -        writer.addAttribute( "value", "Go" );
  -
  -        writer.addAttribute( "name", "btnG" );
  -
  -        writer.endElement();
  -
  -        //--
  -
  -        writer.startElement( "input" );
  -
  -        writer.addAttribute( "type", "hidden" );
  -
  -        writer.addAttribute( "name", "domains" );
  -
  -        writer.addAttribute( "value", siteUrl );
  -
  -        writer.endElement();
  -
  -        //--
  -
  -        writer.startElement( "input" );
  -
  -        writer.addAttribute( "type", "hidden" );
  -
  -        writer.addAttribute( "id", "search" );
  -
  -        writer.addAttribute( "name", "sitesearch" );
  -
  -        writer.addAttribute( "value", siteUrl );
  -
  -        writer.endElement();
  -
  -        //--
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // Source Renderer
  -    // ----------------------------------------------------------------------
  -
  -    class SourceRenderer
  -        implements ElementRenderer
  -    {
  -        public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -        {
  -            writer.startElement( "div" );
  -
  -            writer.addAttribute( "class", "source" );
  -
  -            writer.startElement( "pre" );
  -
  -            renderChildren( element, writer, renderingContext );
  -
  -            writer.endElement();
  -
  -            writer.endElement();
  -        }
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // Table Renderer
  -    // ----------------------------------------------------------------------
  -
  -    class TableRenderer
  -        implements ElementRenderer
  -    {
  -        public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -        {
  -            writer.startElement( "table" );
  -
  -            writer.addAttribute( "class", "bodyTable" );
  -
  -            renderChildren( element, writer, renderingContext );
  -
  -            writer.endElement();
  -        }
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // Table row renderer
  -    // ----------------------------------------------------------------------
  -
  -    class TableRowRenderer
  -        implements ElementRenderer
  -    {
  -        private boolean mode;
  -
  -        public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -        {
  -            writer.startElement( "tr" );
  -
  -            if ( mode )
  -            {
  -                writer.addAttribute( "class", "b" );
  -
  -                mode = false;
  -            }
  -            else
  -            {
  -                writer.addAttribute( "class", "a" );
  -
  -                mode = true;
  -            }
  -
  -            renderChildren( element, writer, renderingContext );
  -
  -            writer.endElement();
  -        }
  -    }
  -
  -    private void banner( XMLWriter writer, RenderingContext renderingContext )
  -    {
  -        writer.startElement( "div" );
  -
  -        writer.addAttribute( "id", "banner" );
  -
  -        writer.startElement( "table" );
  -
  -        writer.startElement( "tr" );
  -
  -        // ----------------------------------------------------------------------
  -        // Organization logo
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "td" );
  -
  -        writer.startElement( "a" );
  -
  -        writer.addAttribute( "href", renderingContext.project.getOrganization().getUrl() );
  -
  -        writer.startElement( "img" );
  -
  -        writer.addAttribute( "border", "0" );
  -
  -        writer.addAttribute( "src", renderingContext.relativePath + renderingContext.project.getOrganization().getLogo() );
  -
  -        writer.addAttribute( "alt", renderingContext.project.getOrganization().getName() );
  -
  -        writer.addAttribute( "align", "left" );
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        // Project logo
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "td" );
  -
  -        writer.startElement( "a" );
  -
  -        writer.addAttribute( "href", renderingContext.project.getUrl() );
  -
  -        writer.startElement( "img" );
  -
  -        writer.addAttribute( "border", "0" );
  -
  -        writer.addAttribute( "src", renderingContext.relativePath + renderingContext.project.getLogo() );
  -
  -        writer.addAttribute( "alt", renderingContext.project.getName() );
  -
  -        writer.addAttribute( "align", "right" );
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -    }
  -
  -    private void breadCrumbs( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -    {
  -        writer.startElement( "div" );
  -
  -        writer.addAttribute( "id", "breadcrumbs" );
  -
  -        writer.startElement( "table" );
  -
  -        writer.startElement( "tr" );
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "td" );
  -
  -        writer.writeText( "Last published: " + new Date() + " | Doc for " + renderingContext.project.getVersion() );
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.startElement( "td" );
  -
  -        writer.startElement( "div" );
  -
  -        writer.addAttribute( "align", "right" );
  -
  -        int links = navigation.links.size();
  -
  -        for ( int i = 0; i < links; i++ )
  -        {
  -            Link link = (Link) navigation.links.get( i );
  -
  -            writer.startElement( "a" );
  -
  -            writer.addAttribute( "href", link.href );
  -
  -            writer.writeText( link.name );
  -
  -            if ( i != ( links - 1 ) )
  -            {
  -                writer.writeText( " | " );
  -            }
  -
  -            writer.endElement();
  -        }
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        // ----------------------------------------------------------------------
  -        //
  -        // ----------------------------------------------------------------------
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -    }
  -
  -    private void navigation( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -    {
  -        writer.startElement( "td" );
  -
  -        writer.addAttribute( "width", "20%" );
  -
  -        writer.addAttribute( "id", "leftColumn" );
  -
  -        writer.startElement( "div" );
  -
  -        writer.addAttribute( "id", "navBox" );
  -
  -        int menus = navigation.menus.size();
  -
  -        for ( int i = 0; i < menus; i++ )
  -        {
  -            Menu menu = (Menu) navigation.menus.get( i );
  -
  -            writer.startElement( "div" );
  -
  -            writer.addAttribute( "class", "navSection" );
  -
  -            writer.startElement( "div" );
  -
  -            writer.addAttribute( "class", "navSectionHead" );
  -
  -            writer.writeText( menu.name );
  -
  -            writer.endElement();
  -
  -            int items = menu.items.size();
  -
  -            for ( int j = 0; j < items; j++ )
  -            {
  -                Item item = (Item) menu.items.get( j );
  -
  -                writeItem( item, writer, renderingContext );
  -            }
  -
  -            writer.endElement();
  -        }
  -
  -        if ( navigation.search )
  -        {
  -            //search( writer, renderingContext );
  -        }
  -
  -        poweredBy( writer, renderingContext );
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -    }
  -
  -    private void writeItem( Item item, XMLWriter writer, RenderingContext renderingContext )
  -    {
  -        writer.startElement( "div" );
  -
  -        writer.addAttribute( "class", "navLink" );
  -
  -        String href = item.href;
  -
  -        String collapse;
  -
  -        //boolean expandedNavigation = href.equals( renderingContext.outputName );
  -
  -        String currentGroup = (String) navigation.itemGroups.get( renderingContext.outputName );
  -
  -        if ( item.foldable )
  -        {
  -            // If we are outputting the page to which this item is referring
  -            // then we want to expand the list of items.
  -
  -            if ( item.group.equals( currentGroup ) )
  -            {
  -                collapse = "expanded";
  -            }
  -            else
  -            {
  -                collapse = "collapsed";
  -            }
  -        }
  -        else
  -        {
  -            collapse = "none";
  -        }
  -
  -        writer.addAttribute( "class", collapse );
  -
  -        if ( renderingContext.outputName.equals( href ) )
  -        {
  -            writer.startElement( "small" );
  -
  -            writer.startElement( "strong" );
  -
  -            writer.startElement( "a" );
  -
  -            writer.addAttribute( "href", PathTool.calculateLink( href, renderingContext.relativePath ) );
  -
  -            writer.writeText( item.name );
  -
  -            writer.endElement();
  -
  -            writer.endElement();
  -
  -            writer.endElement();
  -        }
  -        else
  -        {
  -            writer.startElement( "small" );
  -
  -            writer.startElement( "a" );
  -
  -            writer.addAttribute( "href", PathTool.calculateLink( href, renderingContext.relativePath ) );
  -
  -            writer.writeText( item.name );
  -
  -            writer.endElement();
  -
  -            writer.endElement();
  -        }
  -
  -        int count = item.items.size();
  -
  -
  -        for ( int i = 0; i < count; i++ )
  -        {
  -            Item subitem = (Item) item.items.get( i );
  -
  -            if ( subitem.group.equals( currentGroup ) )
  -            {
  -                writeItem( subitem, writer, renderingContext );
  -            }
  -        }
  -
  -        writer.endElement();
  -    }
  -
  -    private void footer( XMLWriter writer, RenderingContext renderingContext )
  -    {
  -        writer.startElement( "div" );
  -
  -        writer.addAttribute( "id", "footer" );
  -
  -        writer.startElement( "table" );
  -
  -        writer.startElement( "tr" );
  -
  -        writer.startElement( "td" );
  -
  -        String currentYear = Integer.toString( Calendar.getInstance().get( Calendar.YEAR ) );
  -
  -        String inceptionYear = renderingContext.project.getInceptionYear();
  -
  -        if ( inceptionYear != null )
  -        {
  -            if ( inceptionYear.equals( currentYear ) )
  -            {
  -                writer.writeText( "&#169; " + renderingContext.project.getInceptionYear() + ", " + renderingContext.project.getOrganization().getName() );
  -            }
  -            else
  -            {
  -                writer.writeText( "&#169; " + renderingContext.project.getInceptionYear() + "-" + currentYear + ", " + renderingContext.project.getOrganization().getName() );
  -            }
  -        }
  -        else
  -        {
  -            writer.writeText( "&#169; " + currentYear + ", " + renderingContext.project.getOrganization().getName() );
  -        }
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -
  -        writer.endElement();
  -    }
  -
  -    private void renderElement( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  +    public void renderElement( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  +        throws Exception
       {
           String name = element.getName();
   
  -        ElementRenderer renderer = (ElementRenderer) renderers.get( name );
  +        XdocElementRenderer renderer = (XdocElementRenderer) renderers.get( name );
   
           if ( renderer == null )
           {
  -            renderer = (ElementRenderer) renderers.get( "default" );
  +            renderer = (XdocElementRenderer) renderers.get( "default" );
           }
   
           renderer.render( element, writer, renderingContext );
       }
   
  -    interface ElementRenderer
  -    {
  -        void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext );
  -    }
  -
  -    class DefaultElementRenderer
  -        implements ElementRenderer
  -    {
  -        public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  -        {
  -            writer.startElement( element.getName() );
  -
  -            int children = element.getChildCount();
  -
  -            if ( children > 0 )
  -            {
  -                for ( int i = 0; i < children; i++ )
  -                {
  -                    renderElement( element.getChild( i ), writer, renderingContext );
  -                }
  -            }
  -            else
  -            {
  -                if ( element.getAttributes() != null )
  -                {
  -                    for ( Iterator i = element.getAttributes().keySet().iterator(); i.hasNext(); )
  -                    {
  -                        String key = (String) i.next();
  -
  -                        writer.addAttribute( key, element.getAttribute( key ) );
  -                    }
  -                }
  -
  -                if ( element.getValue() != null )
  -                {
  -                    writer.writeText( element.getValue() );
  -                }
  -            }
  -
  -            writer.endElement();
  -        }
  -    }
  -
  -    // ----------------------------------------------------------------------
  -    // Navigation
  -    // ----------------------------------------------------------------------
  -
  -    class Navigation
  -    {
  -        List menus = new ArrayList();
  -
  -        List links = new ArrayList();
  -
  -        boolean search;
  -
  -        Map itemGroups = new HashMap();
  -    }
  -
  -    class Link
  -    {
  -        String name;
  -
  -        String href;
  -    }
  -
  -    class Menu
  -    {
  -        String name;
  -
  -        List items = new ArrayList();
  -    }
  -
  -    class Item
  -    {
  -        String name;
  -
  -        String href;
  -
  -        boolean foldable;
  -
  -        String group;
  -
  -        List items = new ArrayList();
  -
  -        boolean itemsVisible()
  -        {
  -            return false;
  -        }
  -    }
  -
  -    Navigation navigation;
  -
  -    Xpp3Dom navigationElement;
  -
  -    private Item processItem( Xpp3Dom itemElement )
  -    {
  -        Item item = new Item();
  -
  -        item.name = itemElement.getAttribute( "name" );
  -
  -        item.href = itemElement.getAttribute( "href" );
  -
  -        item.group = item.name;
  -
  -        navigation.itemGroups.put( item.href, item.group );
  -
  -        if ( itemElement.getAttribute( "collapse" ) != null )
  -        {
  -            item.foldable = true;
  -        }
  -
  -        int items = itemElement.getChildCount();
  -
  -        for ( int i = 0; i < items; i++ )
  -        {
  -            Xpp3Dom subItemElement = itemElement.getChild( i );
  -
  -            Item subitem = processItem( subItemElement );
  -
  -            subitem.group = item.group;
  -
  -            navigation.itemGroups.put( subitem.href, subitem.group );
  -
  -            item.items.add( subitem );
  -        }
  -
  -        return item;
  -    }
  -
  -    private void unmarshallNavigation( RenderingContext renderingContext )
  +    public void renderChildren( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
           throws Exception
       {
  -        navigation = new Navigation();
  -
  -        navigationElement = builder.build( new FileReader( new File( renderingContext.basedir, "navigation.xml" ) ) );
  -
  -        Xpp3Dom body = navigationElement.getChild( "body" );
  -
  -        int children = body.getChildCount();
  +        int children = element.getChildCount();
   
           for ( int i = 0; i < children; i++ )
           {
  -            Xpp3Dom element = body.getChild( i );
  -
  -            if ( element.getName().equals( "menu" ) )
  -            {
  -                Menu menu = new Menu();
  -
  -                menu.name = element.getAttribute( "name" );
  -
  -                int items = element.getChildCount();
  -
  -                for ( int j = 0; j < items; j++ )
  -                {
  -                    Xpp3Dom itemElement = element.getChild( j );
  -
  -                    menu.items.add( processItem( itemElement ) );
  -                }
  -
  -                navigation.menus.add( menu );
  -            }
  -            else if ( element.getName().equals( "links" ) )
  -            {
  -                int count = element.getChildCount();
  -
  -                for ( int j = 0; j < count; j++ )
  -                {
  -                    Xpp3Dom item = element.getChild( j );
  -
  -                    Link link = new Link();
  -
  -                    link.name = item.getAttribute( "name" );
  -
  -                    link.href = item.getAttribute( "href" );
  -
  -                    navigation.links.add( link );
  -                }
  -            }
  -            else if ( element.getName().equals( "search" ) )
  -            {
  -                navigation.search = true;
  -            }
  +            renderElement( element.getChild( i ), writer, renderingContext );
           }
       }
   }
  
  
  
  1.2       +2 -0      maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/XMLWriter.java
  
  Index: XMLWriter.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/XMLWriter.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XMLWriter.java	7 Apr 2004 01:36:05 -0000	1.1
  +++ XMLWriter.java	14 Apr 2004 20:34:15 -0000	1.2
  @@ -8,5 +8,7 @@
   
       void writeText( String text );
   
  +    void writeEscapedText( String text );
  +
       void endElement();
   }
  
  
  
  1.2       +12 -1     maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/XdocRenderer.java
  
  Index: XdocRenderer.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/XdocRenderer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XdocRenderer.java	7 Apr 2004 01:36:05 -0000	1.1
  +++ XdocRenderer.java	14 Apr 2004 20:34:15 -0000	1.2
  @@ -1,5 +1,7 @@
   package org.apache.maven.xdoc.render;
   
  +import org.apache.maven.project.MavenProject;
  +
   /**
    *
    * 
  @@ -10,4 +12,13 @@
   public interface XdocRenderer
   {
       String ROLE = XdocRenderer.class.getName();
  +
  +    public void render( String xdoc, String basedir, MavenProject project, String outputDirectory )
  +        throws Exception;
  +
  +    public void renderElement( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  +        throws Exception;
  +
  +    public void renderChildren( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
  +        throws Exception;
   }
  
  
  
  1.2       +120 -76   maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/Xpp3DomBuilder.java
  
  Index: Xpp3DomBuilder.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/Xpp3DomBuilder.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Xpp3DomBuilder.java	7 Apr 2004 01:36:05 -0000	1.1
  +++ Xpp3DomBuilder.java	14 Apr 2004 20:34:15 -0000	1.2
  @@ -6,27 +6,14 @@
   import java.io.Reader;
   import java.util.ArrayList;
   import java.util.List;
  -import java.util.Set;
   
   public class Xpp3DomBuilder
   {
  -    private Set elements;
  -
  -    public Xpp3DomBuilder( Set elements )
  -    {
  -        this.elements = elements;
  -    }
  -
  -    // Check the element and if it's a standard html element
  -    // we'll just let it pass through as text.
  -    private boolean htmlElement( String rawName )
  -    {
  -        return !elements.contains( rawName );
  -    }
  -
       public Xpp3Dom build( Reader reader )
           throws Exception
       {
  +        int embeddedElementDepth = 0;
  +
           List elements = new ArrayList();
   
           List values = new ArrayList();
  @@ -45,15 +32,13 @@
           {
               if ( eventType == XmlPullParser.START_TAG )
               {
  -                String rawName = parser.getName();
  +                int depth = elements.size();
   
  -                if ( htmlElement( rawName ) )
  +                if ( isEmbeddedElement( elements, values ) )
                   {
  -                    int depth = values.size() - 1;
  -
  -                    StringBuffer valueBuffer = (StringBuffer) values.get( depth );
  +                    StringBuffer valueBuffer = (StringBuffer) values.get( depth - 1 );
   
  -                    valueBuffer.append( "<" ).append( rawName ).append( " " );
  +                    valueBuffer.append( "<" ).append( parser.getName() ).append( " " );
   
                       int attributesSize = parser.getAttributeCount();
   
  @@ -68,87 +53,77 @@
   
                       valueBuffer.append( ">" );
   
  -                    eventType = parser.next();
  -
  -                    continue;
  +                    embeddedElementDepth++;
                   }
  -
  -                Xpp3Dom childConfiguration = createConfiguration( rawName );
  -
  +                else
  +                {
  +                    startElementProcessing( parser, elements, values );
  +                }
  +            }
  +            else if ( eventType == XmlPullParser.TEXT )
  +            {
                   int depth = elements.size();
   
  -                if ( depth > 0 )
  +                if ( embeddedElementDepth > 0 )
                   {
  -                    Xpp3Dom parent = (Xpp3Dom) elements.get( depth - 1 );
  +                    StringBuffer valueBuffer = (StringBuffer) values.get( depth - 1 );
   
  -                    parent.addChild( childConfiguration );
  -                }
  +                    String text = parser.getText();
   
  -                elements.add( childConfiguration );
  +                    // The parser is  unescaping, i'm sure this is a feature I can shut off but
  +                    // I'll do this for now.
   
  -                values.add( new StringBuffer() );
  +                    text = text.replaceAll( "&", "&amp;" );
   
  -                int attributesSize = parser.getAttributeCount();
  +                    text = text.replaceAll( "<", "&lt;" );
   
  -                for ( int i = 0; i < attributesSize; i++ )
  -                {
  -                    String name = parser.getAttributeName( i );
  -
  -                    String value = parser.getAttributeValue( i );
  +                    text = text.replaceAll( ">", "&gt;" );
   
  -                    childConfiguration.addAttribute( name, value );
  +                    valueBuffer.append( text );
  +                }
  +                else
  +                {
  +                    processText( parser, values );
                   }
  -            }
  -            else if ( eventType == XmlPullParser.TEXT )
  -            {
  -                int depth = values.size() - 1;
  -
  -                StringBuffer valueBuffer = (StringBuffer) values.get( depth );
  -
  -                valueBuffer.append( parser.getText() );
               }
               else if ( eventType == XmlPullParser.END_TAG )
               {
  -                String rawName = parser.getName();
  +                int depth = values.size() - 1;
   
  -                if ( htmlElement( rawName ) )
  +                if ( embeddedElementDepth > 0 )
                   {
  -                    int depth = values.size() - 1;
  -
                       StringBuffer valueBuffer = (StringBuffer) values.get( depth );
   
  -                    valueBuffer.append( "</" ).append( rawName ).append( ">" );
  -
  -                    eventType = parser.next();
  +                    valueBuffer.append( "</" ).append( parser.getName() ).append( ">" );
   
  -                    continue;
  +                    embeddedElementDepth--;
                   }
  +                else
  +                {
  +                    Xpp3Dom finishedConfiguration = (Xpp3Dom) elements.remove( depth );
   
  -                int depth = elements.size() - 1;
  -
  -                Xpp3Dom finishedConfiguration = (Xpp3Dom) elements.remove( depth );
  +                    String accumulatedValue = ( values.remove( depth ) ).toString();
   
  -                String accumulatedValue = ( values.remove( depth ) ).toString();
  +                    if ( finishedConfiguration.getChildCount() == 0 )
  +                    {
  +                        String finishedValue;
   
  -                if ( finishedConfiguration.getChildCount() == 0 )
  -                {
  -                    String finishedValue;
  +                        if ( 0 == accumulatedValue.length() )
  +                        {
  +                            finishedValue = null;
  +                        }
  +                        else
  +                        {
  +                            finishedValue = accumulatedValue;
  +                        }
   
  -                    if ( 0 == accumulatedValue.length() )
  -                    {
  -                        finishedValue = null;
  +                        finishedConfiguration.setValue( finishedValue );
                       }
  -                    else
  +
  +                    if ( 0 == depth )
                       {
  -                        finishedValue = accumulatedValue;
  +                        configuration = finishedConfiguration;
                       }
  -
  -                    finishedConfiguration.setValue( finishedValue );
  -                }
  -
  -                if ( 0 == depth )
  -                {
  -                    configuration = finishedConfiguration;
                   }
               }
   
  @@ -160,7 +135,76 @@
           return configuration;
       }
   
  -    private static Xpp3Dom createConfiguration( String localName )
  +    private boolean isEmbeddedElement( List elements, List values )
  +    {
  +        int depth = elements.size();
  +
  +        return ( depth > 0 && ( values.size() > depth - 1 ) && ( values.get( depth - 1 ).toString().trim().length() > 0 ) );
  +    }
  +
  +    // ----------------------------------------------------------------------
  +    //
  +    // ----------------------------------------------------------------------
  +
  +    private void startElementProcessing( XmlPullParser parser, List elements, List values )
  +    {
  +        String rawName = parser.getName();
  +
  +        Xpp3Dom childConfiguration = createConfiguration( rawName );
  +
  +        int depth = elements.size();
  +
  +        if ( depth > 0 )
  +        {
  +            Xpp3Dom parent = (Xpp3Dom) elements.get( depth - 1 );
  +
  +            parent.addChild( childConfiguration );
  +        }
  +
  +        elements.add( childConfiguration );
  +
  +        StringBuffer sb = new StringBuffer();
  +
  +        if ( rawName.equals( "source" ) )
  +        {
  +            sb.append( "!EMBEDDED!" );
  +        }
  +
  +        values.add( sb );
  +
  +        int attributesSize = parser.getAttributeCount();
  +
  +        for ( int i = 0; i < attributesSize; i++ )
  +        {
  +            String name = parser.getAttributeName( i );
  +
  +            String value = parser.getAttributeValue( i );
  +
  +            childConfiguration.addAttribute( name, value );
  +        }
  +    }
  +
  +    // ----------------------------------------------------------------------
  +    //
  +    // ----------------------------------------------------------------------
  +
  +    private void processText( XmlPullParser parser, List values )
  +    {
  +        int depth = values.size() - 1;
  +
  +        if ( values.size() > 0 )
  +        {
  +            StringBuffer valueBuffer = (StringBuffer) values.get( depth );
  +
  +            valueBuffer.append( parser.getText() );
  +        }
  +    }
  +
  +    // ----------------------------------------------------------------------
  +    //
  +    // ----------------------------------------------------------------------
  +
  +    private Xpp3Dom createConfiguration( String localName )
       {
           return new Xpp3Dom( localName );
       }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element/BodyElementRenderer.java
  
  Index: BodyElementRenderer.java
  ===================================================================
  package org.apache.maven.xdoc.render.element;
  
  import org.apache.maven.xdoc.render.PathTool;
  import org.apache.maven.xdoc.render.RenderingContext;
  import org.apache.maven.xdoc.render.XMLWriter;
  import org.apache.maven.xdoc.render.Xpp3Dom;
  import org.apache.maven.xdoc.render.XdocRenderer;
  import org.apache.maven.xdoc.render.Xpp3DomBuilder;
  import org.apache.maven.xdoc.render.navigation.Item;
  import org.apache.maven.xdoc.render.navigation.Link;
  import org.apache.maven.xdoc.render.navigation.Menu;
  import org.apache.maven.xdoc.render.navigation.Navigation;
  import org.codehaus.plexus.util.StringUtils;
  
  import java.util.Calendar;
  import java.util.Date;
  import java.io.FileReader;
  import java.io.File;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: BodyElementRenderer.java,v 1.1 2004/04/14 20:34:15 jvanzyl Exp $
   */
  public class BodyElementRenderer
      extends AbstractXdocElementRenderer
  {
      private Navigation navigation;
  
      private Xpp3DomBuilder builder;
  
      public BodyElementRenderer( XdocRenderer xdocRenderer, Xpp3DomBuilder builder )
      {
          super( xdocRenderer );
  
          this.builder = builder;
      }
  
      public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
          throws Exception
      {
          unmarshallNavigation( renderingContext );
  
          writer.startElement( "body" );
  
          banner( writer, renderingContext );
  
          breadCrumbs( writer, renderingContext );
  
          writer.startElement( "table" );
  
          writer.addAttribute( "border", "0" );
  
          writer.addAttribute( "width", "100%" );
  
          writer.addAttribute( "cellpadding", "8" );
  
          writer.addAttribute( "cellspacing", "0" );
  
          writer.addAttribute( "id", "layout" );
  
          writer.startElement( "tr" );
  
          writer.addAttribute( "valign", "top" );
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          navigation( writer, renderingContext );
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "td" );
  
          writer.addAttribute( "rowspan", "2" );
  
          writer.startElement( "div" );
  
          writer.addAttribute( "id", "bodyColumn" );
  
          writer.startElement( "div" );
  
          writer.addAttribute( "class", "contentBox" );
  
          renderChildren( element, writer, renderingContext );
  
          writer.endElement();
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.endElement();
  
          writer.endElement();
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          footer( writer, renderingContext );
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.endElement();
      }
  
      private void banner( XMLWriter writer, RenderingContext renderingContext )
      {
          writer.startElement( "div" );
  
          writer.addAttribute( "id", "banner" );
  
          writer.startElement( "table" );
  
          writer.startElement( "tr" );
  
          // ----------------------------------------------------------------------
          // Organization logo
          // ----------------------------------------------------------------------
  
          writer.startElement( "td" );
  
          writer.startElement( "a" );
  
          writer.addAttribute( "href", renderingContext.getProject().getOrganization().getUrl() );
  
          writer.startElement( "img" );
  
          writer.addAttribute( "border", "0" );
  
          writer.addAttribute( "src", renderingContext.getRelativePath() + renderingContext.getProject().getOrganization().getLogo() );
  
          writer.addAttribute( "alt", renderingContext.getProject().getOrganization().getName() );
  
          writer.addAttribute( "align", "left" );
  
          writer.endElement();
  
          writer.endElement();
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          // Project logo
          // ----------------------------------------------------------------------
  
          writer.startElement( "td" );
  
          writer.startElement( "a" );
  
          writer.addAttribute( "href", renderingContext.getProject().getUrl() );
  
          writer.startElement( "img" );
  
          writer.addAttribute( "border", "0" );
  
          writer.addAttribute( "src", renderingContext.getRelativePath() + renderingContext.getProject().getLogo() );
  
          writer.addAttribute( "alt", renderingContext.getProject().getName() );
  
          writer.addAttribute( "align", "right" );
  
          writer.endElement();
  
          writer.endElement();
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.endElement();
  
          writer.endElement();
  
          writer.endElement();
      }
  
      private void breadCrumbs( XMLWriter writer, RenderingContext renderingContext )
      {
          writer.startElement( "div" );
  
          writer.addAttribute( "id", "breadcrumbs" );
  
          writer.startElement( "table" );
  
          writer.startElement( "tr" );
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "td" );
  
          writer.writeText( "Last published: " + new Date() + " | Doc for " + renderingContext.getProject().getVersion() );
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.startElement( "td" );
  
          writer.startElement( "div" );
  
          writer.addAttribute( "align", "right" );
  
          int links = navigation.getLinks().size();
  
          for ( int i = 0; i < links; i++ )
          {
              Link link = (Link) navigation.getLinks().get( i );
  
              writer.startElement( "a" );
  
              writer.addAttribute( "href", link.getHref() );
  
              writer.writeText( link.getName() );
  
              if ( i != ( links - 1 ) )
              {
                  writer.writeText( " | " );
              }
  
              writer.endElement();
          }
  
          writer.endElement();
  
          writer.endElement();
  
          // ----------------------------------------------------------------------
          //
          // ----------------------------------------------------------------------
  
          writer.endElement();
  
          writer.endElement();
  
          writer.endElement();
      }
  
      private void footer( XMLWriter writer, RenderingContext renderingContext )
      {
          writer.startElement( "div" );
  
          writer.addAttribute( "id", "footer" );
  
          writer.startElement( "table" );
  
          writer.startElement( "tr" );
  
          writer.startElement( "td" );
  
          String currentYear = Integer.toString( Calendar.getInstance().get( Calendar.YEAR ) );
  
          String inceptionYear = renderingContext.getProject().getInceptionYear();
  
          if ( inceptionYear != null )
          {
              if ( inceptionYear.equals( currentYear ) )
              {
                  writer.writeText( "&#169; " + renderingContext.getProject().getInceptionYear() + ", " + renderingContext.getProject().getOrganization().getName() );
              }
              else
              {
                  writer.writeText( "&#169; " + renderingContext.getProject().getInceptionYear() + "-" + currentYear + ", " + renderingContext.getProject().getOrganization().getName() );
              }
          }
          else
          {
              writer.writeText( "&#169; " + currentYear + ", " + renderingContext.getProject().getOrganization().getName() );
          }
  
          writer.endElement();
  
          writer.endElement();
  
          writer.endElement();
  
          writer.endElement();
      }
  
      private void navigation( XMLWriter writer, RenderingContext renderingContext )
      {
          writer.startElement( "td" );
  
          writer.addAttribute( "width", "20%" );
  
          writer.addAttribute( "id", "leftColumn" );
  
          writer.startElement( "div" );
  
          writer.addAttribute( "id", "navBox" );
  
          int menus = navigation.getMenus().size();
  
          for ( int i = 0; i < menus; i++ )
          {
              Menu menu = (Menu) navigation.getMenus().get( i );
  
              writer.startElement( "div" );
  
              writer.addAttribute( "class", "navSection" );
  
              writer.startElement( "div" );
  
              writer.addAttribute( "class", "navSectionHead" );
  
              writer.writeText( menu.getName() );
  
              writer.endElement();
  
              int items = menu.getItems().size();
  
              for ( int j = 0; j < items; j++ )
              {
                  Item item = (Item) menu.getItems().get( j );
  
                  writeMenuItem( item, writer, renderingContext );
              }
  
              writer.endElement();
          }
  
          if ( navigation.isSearch() )
          {
              //search( writer, renderingContext );
          }
  
          poweredBy( writer, renderingContext );
  
          writer.endElement();
  
          writer.endElement();
      }
  
      private void writeMenuItem( Item item, XMLWriter writer, RenderingContext renderingContext )
      {
          writer.startElement( "div" );
  
          writer.addAttribute( "class", "navLink" );
  
          String href = item.getHref();
  
          String collapse;
  
          //boolean expandedNavigation = href.equals( renderingContext.outputName );
  
          String currentGroup = (String) navigation.getItemGroups().get( renderingContext.getOutputName() );
  
          if ( item.isFoldable() )
          {
              // If we are outputting the page to which this item is referring
              // then we want to expand the list of items.
  
              if ( item.getGroup().equals( currentGroup ) )
              {
                  collapse = "expanded";
              }
              else
              {
                  collapse = "collapsed";
              }
          }
          else
          {
              collapse = "none";
          }
  
          writer.addAttribute( "class", collapse );
  
          if ( renderingContext.getOutputName().equals( href ) )
          {
              writer.startElement( "small" );
  
              writer.startElement( "strong" );
  
              writer.startElement( "a" );
  
              writer.addAttribute( "href", PathTool.calculateLink( href, renderingContext.getRelativePath() ) );
  
              writer.writeText( item.getName() );
  
              writer.endElement();
  
              writer.endElement();
  
              writer.endElement();
          }
          else
          {
              writer.startElement( "small" );
  
              writer.startElement( "a" );
  
              writer.addAttribute( "href", PathTool.calculateLink( href, renderingContext.getRelativePath() ) );
  
              writer.writeText( item.getName() );
  
              writer.endElement();
  
              writer.endElement();
          }
  
          int count = item.getItems().size();
  
  
          for ( int i = 0; i < count; i++ )
          {
              Item subitem = (Item) item.getItems().get( i );
  
              if ( subitem.getGroup().equals( currentGroup ) )
              {
                  writeMenuItem( subitem, writer, renderingContext );
              }
          }
  
          writer.endElement();
      }
  
      private void poweredBy( XMLWriter writer, RenderingContext renderingContext )
      {
          writer.startElement( "div" );
  
          writer.addAttribute( "style", "margin-top: 20px; width: 100%; text-align: center;" );
  
          writer.startElement( "a" );
  
          writer.addAttribute( "href", "http://maven.apache.org" );
  
          writer.startElement( "img" );
  
          writer.addAttribute( "alt", "Built By Maven" );
  
          writer.addAttribute( "src", renderingContext.getRelativePath() + "/images/maven-button-1.png" );
  
          writer.addAttribute( "id", "poweredBy" );
  
          writer.endElement();
  
          writer.endElement();
  
          writer.endElement();
      }
  
      private void search( XMLWriter writer, RenderingContext renderingContext )
      {
          writer.startElement( "div" );
  
          writer.addAttribute( "id", "search" );
  
          writer.startElement( "h5" );
  
          writer.writeText( renderingContext.getProject().getName() );
  
          writer.endElement();
  
          writer.startElement( "form" );
  
          writer.addAttribute( "method", "get" );
  
          writer.addAttribute( "action", "http://www.google.com/search" );
  
          writer.startElement( "a" );
  
          writer.addAttribute( "class", "navlink" );
  
          writer.addAttribute( "href", "http://www.google.com" );
  
          writer.startElement( "img" );
  
          writer.addAttribute( "src", "http://www.google.com/logos/Logo_25wht.gif" );
  
          writer.addAttribute( "width", "75" );
  
          writer.addAttribute( "height", "32" );
  
          writer.addAttribute( "alt", "Google" );
  
          writer.endElement();
  
          writer.endElement();
  
          String siteUrl = renderingContext.getProject().getUrl();
  
          if ( siteUrl.endsWith( "/" ) )
          {
              siteUrl = StringUtils.chop( siteUrl );
          }
  
          //--
  
          writer.startElement( "input" );
  
          writer.addAttribute( "type", "text" );
  
          writer.addAttribute( "id", "q" );
  
          writer.addAttribute( "size", "15" );
  
          writer.addAttribute( "name", "q" );
  
          writer.addAttribute( "maxlength", "255" );
  
          writer.addAttribute( "value", "" );
  
          writer.endElement();
  
          //--
  
          writer.startElement( "input" );
  
          writer.addAttribute( "type", "submit" );
  
          writer.addAttribute( "id", "btnG" );
  
          writer.addAttribute( "value", "Go" );
  
          writer.addAttribute( "name", "btnG" );
  
          writer.endElement();
  
          //--
  
          writer.startElement( "input" );
  
          writer.addAttribute( "type", "hidden" );
  
          writer.addAttribute( "name", "domains" );
  
          writer.addAttribute( "value", siteUrl );
  
          writer.endElement();
  
          //--
  
          writer.startElement( "input" );
  
          writer.addAttribute( "type", "hidden" );
  
          writer.addAttribute( "id", "search" );
  
          writer.addAttribute( "name", "sitesearch" );
  
          writer.addAttribute( "value", siteUrl );
  
          writer.endElement();
  
          //--
  
          writer.endElement();
  
          writer.endElement();
      }
  
      // ----------------------------------------------------------------------
      // Navigation
      // ----------------------------------------------------------------------
  
      private void unmarshallNavigation( RenderingContext renderingContext )
          throws Exception
      {
          navigation = new Navigation();
  
          Xpp3Dom navigationElement = builder.build( new FileReader( new File( renderingContext.getBasedir(), "navigation.xml" ) ) );
  
          Xpp3Dom body = navigationElement.getChild( "body" );
  
          int children = body.getChildCount();
  
          for ( int i = 0; i < children; i++ )
          {
              Xpp3Dom element = body.getChild( i );
  
              if ( element.getName().equals( "menu" ) )
              {
                  Menu menu = new Menu( element.getAttribute( "name" ) );
  
                  int items = element.getChildCount();
  
                  for ( int j = 0; j < items; j++ )
                  {
                      Xpp3Dom itemElement = element.getChild( j );
  
                      menu.addItem( processItem( itemElement ) );
                  }
  
                  navigation.addMenu( menu );
              }
              else if ( element.getName().equals( "links" ) )
              {
                  int count = element.getChildCount();
  
                  for ( int j = 0; j < count; j++ )
                  {
                      Xpp3Dom item = element.getChild( j );
  
                      Link link = new Link( item.getAttribute( "name" ), item.getAttribute( "href" ) );
  
                      navigation.addLink( link );
                  }
              }
              else if ( element.getName().equals( "search" ) )
              {
                  navigation.setSearch( true );
              }
          }
      }
  
      private Item processItem( Xpp3Dom itemElement )
      {
          String name = itemElement.getAttribute( "name" );
  
          String href = itemElement.getAttribute( "href" );
  
          Item item = new Item( name, href );
  
          navigation.addItemGroup( href, name );
  
          if ( itemElement.getAttribute( "collapse" ) != null )
          {
              item.setFoldable( true );
          }
  
          int items = itemElement.getChildCount();
  
          for ( int i = 0; i < items; i++ )
          {
              Xpp3Dom subItemElement = itemElement.getChild( i );
  
              Item subitem = processItem( subItemElement );
  
              subitem.setGroup( item.getGroup() );
  
              navigation.addItemGroup( subitem.getHref(), subitem.getGroup() );
  
              item.addItem( subitem );
          }
  
          return item;
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element/DefaultElementRenderer.java
  
  Index: DefaultElementRenderer.java
  ===================================================================
  package org.apache.maven.xdoc.render.element;
  
  import org.apache.maven.xdoc.render.Xpp3Dom;
  import org.apache.maven.xdoc.render.XMLWriter;
  import org.apache.maven.xdoc.render.RenderingContext;
  import org.apache.maven.xdoc.render.XdocRenderer;
  
  import java.util.Iterator;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: DefaultElementRenderer.java,v 1.1 2004/04/14 20:34:15 jvanzyl Exp $
   */
  public class DefaultElementRenderer
      extends AbstractXdocElementRenderer
  {
      public DefaultElementRenderer( XdocRenderer xdocRenderer )
      {
          super( xdocRenderer );
      }
  
      public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
          throws Exception
      {
          writer.startElement( element.getName() );
  
          int children = element.getChildCount();
  
          if ( children > 0 )
          {
              for ( int i = 0; i < children; i++ )
              {
                  renderElement( element.getChild( i ), writer, renderingContext );
              }
          }
          else
          {
              if ( element.getAttributes() != null )
              {
                  for ( Iterator i = element.getAttributes().keySet().iterator(); i.hasNext(); )
                  {
                      String key = (String) i.next();
  
                      writer.addAttribute( key, element.getAttribute( key ) );
                  }
              }
  
              if ( element.getValue() != null )
              {
                  writer.writeText( element.getValue() );
              }
          }
  
          writer.endElement();
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element/DocumentRenderer.java
  
  Index: DocumentRenderer.java
  ===================================================================
  package org.apache.maven.xdoc.render.element;
  
  import org.apache.maven.xdoc.render.Xpp3Dom;
  import org.apache.maven.xdoc.render.XMLWriter;
  import org.apache.maven.xdoc.render.RenderingContext;
  import org.apache.maven.xdoc.render.XdocRenderer;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: DocumentRenderer.java,v 1.1 2004/04/14 20:34:15 jvanzyl Exp $
   */
  public class DocumentRenderer
      extends AbstractXdocElementRenderer
  {
      public DocumentRenderer( XdocRenderer xdocRenderer )
      {
          super( xdocRenderer );
      }
  
      public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
          throws Exception
      {
          writer.startElement( "html" );
  
          writer.startElement( "head" );
  
          writer.startElement( "title" );
  
          writer.writeText( element.getChild( "properties" ).getChild( "title" ).getValue() );
  
          writer.endElement();
  
          writer.startElement( "style" );
  
          writer.addAttribute( "type", "text/css" );
  
          writer.addAttribute( "media", "all" );
  
          writer.writeText( "@import url(\"" + renderingContext.getRelativePath() + "/style/maven-base.css\");" );
  
          writer.writeText( "@import url(\"" + renderingContext.getRelativePath() + "/style/maven-theme.css\");" );
  
          writer.endElement();
  
          writer.startElement( "link" );
  
          writer.addAttribute( "rel", "stylesheet" );
  
          writer.addAttribute( "type", "text/css" );
  
          writer.addAttribute( "href", renderingContext.getRelativePath() + "/style/print.css" );
  
          writer.addAttribute( "media", "print" );
  
          writer.endElement();
  
          renderElement( element.getChild( "properties" ), writer, renderingContext );
  
          writer.endElement();
  
          renderElement( element.getChild( "body" ), writer, renderingContext );
  
          writer.endElement();
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element/PropertiesRenderer.java
  
  Index: PropertiesRenderer.java
  ===================================================================
  package org.apache.maven.xdoc.render.element;
  
  import org.apache.maven.xdoc.render.Xpp3Dom;
  import org.apache.maven.xdoc.render.XMLWriter;
  import org.apache.maven.xdoc.render.RenderingContext;
  import org.apache.maven.xdoc.render.XdocRenderer;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: PropertiesRenderer.java,v 1.1 2004/04/14 20:34:15 jvanzyl Exp $
   */
  public class PropertiesRenderer
      extends AbstractXdocElementRenderer
  {
      public PropertiesRenderer( XdocRenderer xdocRenderer )
      {
          super( xdocRenderer );
      }
  
      public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
          throws Exception
      {
          int children = element.getChildCount();
  
          for ( int i = 0; i < children; i++ )
          {
              Xpp3Dom child = element.getChild( i );
  
              if ( child.getName().equals( "author" ) )
              {
                  writer.startElement( "meta" );
  
                  writer.addAttribute( "name", "author" );
  
                  writer.addAttribute( "content", child.getValue() );
  
                  writer.endElement();
  
                  writer.startElement( "meta" );
  
                  writer.addAttribute( "name", "email" );
  
                  writer.addAttribute( "content", child.getAttribute( "email" ) );
  
                  writer.endElement();
              }
          }
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element/SectionRenderer.java
  
  Index: SectionRenderer.java
  ===================================================================
  package org.apache.maven.xdoc.render.element;
  
  import org.apache.maven.xdoc.render.Xpp3Dom;
  import org.apache.maven.xdoc.render.XMLWriter;
  import org.apache.maven.xdoc.render.RenderingContext;
  import org.apache.maven.xdoc.render.XdocRenderer;
  import org.codehaus.plexus.util.StringUtils;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: SectionRenderer.java,v 1.1 2004/04/14 20:34:15 jvanzyl Exp $
   */
  public class SectionRenderer
      extends AbstractXdocElementRenderer
  {
      public SectionRenderer( XdocRenderer xdocRenderer )
      {
          super( xdocRenderer );
      }
  
      public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
          throws Exception
      {
          writer.startElement( "div" );
  
          writer.addAttribute( "class", "section" );
  
          writer.startElement( "div" );
  
          writer.addAttribute( "class", "sectionTitle" );
  
          writer.startElement( "a" );
  
          String sectionName = element.getAttribute( "name" );
  
          writer.addAttribute( "name", StringUtils.replace( sectionName, " ", "_" ) );
  
          writer.writeText( sectionName );
  
          writer.endElement();
  
          writer.endElement();
  
          renderChildren( element, writer, renderingContext );
  
          writer.endElement();
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element/SourceRenderer.java
  
  Index: SourceRenderer.java
  ===================================================================
  package org.apache.maven.xdoc.render.element;
  
  import org.apache.maven.xdoc.render.Xpp3Dom;
  import org.apache.maven.xdoc.render.XMLWriter;
  import org.apache.maven.xdoc.render.RenderingContext;
  import org.apache.maven.xdoc.render.XdocRenderer;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: SourceRenderer.java,v 1.1 2004/04/14 20:34:15 jvanzyl Exp $
   */
  public class SourceRenderer
      extends AbstractXdocElementRenderer
  {
      public SourceRenderer( XdocRenderer xdocRenderer )
      {
          super( xdocRenderer );
      }
  
      public void start( Xpp3Dom element )
      {
          element.setValue( "!EMBEDDED!" );
      }
  
      public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
          throws Exception
      {
          writer.startElement( "div" );
  
          writer.addAttribute( "class", "source" );
  
          writer.startElement( "pre" );
  
          writer.writeText( element.getValue().replaceAll( "!EMBEDDED!", "" ) );
  
          writer.endElement();
  
          writer.endElement();
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element/SubsectionRenderer.java
  
  Index: SubsectionRenderer.java
  ===================================================================
  package org.apache.maven.xdoc.render.element;
  
  import org.apache.maven.xdoc.render.Xpp3Dom;
  import org.apache.maven.xdoc.render.XMLWriter;
  import org.apache.maven.xdoc.render.RenderingContext;
  import org.apache.maven.xdoc.render.XdocRenderer;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: SubsectionRenderer.java,v 1.1 2004/04/14 20:34:15 jvanzyl Exp $
   */
  public class SubsectionRenderer
      extends AbstractXdocElementRenderer
  {
      public SubsectionRenderer( XdocRenderer xdocRenderer )
      {
          super( xdocRenderer );
      }
  
      public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
          throws Exception
      {
          writer.startElement( "div" );
  
          writer.addAttribute( "class", "subsection" );
  
          writer.startElement( "div" );
  
          writer.addAttribute( "class", "subsectionTitle" );
  
          writer.writeText( element.getAttribute( "name" ) );
  
          writer.endElement();
  
          renderChildren( element, writer, renderingContext );
  
          writer.endElement();
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element/TableRenderer.java
  
  Index: TableRenderer.java
  ===================================================================
  package org.apache.maven.xdoc.render.element;
  
  import org.apache.maven.xdoc.render.Xpp3Dom;
  import org.apache.maven.xdoc.render.XMLWriter;
  import org.apache.maven.xdoc.render.RenderingContext;
  import org.apache.maven.xdoc.render.XdocRenderer;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: TableRenderer.java,v 1.1 2004/04/14 20:34:15 jvanzyl Exp $
   */
  public class TableRenderer
      extends AbstractXdocElementRenderer
  {
      public TableRenderer( XdocRenderer xdocRenderer )
      {
          super( xdocRenderer );
      }
  
      public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
          throws Exception
      {
          writer.startElement( "table" );
  
          writer.addAttribute( "class", "bodyTable" );
  
          renderChildren( element, writer, renderingContext );
  
          writer.endElement();
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element/TableRowRenderer.java
  
  Index: TableRowRenderer.java
  ===================================================================
  package org.apache.maven.xdoc.render.element;
  
  import org.apache.maven.xdoc.render.Xpp3Dom;
  import org.apache.maven.xdoc.render.XMLWriter;
  import org.apache.maven.xdoc.render.RenderingContext;
  import org.apache.maven.xdoc.render.XdocRenderer;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: TableRowRenderer.java,v 1.1 2004/04/14 20:34:15 jvanzyl Exp $
   */
  public class TableRowRenderer
      extends AbstractXdocElementRenderer
  {
      private boolean mode;
  
      public TableRowRenderer( XdocRenderer xdocRenderer )
      {
          super( xdocRenderer );
      }
  
      public void render( Xpp3Dom element, XMLWriter writer, RenderingContext renderingContext )
          throws Exception
      {
          writer.startElement( "tr" );
  
          if ( mode )
          {
              writer.addAttribute( "class", "b" );
  
              mode = false;
          }
          else
          {
              writer.addAttribute( "class", "a" );
  
              mode = true;
          }
  
          renderChildren( element, writer, renderingContext );
  
          writer.endElement();
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/navigation/Item.java
  
  Index: Item.java
  ===================================================================
  package org.apache.maven.xdoc.render.navigation;
  
  import java.util.List;
  import java.util.ArrayList;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: Item.java,v 1.1 2004/04/14 20:34:16 jvanzyl Exp $
   */
  public class Item
  {
      String name;
  
      String href;
  
      boolean foldable;
  
      String group;
  
      List items = new ArrayList();
  
      public Item( String name, String href )
      {
          this.name = name;
          this.href = href;
          group = name;
      }
  
      // ----------------------------------------------------------------------
      // Name
      // ----------------------------------------------------------------------
  
      public String getName()
      {
          return name;
      }
  
      // ----------------------------------------------------------------------
      // Items
      // ----------------------------------------------------------------------
  
      public void addItem( Item item )
      {
          items.add( item );
      }
  
      public List getItems()
      {
          return items;
      }
  
      // ----------------------------------------------------------------------
      // Href
      // ----------------------------------------------------------------------
  
      public String getHref()
      {
          return href;
      }
  
      // ----------------------------------------------------------------------
      // Folding
      // ----------------------------------------------------------------------
  
      public void setFoldable( boolean foldable )
      {
          this.foldable = foldable;
      }
  
      public boolean isFoldable()
      {
          return foldable;
      }
  
      // ----------------------------------------------------------------------
      // Visibility
      // ----------------------------------------------------------------------
  
      boolean itemsVisible()
      {
          return false;
      }
  
      // ----------------------------------------------------------------------
      // Group
      // ----------------------------------------------------------------------
  
      public void setGroup( String group )
      {
          this.group = group;
      }
  
      public String getGroup()
      {
          return group;
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/navigation/Link.java
  
  Index: Link.java
  ===================================================================
  package org.apache.maven.xdoc.render.navigation;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: Link.java,v 1.1 2004/04/14 20:34:16 jvanzyl Exp $
   */
  public class Link
  {
      String name;
  
      String href;
  
      public Link( String name, String href )
      {
          this.name = name;
  
          this.href = href;
      }
  
      public String getName()
      {
          return name;
      }
  
      public String getHref()
      {
          return href;
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/navigation/Menu.java
  
  Index: Menu.java
  ===================================================================
  package org.apache.maven.xdoc.render.navigation;
  
  import java.util.List;
  import java.util.ArrayList;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: Menu.java,v 1.1 2004/04/14 20:34:16 jvanzyl Exp $
   */
  public class Menu
  {
      String name;
  
      List items = new ArrayList();
  
      public Menu( String name )
      {
          this.name = name;
      }
  
      public void addItem( Item item )
      {
          items.add( item );
      }
  
      public String getName()
      {
          return name;
      }
  
      public List getItems()
      {
          return items;
      }
  }
  
  
  
  1.1                  maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/navigation/Navigation.java
  
  Index: Navigation.java
  ===================================================================
  package org.apache.maven.xdoc.render.navigation;
  
  import java.util.List;
  import java.util.ArrayList;
  import java.util.Map;
  import java.util.HashMap;
  
  /**
   * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
   * @version $Id: Navigation.java,v 1.1 2004/04/14 20:34:16 jvanzyl Exp $
   */
  public class Navigation
  {
      List menus = new ArrayList();
  
      List links = new ArrayList();
  
      boolean search;
  
      Map itemGroups = new HashMap();
  
      public void addMenu( Menu menu )
      {
          menus.add( menu );
      }
  
      public void addLink( Link link )
      {
          links.add( link );
      }
  
      public List getMenus()
      {
          return menus;
      }
  
      public List getLinks()
      {
          return links;
      }
  
      public Map getItemGroups()
      {
          return itemGroups;
      }
  
      public void addItemGroup( String href, String group )
      {
          itemGroups.put( href, group );
      }
  
      public boolean isSearch()
      {
          return search;
      }
  
      public void setSearch( boolean search )
      {
          this.search = search;
      }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org