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 );