pherweg 2004/01/10 11:43:58 Modified: src/java/org/apache/fop/fo FOInputHandler.java FOTreeHandler.java src/java/org/apache/fop/render/mif MIFHandler.java src/java/org/apache/fop/render/rtf RTFHandler.java src/java/org/apache/fop/fo/flow Footnote.java FootnoteBody.java src/java/org/apache/fop/render/rtf/rtflib/rtfdoc RtfTextrun.java Added: src/java/org/apache/fop/render/rtf/rtflib/rtfdoc RtfFootnote.java Log: added support for fo:footnote Revision Changes Path 1.13 +24 -3 xml-fop/src/java/org/apache/fop/fo/FOInputHandler.java Index: FOInputHandler.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOInputHandler.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- FOInputHandler.java 1 Jan 2004 21:19:55 -0000 1.12 +++ FOInputHandler.java 10 Jan 2004 19:43:58 -0000 1.13 @@ -58,6 +58,8 @@ import org.apache.fop.fo.flow.BasicLink; import org.apache.fop.fo.flow.Block; import org.apache.fop.fo.flow.ExternalGraphic; +import org.apache.fop.fo.flow.Footnote; +import org.apache.fop.fo.flow.FootnoteBody; import org.apache.fop.fo.flow.Inline; import org.apache.fop.fo.flow.InstreamForeignObject; import org.apache.fop.fo.flow.Leader; @@ -365,9 +367,28 @@ public abstract void foreignObject(InstreamForeignObject ifo); /** - * Process a footnote. + * Process the start of a footnote. + * @param footnote Footnote that is starting */ - public abstract void footnote(); + public abstract void startFootnote(Footnote footnote); + + /** + * Process the ending of a footnote. + * @param footnote Footnote that is ending + */ + public abstract void endFootnote(Footnote footnote); + + /** + * Process the start of a footnote body. + * @param body FootnoteBody that is starting + */ + public abstract void startFootnoteBody(FootnoteBody body); + + /** + * Process the ending of a footnote body. + * @param body FootnoteBody that is ending + */ + public abstract void endFootnoteBody(FootnoteBody body); /** * Process a Leader. 1.12 +24 -4 xml-fop/src/java/org/apache/fop/fo/FOTreeHandler.java Index: FOTreeHandler.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOTreeHandler.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- FOTreeHandler.java 1 Jan 2004 21:19:55 -0000 1.11 +++ FOTreeHandler.java 10 Jan 2004 19:43:58 -0000 1.12 @@ -62,6 +62,8 @@ import org.apache.fop.fo.flow.BasicLink; import org.apache.fop.fo.flow.Block; import org.apache.fop.fo.flow.ExternalGraphic; +import org.apache.fop.fo.flow.Footnote; +import org.apache.fop.fo.flow.FootnoteBody; import org.apache.fop.fo.flow.InstreamForeignObject; import org.apache.fop.fo.flow.Inline; import org.apache.fop.fo.flow.Leader; @@ -446,11 +448,29 @@ } /** - * @see org.apache.fop.fo.FOInputHandler#footnote() + * @see org.apache.fop.fo.FOInputHandler#startFootnote() */ - public void footnote() { + public void startFootnote(Footnote footnote) { } - + + /** + * @see org.apache.fop.fo.FOInputHandler#endFootnote() + */ + public void endFootnote(Footnote footnote) { + } + + /** + * @see org.apache.fop.fo.FOInputHandler#startFootnoteBody() + */ + public void startFootnoteBody(FootnoteBody body) { + } + + /** + * @see org.apache.fop.fo.FOInputHandler#endFootnoteBody() + */ + public void endFootnoteBody(FootnoteBody body) { + } + /** * @see org.apache.fop.fo.FOInputHandler#leader(Leader) */ 1.4 +24 -4 xml-fop/src/java/org/apache/fop/render/mif/MIFHandler.java Index: MIFHandler.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/mif/MIFHandler.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- MIFHandler.java 1 Jan 2004 21:19:55 -0000 1.3 +++ MIFHandler.java 10 Jan 2004 19:43:58 -0000 1.4 @@ -60,6 +60,8 @@ import org.apache.fop.fo.flow.BasicLink; import org.apache.fop.fo.flow.Block; import org.apache.fop.fo.flow.ExternalGraphic; +import org.apache.fop.fo.flow.Footnote; +import org.apache.fop.fo.flow.FootnoteBody; import org.apache.fop.fo.flow.InstreamForeignObject; import org.apache.fop.fo.flow.Inline; import org.apache.fop.fo.flow.Leader; @@ -429,11 +431,29 @@ } /** - * @see org.apache.fop.fo.FOInputHandler#footnote() + * @see org.apache.fop.fo.FOInputHandler#startFootnote() */ - public void footnote() { + public void startFootnote(Footnote footnote) { } - + + /** + * @see org.apache.fop.fo.FOInputHandler#endFootnote() + */ + public void endFootnote(Footnote footnote) { + } + + /** + * @see org.apache.fop.fo.FOInputHandler#startFootnoteBody() + */ + public void startFootnoteBody(FootnoteBody body) { + } + + /** + * @see org.apache.fop.fo.FOInputHandler#endFootnoteBody() + */ + public void endFootnoteBody(FootnoteBody body) { + } + /** * @see org.apache.fop.fo.FOInputHandler#leader(Leader) */ 1.13 +77 -3 xml-fop/src/java/org/apache/fop/render/rtf/RTFHandler.java Index: RTFHandler.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/rtf/RTFHandler.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- RTFHandler.java 1 Jan 2004 21:19:55 -0000 1.12 +++ RTFHandler.java 10 Jan 2004 19:43:58 -0000 1.13 @@ -64,6 +64,8 @@ import org.apache.fop.fo.flow.BasicLink; import org.apache.fop.fo.flow.Block; import org.apache.fop.fo.flow.ExternalGraphic; +import org.apache.fop.fo.flow.Footnote; +import org.apache.fop.fo.flow.FootnoteBody; import org.apache.fop.fo.flow.Inline; import org.apache.fop.fo.flow.InstreamForeignObject; import org.apache.fop.fo.flow.Leader; @@ -96,6 +98,7 @@ import org.apache.fop.render.rtf.rtflib.rtfdoc.RtfElement; import org.apache.fop.render.rtf.rtflib.rtfdoc.RtfExternalGraphic; import org.apache.fop.render.rtf.rtflib.rtfdoc.RtfFile; +import org.apache.fop.render.rtf.rtflib.rtfdoc.RtfFootnote; import org.apache.fop.render.rtf.rtflib.rtfdoc.RtfHyperLink; import org.apache.fop.render.rtf.rtflib.rtfdoc.RtfList; import org.apache.fop.render.rtf.rtflib.rtfdoc.RtfListItem; @@ -852,9 +855,80 @@ } /** - * @see org.apache.fop.fo.FOInputHandler#footnote() + * @see org.apache.fop.fo.FOInputHandler#startFootnote() */ - public void footnote() { + public void startFootnote(Footnote footnote) { + try { + RtfAttributes rtfAttr + = TextAttributesConverter.convertAttributes(footnote.propertyList, null); + + IRtfTextrunContainer container + = (IRtfTextrunContainer)builderContext.getContainer( + IRtfTextrunContainer.class, + true, this); + + RtfTextrun textrun = container.getTextrun(); + RtfFootnote rtfFootnote = textrun.addFootnote(); + + builderContext.pushContainer(rtfFootnote); + + } catch (IOException ioe) { + // TODO could we throw Exception in all FOInputHandler events? + log.error("startFootnote: " + ioe.getMessage()); + throw new Error("IOException: " + ioe); + } catch (Exception e) { + log.error("startFootnote: " + e.getMessage()); + throw new Error("Exception: " + e); + } + } + + /** + * @see org.apache.fop.fo.FOInputHandler#endFootnote() + */ + public void endFootnote(Footnote footnote) { + builderContext.popContainer(); + } + + /** + * @see org.apache.fop.fo.FOInputHandler#startFootnoteBody() + */ + public void startFootnoteBody(FootnoteBody body) { + try { + RtfFootnote rtfFootnote + = (RtfFootnote)builderContext.getContainer( + RtfFootnote.class, + true, this); + + rtfFootnote.startBody(); + } catch (IOException ioe) { + // TODO could we throw Exception in all FOInputHandler events? + log.error("startFootnoteBody: " + ioe.getMessage()); + throw new Error("IOException: " + ioe); + } catch (Exception e) { + log.error("startFootnoteBody: " + e.getMessage()); + throw new Error("Exception: " + e); + } + } + + /** + * @see org.apache.fop.fo.FOInputHandler#endFootnoteBody() + */ + public void endFootnoteBody(FootnoteBody body) { + try { + RtfFootnote rtfFootnote + = (RtfFootnote)builderContext.getContainer( + RtfFootnote.class, + true, this); + + rtfFootnote.endBody(); + } catch (IOException ioe) { + // TODO could we throw Exception in all FOInputHandler events? + log.error("endFootnoteBody: " + ioe.getMessage()); + throw new Error("IOException: " + ioe); + } catch (Exception e) { + log.error("endFootnoteBody: " + e.getMessage()); + throw new Error("Exception: " + e); + } } /** 1.6 +19 -0 xml-fop/src/java/org/apache/fop/fo/flow/Footnote.java Index: Footnote.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/Footnote.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- Footnote.java 19 Sep 2003 14:33:15 -0000 1.5 +++ Footnote.java 10 Jan 2004 19:43:58 -0000 1.6 @@ -50,6 +50,11 @@ */ package org.apache.fop.fo.flow; +// XML +import org.xml.sax.Attributes; + +// FOP +import org.apache.fop.apps.FOPException; import org.apache.fop.fo.FONode; import org.apache.fop.fo.FOTreeVisitor; import org.apache.fop.fo.FObj; @@ -95,6 +100,20 @@ public void acceptVisitor(FOTreeVisitor fotv) { fotv.serveFootnote(this); } + + /** + * @see org.apache.fop.fo.FObj#handleAttrs + */ + public void handleAttrs(Attributes attlist) throws FOPException { + super.handleAttrs(attlist); + + getFOTreeControl().getFOInputHandler().startFootnote(this); + } + protected void end() { + super.end(); + + getFOTreeControl().getFOInputHandler().endFootnote(this); + } } 1.5 +18 -0 xml-fop/src/java/org/apache/fop/fo/flow/FootnoteBody.java Index: FootnoteBody.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/FootnoteBody.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- FootnoteBody.java 16 Sep 2003 05:21:05 -0000 1.4 +++ FootnoteBody.java 10 Jan 2004 19:43:58 -0000 1.5 @@ -50,7 +50,11 @@ */ package org.apache.fop.fo.flow; +// XML +import org.xml.sax.Attributes; + // FOP +import org.apache.fop.apps.FOPException; import org.apache.fop.fo.FONode; import org.apache.fop.fo.FObj; import org.apache.fop.fo.FOTreeVisitor; @@ -79,4 +83,18 @@ fotv.serveFootnoteBody(this); } + /** + * @see org.apache.fop.fo.FObj#handleAttrs + */ + public void handleAttrs(Attributes attlist) throws FOPException { + super.handleAttrs(attlist); + + getFOTreeControl().getFOInputHandler().startFootnoteBody(this); + } + + protected void end() { + super.end(); + + getFOTreeControl().getFOInputHandler().endFootnoteBody(this); + } } 1.8 +4 -0 xml-fop/src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfTextrun.java Index: RtfTextrun.java =================================================================== RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfTextrun.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- RtfTextrun.java 1 Jan 2004 21:19:55 -0000 1.7 +++ RtfTextrun.java 10 Jan 2004 19:43:58 -0000 1.8 @@ -164,6 +164,10 @@ RtfString r = new RtfString(this, writer, s); } + public RtfFootnote addFootnote() throws IOException { + return new RtfFootnote(this, writer); + } + public void addParagraphBreak() throws IOException { RtfParagraphBreak r = new RtfParagraphBreak(this, writer); } 1.1 xml-fop/src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfFootnote.java Index: RtfFootnote.java =================================================================== /* * $Id: RtfFootnote.java,v 1.1 2004/01/10 19:43:58 pherweg Exp $ * ============================================================================ * The Apache Software License, Version 1.1 * ============================================================================ * * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The end-user documentation included with the redistribution, if any, must * include the following acknowledgment: "This product includes software * developed by the Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, if * and wherever such third-party acknowledgments normally appear. * * 4. The names "FOP" and "Apache Software Foundation" must not be used to * endorse or promote products derived from this software without prior * written permission. For written permission, please contact * [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", nor may * "Apache" appear in their name, without prior written permission of the * Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ============================================================================ * * This software consists of voluntary contributions made by many individuals * on behalf of the Apache Software Foundation and was originally created by * James Tauber <[EMAIL PROTECTED]>. For more information on the Apache * Software Foundation, please see <http://www.apache.org/>. */ package org.apache.fop.render.rtf.rtflib.rtfdoc; //Java import java.io.Writer; import java.io.IOException; //FOP import org.apache.fop.render.rtf.rtflib.rtfdoc.RtfTextrun; /** Model of an RTF footnote * @author Peter Herweg, [EMAIL PROTECTED] */ public class RtfFootnote extends RtfContainer implements IRtfTextrunContainer { RtfTextrun textrunInline = null; RtfTextrun textrunBody = null; boolean bBody = false; /** Create an RTF list item as a child of given container with default attributes */ RtfFootnote(RtfContainer parent, Writer w) throws IOException { super(parent, w); textrunInline = new RtfTextrun(this, writer, null); textrunBody = new RtfTextrun(this, writer, null); } public RtfTextrun getTextrun() throws IOException { if (bBody) { return textrunBody; } else { return textrunInline; } } /** * write RTF code of all our children * @throws IOException for I/O problems */ protected void writeRtfContent() throws IOException { textrunInline.writeRtfContent(); writeGroupMark(true); writeControlWord("footnote"); writeControlWord("ftnalt"); textrunBody.writeRtfContent(); writeGroupMark(false); } public void startBody() { bBody = true; } public void endBody() { bBody = false; } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]