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( "<", "<" );
+
text = text.replaceAll( ">", ">" );
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( "© " + renderingContext.project.getInceptionYear() + ", " + renderingContext.project.getOrganization().getName() );
- }
- else
- {
- writer.writeText( "© " + renderingContext.project.getInceptionYear() + "-" + currentYear + ", " + renderingContext.project.getOrganization().getName() );
- }
- }
- else
- {
- writer.writeText( "© " + 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( "&", "&" );
- int attributesSize = parser.getAttributeCount();
+ text = text.replaceAll( "<", "<" );
- for ( int i = 0; i < attributesSize; i++ )
- {
- String name = parser.getAttributeName( i );
-
- String value = parser.getAttributeValue( i );
+ text = text.replaceAll( ">", ">" );
- 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( "© " + renderingContext.getProject().getInceptionYear() + ", " + renderingContext.getProject().getOrganization().getName() );
}
else
{
writer.writeText( "© " + renderingContext.getProject().getInceptionYear() + "-" + currentYear + ", " + renderingContext.getProject().getOrganization().getName() );
}
}
else
{
writer.writeText( "© " + 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