You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-dev@xmlgraphics.apache.org by Keiron Liddle <ke...@aftexsw.com> on 2001/12/03 12:45:51 UTC

Re: Simple extension problem

The class ExtensionObj is used in a particular way. Overriding it like you 
have done will not do what you want.

You should extends the FObj class and in the layout method you should 
insert the text that you want into the line area. The same as what is done 
in the FOText class by adding your text to the BlockArea.

On 2001.11.30 16:39 joseph.aloysius.gilvary@census.gov wrote:
> Greetings all,
> 
> I'm learning to write extensions and I'm trying to start simple.
> I think I've followed the directions on the "Extensions" page
> (http://xml.apache.org/fop/extensions.html), but something
> is still missing or incorrect.
> 
> I'm using JDK build 1.4.0-beta3-b84 with Fop0.20.2 on
> Windows 2000, Service Pack 3.
> 
> I have a Java class to simply output the Date in the default
> locale.  Eventually I'll need to get content from log files and
> database tables,  etc., but I just want to see output from my
> extension class show up in the rendered result right now.
> 
> I have an ElementMapping subclass that parallels
> the functionality used to support the fox:label tag.
> 
> I have a single line of text in the text file
> META-INF/services/org.apache.fop.fo.ElementMapping
> with the fully qualified class name for that ElementMapping
> subclass:
> 
> gov.census.geo.pob.fop.extensions.TimeDisplayMapping
> 
> I stored the jar in my Fop-0.20.2\lib\ directory.
> 
> My stylesheet element includes the attributes
>      xmlns:pob="http://jgilvary.geo.census.gov/"
>      extension-element-prefixes="pob"
> 
> When I try to use <pob:time /> in the fo file, there is no output
> in pdf or awt. There are no more error messages about
> Transformer errors or ClassNotFoundExceptions, so I
> think I'm getting closer. Everything else I do in that file
> works (png images, pdf bookmarks and internal links),
> so I believe the set up is correct.
> 
> I'm doing something wrong or not doing something right <G>
> 
> Any help greatly appreciated.
> 
>  Thanks,
> 
>  Joe
> 
> 
>  Functionality class source code:
> package gov.census.geo.pob.fop.extensions;
> 
> import org.apache.fop.fo.*;
> import org.apache.fop.extensions.*;
> import java.util.Date;
> import java.text.SimpleDateFormat;
> 
> public class TimeDisplay extends ExtensionObj {
>     private String today = (new SimpleDateFormat()).format(new Date());
> 
>     public static class Maker extends FObj.Maker {
>         public FObj make(FObj parent, PropertyList propertyList) {
>             return new TimeDisplay(parent, propertyList);
>         }
>     }
> 
>     public static FObj.Maker maker() {
>         return new TimeDisplay.Maker();
>     }
> 
>     public TimeDisplay(FObj parent, PropertyList propertyList) {
>         super(parent, propertyList);
>     }
> 
>     public String toString(){
>      return (today);
>     }
> }
> 
> 
> ElementMapping subclass source code:
> 
> package gov.census.geo.pob.fop.extensions;
> 
> import org.apache.fop.fo.*;
> import org.apache.fop.fo.properties.ExtensionPropertyMapping;
> import org.apache.fop.fo.TreeBuilder;
> 
> import java.util.Enumeration;
> import java.util.HashMap;
> import java.util.Iterator;
> 
> public class TimeDisplayMapping implements ElementMapping {
> 
>     public final static String URI = "http://jgilvary.geo.census.gov/";
> 
>     private static HashMap foObjs = null;
> 
>     public synchronized void addToBuilder(TreeBuilder builder) {
>         if(foObjs == null) {
>             foObjs = new HashMap();
>             foObjs.put("time", TimeDisplay.maker());
>      }
>         builder.addMapping(URI, foObjs);
> 
>         builder.addPropertyList(URI,
>                                 
> ExtensionPropertyMapping.getGenericMappings
> ());
>         /* Add any element mappings */
>         for (Iterator iter = ExtensionPropertyMapping.getElementMappings
> ().iterator();
>                 iter.hasNext(); ) {
>             String elem = (String)iter.next();
>             builder.addElementPropertyList(URI, elem,
> 
> ExtensionPropertyMapping.getElementMapping(elem));
>         }
>     }
> }
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-dev-unsubscribe@xml.apache.org
> For additional commands, email: fop-dev-help@xml.apache.org
> 
> 

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