jvanzyl 2004/04/14 20:22:09
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
DefaultXdocRenderer.java RenderingContext.java
XdocRenderer.java
maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element
BodyElementRenderer.java
maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/navigation
Menu.java Navigation.java
Log:
o rework the navigation mechanism so that programmatic control of the
navigation is possible.
If a navigation.xml file is present it will be used, but you can create
the navigation entirely from within Java code. This will be necessary
for the reporting API of maven2.
Revision Changes Path
1.9 +124 -11
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.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- XdocPlugin.java 15 Apr 2004 02:48:08 -0000 1.8
+++ XdocPlugin.java 15 Apr 2004 03:22:09 -0000 1.9
@@ -6,14 +6,21 @@
import org.apache.maven.plugin.PluginExecutionResponse;
import org.apache.maven.project.MavenProject;
import org.apache.maven.xdoc.render.DefaultXdocRenderer;
+import org.apache.maven.xdoc.render.Xpp3Dom;
+import org.apache.maven.xdoc.render.Xpp3DomBuilder;
import org.apache.maven.xdoc.render.model.DependenciesRenderer;
import org.apache.maven.xdoc.render.model.MailingListsRenderer;
import org.apache.maven.xdoc.render.model.ModelElementRenderer;
import org.apache.maven.xdoc.render.model.TeamRenderer;
+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.FileUtils;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.OutputStream;
@@ -21,10 +28,7 @@
import java.util.List;
/**
- *
- *
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
- *
* @version $Id$
*/
public class XdocPlugin
@@ -32,10 +36,14 @@
{
private DefaultXdocRenderer renderer;
+ private Xpp3DomBuilder builder;
+
public XdocPlugin()
throws Exception
{
renderer = new DefaultXdocRenderer();
+
+ builder = new Xpp3DomBuilder();
}
private String[] css =
@@ -43,7 +51,7 @@
"style/maven-base.css",
"style/maven-theme.css"
};
-
+
private String[] image =
{
"images/collapsed.gif",
@@ -64,22 +72,33 @@
//
// ----------------------------------------------------------------------
+ Navigation navigation = createNavigation( xdocDirectory );
+
+ navigation.addMenu( "Project Info" ).
+ addItem( "Dependencies", "./dependencies.html" ).
+ addItem( "Mailing Lists", "./mailing-lists.html" ).
+ addItem( "Team", "./team.html" );
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
+
generateModelXdocs( xdocDirectory, project.getModel() );
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
- renderXdocs( xdocDirectory, outputDirectory, project );
+ renderXdocs( xdocDirectory, outputDirectory, project, navigation );
copyStyle( outputDirectory );
-
+
copyImages( outputDirectory );
FileUtils.copyDirectory( new File( xdocDirectory, "images" ), new File(
outputDirectory, "images" ) );
}
- private void renderXdocs( String xdocDirectory, String outputDirectory,
MavenProject project )
+ private void renderXdocs( String xdocDirectory, String outputDirectory,
MavenProject project, Navigation navigation )
throws Exception
{
List files = FileUtils.getFileNames( new File( xdocDirectory ), "**/*.xml",
"style/**,navigation.xml", false );
@@ -90,7 +109,7 @@
try
{
- renderer.render( file, xdocDirectory, project, outputDirectory );
+ renderer.render( file, xdocDirectory, project, outputDirectory,
navigation );
}
catch ( Exception e )
{
@@ -157,12 +176,12 @@
FileOutputStream w = new FileOutputStream( f );
- InputStream is = getStream( css[i]);
+ InputStream is = getStream( css[i] );
copy( is, w );
}
}
-
+
private void copyImages( String outputDirectory )
throws Exception
{
@@ -176,7 +195,7 @@
FileOutputStream w = new FileOutputStream( f );
- InputStream is = getStream( image[i]);
+ InputStream is = getStream( image[i] );
copy( is, w );
}
@@ -240,5 +259,99 @@
writer.flush();
writer.close();
+ }
+
+ // ----------------------------------------------------------------------
+ // Navigation
+ // ----------------------------------------------------------------------
+
+ private Navigation createNavigation( String xdocDirectory )
+ throws Exception
+ {
+ Navigation navigation = new Navigation();
+
+ File navigationFile = new File( xdocDirectory, "navigation.xml" );
+
+ if ( navigationFile.exists() )
+ {
+ Xpp3Dom navigationElement = builder.build( new FileReader(
navigationFile ) );
+
+ 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 ) );
+ }
+
+ 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 );
+ }
+ }
+ }
+
+ return navigation;
+ }
+
+ private Item processItem( Xpp3Dom itemElement, Navigation navigation )
+ {
+ 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, navigation );
+
+ subitem.setGroup( item.getGroup() );
+
+ navigation.addItemGroup( subitem.getHref(), subitem.getGroup() );
+
+ item.addItem( subitem );
+ }
+
+ return item;
}
}
1.9 +5 -4
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.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DefaultXdocRenderer.java 14 Apr 2004 20:34:15 -0000 1.8
+++ DefaultXdocRenderer.java 15 Apr 2004 03:22:09 -0000 1.9
@@ -11,6 +11,7 @@
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 org.apache.maven.xdoc.render.navigation.Navigation;
import java.io.File;
import java.io.FileReader;
@@ -42,7 +43,7 @@
renderers.put( "subsection", new SubsectionRenderer( this ) );
- renderers.put( "body", new BodyElementRenderer( this, builder ) );
+ renderers.put( "body", new BodyElementRenderer( this ) );
renderers.put( "properties", new PropertiesRenderer( this ) );
@@ -55,7 +56,7 @@
renderers.put( "default", new DefaultElementRenderer( this ) );
}
- public void render( String xdoc, String basedir, MavenProject project, String
outputDirectory )
+ public void render( String xdoc, String basedir, MavenProject project, String
outputDirectory, Navigation navigation )
throws Exception
{
String relativePath = PathTool.getRelativePath( basedir, new File( basedir,
xdoc ).getPath() );
@@ -79,7 +80,7 @@
XMLWriter xmlWriter = new DefaultXMLWriter( writer );
- RenderingContext renderingContext = new RenderingContext( basedir, project,
outputDirectory, relativePath, outputName );
+ RenderingContext renderingContext = new RenderingContext( basedir, project,
outputDirectory, relativePath, outputName, navigation );
renderElement( document, xmlWriter, renderingContext );
1.2 +22 -7
maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/RenderingContext.java
Index: RenderingContext.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/RenderingContext.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RenderingContext.java 14 Apr 2004 20:35:44 -0000 1.1
+++ RenderingContext.java 15 Apr 2004 03:22:09 -0000 1.2
@@ -1,6 +1,7 @@
package org.apache.maven.xdoc.render;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.xdoc.render.navigation.Navigation;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
@@ -8,17 +9,24 @@
*/
public class RenderingContext
{
- String basedir;
+ private String basedir;
- String relativePath;
+ private String relativePath;
- String outputName;
+ private String outputName;
- MavenProject project;
+ private MavenProject project;
- String outputDirectory;
+ private String outputDirectory;
- public RenderingContext( String basedir, MavenProject project, String
outputDirectory, String relativePath, String outputName )
+ private Navigation navigation;
+
+ public RenderingContext( String basedir,
+ MavenProject project,
+ String outputDirectory,
+ String relativePath,
+ String outputName,
+ Navigation navigation )
{
this.basedir = basedir;
@@ -30,6 +38,8 @@
this.project = project;
this.outputDirectory = outputDirectory;
+
+ this.navigation = navigation;
}
// Elements we need out of the POM
@@ -65,5 +75,10 @@
public String getOutputDirectory()
{
return outputDirectory;
+ }
+
+ public Navigation getNavigation()
+ {
+ return navigation;
}
}
1.3 +3 -2
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.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XdocRenderer.java 14 Apr 2004 20:34:15 -0000 1.2
+++ XdocRenderer.java 15 Apr 2004 03:22:09 -0000 1.3
@@ -1,6 +1,7 @@
package org.apache.maven.xdoc.render;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.xdoc.render.navigation.Navigation;
/**
*
@@ -13,7 +14,7 @@
{
String ROLE = XdocRenderer.class.getName();
- public void render( String xdoc, String basedir, MavenProject project, String
outputDirectory )
+ public void render( String xdoc, String basedir, MavenProject project, String
outputDirectory, Navigation navigation )
throws Exception;
public void renderElement( Xpp3Dom element, XMLWriter writer, RenderingContext
renderingContext )
1.2 +9 -108
maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element/BodyElementRenderer.java
Index: BodyElementRenderer.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/element/BodyElementRenderer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- BodyElementRenderer.java 14 Apr 2004 20:34:15 -0000 1.1
+++ BodyElementRenderer.java 15 Apr 2004 03:22:09 -0000 1.2
@@ -3,19 +3,15 @@
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.Xpp3Dom;
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:[EMAIL PROTECTED]">Jason van Zyl</a>
@@ -24,22 +20,14 @@
public class BodyElementRenderer
extends AbstractXdocElementRenderer
{
- private Navigation navigation;
-
- private Xpp3DomBuilder builder;
-
- public BodyElementRenderer( XdocRenderer xdocRenderer, Xpp3DomBuilder builder )
+ public BodyElementRenderer( XdocRenderer xdocRenderer )
{
super( xdocRenderer );
-
- this.builder = builder;
}
public void render( Xpp3Dom element, XMLWriter writer, RenderingContext
renderingContext )
throws Exception
{
- unmarshallNavigation( renderingContext );
-
writer.startElement( "body" );
banner( writer, renderingContext );
@@ -216,11 +204,11 @@
writer.addAttribute( "align", "right" );
- int links = navigation.getLinks().size();
+ int links = renderingContext.getNavigation().getLinks().size();
for ( int i = 0; i < links; i++ )
{
- Link link = (Link) navigation.getLinks().get( i );
+ Link link = (Link) renderingContext.getNavigation().getLinks().get( i );
writer.startElement( "a" );
@@ -304,11 +292,11 @@
writer.addAttribute( "id", "navBox" );
- int menus = navigation.getMenus().size();
+ int menus = renderingContext.getNavigation().getMenus().size();
for ( int i = 0; i < menus; i++ )
{
- Menu menu = (Menu) navigation.getMenus().get( i );
+ Menu menu = (Menu) renderingContext.getNavigation().getMenus().get( i );
writer.startElement( "div" );
@@ -334,7 +322,7 @@
writer.endElement();
}
- if ( navigation.isSearch() )
+ if ( renderingContext.getNavigation().isSearch() )
{
//search( writer, renderingContext );
}
@@ -358,7 +346,7 @@
//boolean expandedNavigation = href.equals( renderingContext.outputName );
- String currentGroup = (String) navigation.getItemGroups().get(
renderingContext.getOutputName() );
+ String currentGroup = (String)
renderingContext.getNavigation().getItemGroups().get( renderingContext.getOutputName()
);
if ( item.isFoldable() )
{
@@ -563,92 +551,5 @@
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.2 +11 -2
maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/navigation/Menu.java
Index: Menu.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/navigation/Menu.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Menu.java 14 Apr 2004 20:34:16 -0000 1.1
+++ Menu.java 15 Apr 2004 03:22:09 -0000 1.2
@@ -18,9 +18,18 @@
this.name = name;
}
- public void addItem( Item item )
+ public Menu addItem( String name, String href )
+ {
+ items.add( new Item( name, href ) );
+
+ return this;
+ }
+
+ public Menu addItem( Item item )
{
items.add( item );
+
+ return this;
}
public String getName()
1.2 +33 -5
maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/navigation/Navigation.java
Index: Navigation.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-plugins/maven-xdoc-plugin/src/main/java/org/apache/maven/xdoc/render/navigation/Navigation.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Navigation.java 14 Apr 2004 20:34:16 -0000 1.1
+++ Navigation.java 15 Apr 2004 03:22:09 -0000 1.2
@@ -19,14 +19,20 @@
Map itemGroups = new HashMap();
- public void addMenu( Menu menu )
+ // ----------------------------------------------------------------------
+ // Menus
+ // ----------------------------------------------------------------------
+
+ public Menu addMenu( String name )
{
- menus.add( menu );
+ return addMenu( new Menu( name ) );
}
- public void addLink( Link link )
+ public Menu addMenu( Menu menu )
{
- links.add( link );
+ menus.add( menu );
+
+ return menu;
}
public List getMenus()
@@ -34,11 +40,29 @@
return menus;
}
+ // ----------------------------------------------------------------------
+ // Links
+ // ----------------------------------------------------------------------
+
+ public void addLink( String name, String href )
+ {
+ addLink( new Link( name, href ) );
+ }
+
+ public void addLink( Link link )
+ {
+ links.add( link );
+ }
+
public List getLinks()
{
return links;
}
+ // ----------------------------------------------------------------------
+ // Item groups
+ // ----------------------------------------------------------------------
+
public Map getItemGroups()
{
return itemGroups;
@@ -48,6 +72,10 @@
{
itemGroups.put( href, group );
}
+
+ // ----------------------------------------------------------------------
+ // Search
+ // ----------------------------------------------------------------------
public boolean isSearch()
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]