Author: ltheussl
Date: Wed May  6 13:14:30 2009
New Revision: 772219

URL: http://svn.apache.org/viewvc?rev=772219&view=rev
Log:
Construct cover page from DocumentModel.

Modified:
    
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java

Modified: 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java
URL: 
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java?rev=772219&r1=772218&r2=772219&view=diff
==============================================================================
--- 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java
 (original)
+++ 
maven/doxia/doxia/trunk/doxia-modules/doxia-module-fo/src/main/java/org/apache/maven/doxia/module/fo/FoAggregateSink.java
 Wed May  6 13:14:30 2009
@@ -27,10 +27,12 @@
 import javax.swing.text.MutableAttributeSet;
 import javax.swing.text.html.HTML.Tag;
 
+import org.apache.maven.doxia.document.DocumentCover;
 import org.apache.maven.doxia.document.DocumentMeta;
 import org.apache.maven.doxia.document.DocumentModel;
 import org.apache.maven.doxia.document.DocumentTOC;
 import org.apache.maven.doxia.document.DocumentTOCItem;
+import org.apache.maven.doxia.sink.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.util.DoxiaUtils;
 import org.apache.maven.doxia.util.HtmlTools;
@@ -778,22 +780,51 @@
             return;
         }
 
+        DocumentCover cover = docModel.getCover();
         DocumentMeta meta = docModel.getMeta();
 
-        if ( meta == null )
+        if ( cover == null && meta == null )
         {
-            return;
+            return; // no information for cover page: ignore
         }
 
-        String title = meta.getTitle();
-        String author = meta.getAuthor();
+        String title = null;
+        String subtitle = null;
+        String version = null;
+        String type = null;
+        String date = null;
+        // TODO: implement
+        //String author = null;
+        //String projName = null;
+        String projLogo = null;
+        String compName = null;
+        String compLogo = null;
+
+        if ( cover == null )
+        {
+            // aleady checked that meta != null
+            title = meta.getTitle();
+            compName = meta.getAuthor();
+        }
+        else
+        {
+            title = cover.getCoverTitle();
+            subtitle = cover.getCoverSubTitle();
+            version = cover.getCoverVersion();
+            type = cover.getCoverType();
+            date = cover.getCoverDate();
+            //author = cover.getAuthor();
+            //projName = cover.getProjectName();
+            projLogo = cover.getProjectLogo();
+            compName = cover.getCompanyName();
+            compLogo = cover.getCompanyLogo();
+        }
 
         // TODO: remove hard-coded settings
 
         writeStartTag( PAGE_SEQUENCE_TAG, "master-reference", "cover-page" );
         writeStartTag( FLOW_TAG, "flow-name", "xsl-region-body" );
         writeStartTag( BLOCK_TAG, "text-align", "center" );
-        //writeStartTag( TABLE_TAG, "table-layout", "fixed" );
         writeln( "<fo:table table-layout=\"fixed\" width=\"100%\" >" );
         writeEmptyTag( TABLE_COLUMN_TAG, "column-width", "3.125in" );
         writeEmptyTag( TABLE_COLUMN_TAG, "column-width", "3.125in" );
@@ -801,11 +832,37 @@
 
         writeStartTag( TABLE_ROW_TAG, "height", "1.5in" );
         writeStartTag( TABLE_CELL_TAG, "" );
-        // TODO: companyLogo
+
+        if ( compLogo != null )
+        {
+            SinkEventAttributeSet atts = new SinkEventAttributeSet();
+            atts.addAttribute( "text-align", "left" );
+            atts.addAttribute( "vertical-align", "top" );
+            writeStartTag( BLOCK_TAG, atts );
+
+            atts = new SinkEventAttributeSet();
+            atts.addAttribute( SinkEventAttributes.HEIGHT, "1.5in" );
+            figureGraphics( compLogo, atts );
+            writeEndTag( BLOCK_TAG );
+        }
+
         writeEmptyTag( BLOCK_TAG, "" );
         writeEndTag( TABLE_CELL_TAG );
         writeStartTag( TABLE_CELL_TAG, "" );
-        // TODO: projectLogo
+
+        if ( projLogo != null )
+        {
+            SinkEventAttributeSet atts = new SinkEventAttributeSet();
+            atts.addAttribute( "text-align", "right" );
+            atts.addAttribute( "vertical-align", "top" );
+            writeStartTag( BLOCK_TAG, atts );
+
+            atts = new SinkEventAttributeSet();
+            atts.addAttribute( SinkEventAttributes.HEIGHT, "1.5in" );
+            figureGraphics( projLogo, atts );
+            writeEndTag( BLOCK_TAG );
+        }
+
         writeEmptyTag( BLOCK_TAG, "" );
         writeEndTag( TABLE_CELL_TAG );
         writeEndTag( TABLE_ROW_TAG );
@@ -820,7 +877,6 @@
 
         writeStartTag( TABLE_ROW_TAG, "height", "7.447in" );
         writeStartTag( TABLE_CELL_TAG, "number-columns-spanned", "2" );
-        //writeStartTag( TABLE_TAG, "table-layout", "fixed" );
         writeln( "<fo:table table-layout=\"fixed\" width=\"100%\" >" );
         writeEmptyTag( TABLE_COLUMN_TAG, "column-width", "2.083in" );
         writeEmptyTag( TABLE_COLUMN_TAG, "column-width", "2.083in" );
@@ -842,8 +898,8 @@
 
         writeStartTag( TABLE_CELL_TAG, "number-columns-spanned", "2", 
"cover.border.left" );
         writeStartTag( BLOCK_TAG, "cover.title" );
-        write( title );
-        // TODO: version
+        write( title == null ? "" : title );
+        write( version == null ? "" : " v. " + version );
         writeEndTag( BLOCK_TAG );
         writeEndTag( TABLE_CELL_TAG );
         writeEndTag( TABLE_ROW_TAG );
@@ -856,7 +912,10 @@
 
         writeStartTag( TABLE_CELL_TAG, "number-columns-spanned", "2", 
"cover.border.left.bottom" );
         writeStartTag( BLOCK_TAG, "cover.subtitle" );
-        // TODO: sub title (cover type)
+        write( subtitle == null ? "" : subtitle );
+        writeEndTag( BLOCK_TAG );
+        writeStartTag( BLOCK_TAG, "cover.subtitle" );
+        write( type == null ? "" : type );
         writeEndTag( BLOCK_TAG );
         writeEndTag( TABLE_CELL_TAG );
         writeEndTag( TABLE_ROW_TAG );
@@ -884,14 +943,20 @@
 
         writeStartTag( TABLE_ROW_TAG, "height", "0.3in" );
         writeStartTag( TABLE_CELL_TAG, "" );
-        writeStartTag( BLOCK_TAG, "height", "0.3in", "cover.subtitle" );
-        write( author );
+        MutableAttributeSet att = getFoConfiguration().getAttributeSet( 
"cover.subtitle" );
+        att.addAttribute( "height", "0.3in" );
+        att.addAttribute( "text-align", "left" );
+        writeStartTag( BLOCK_TAG, att );
+        write( compName == null ? "" : compName );
         writeEndTag( BLOCK_TAG );
         writeEndTag( TABLE_CELL_TAG );
 
         writeStartTag( TABLE_CELL_TAG, "" );
-        writeStartTag( BLOCK_TAG, "height", "0.3in", "cover.subtitle" );
-        // TODO: date
+        att = getFoConfiguration().getAttributeSet( "cover.subtitle" );
+        att.addAttribute( "height", "0.3in" );
+        att.addAttribute( "text-align", "right" );
+        writeStartTag( BLOCK_TAG, att );
+        write( date == null ? "" : date );
         writeEndTag( BLOCK_TAG );
         writeEndTag( TABLE_CELL_TAG );
 


Reply via email to