gmazza 2004/06/11 10:18:51
Modified: src/java/org/apache/fop/apps Document.java Driver.java
src/java/org/apache/fop/fo FOInputHandler.java
FOTreeControl.java FOTreeHandler.java
src/java/org/apache/fop/fo/pagination Title.java
Removed: src/java/org/apache/fop/fo FOTreeEvent.java
FOTreeListener.java
Log:
Consolidated formatPageSequence() into FOTreeHandler.
Revision Changes Path
1.16 +2 -120 xml-fop/src/java/org/apache/fop/apps/Document.java
Index: Document.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/Document.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- Document.java 8 Jun 2004 02:34:31 -0000 1.15
+++ Document.java 11 Jun 2004 17:18:51 -0000 1.16
@@ -20,7 +20,6 @@
// Java
import java.util.Map;
-import java.io.IOException;
import java.util.Set;
import java.util.HashSet;
@@ -28,20 +27,12 @@
import org.apache.fop.area.AreaTree;
import org.apache.fop.area.AreaTreeControl;
import org.apache.fop.area.AreaTreeModel;
-import org.apache.fop.area.Title;
import org.apache.fop.fo.FOInputHandler;
import org.apache.fop.fo.FOTreeControl;
-import org.apache.fop.fo.FOTreeEvent;
-import org.apache.fop.fo.FOTreeListener;
import org.apache.fop.fo.extensions.Bookmarks;
-import org.apache.fop.fo.pagination.PageSequence;
import org.apache.fop.fonts.FontInfo;
import org.apache.fop.layoutmgr.AddLMVisitor;
-import org.apache.fop.layoutmgr.ContentLayoutManager;
-import org.apache.fop.layoutmgr.InlineStackingLayoutManager;
-import org.apache.fop.layoutmgr.LMiter;
-import org.apache.fop.layoutmgr.PageLayoutManager;
import org.apache.commons.logging.Log;
@@ -53,8 +44,7 @@
* Class storing information for the FOP Document being processed, and managing
* the processing of it.
*/
-public class Document implements FOTreeControl, FOTreeListener,
- AreaTreeControl {
+public class Document implements FOTreeControl, AreaTreeControl {
/** The parent Driver object */
private Driver driver;
@@ -112,34 +102,6 @@
}
/**
- * Required by the FOTreeListener interface. It handles an
- * FOTreeEvent that is fired when a PageSequence object has been completed.
- * @param event the FOTreeEvent that was fired
- * @throws FOPException for errors in building the PageSequence
- */
- public void foPageSequenceComplete (FOTreeEvent event) throws FOPException {
- PageSequence pageSeq = event.getPageSequence();
- areaTree.addBookmarksToAreaTree();
- formatPageSequence(pageSeq, areaTree);
- }
-
- /**
- * Required by the FOTreeListener interface. It handles an FOTreeEvent that
- * is fired when the Document has been completely parsed.
- * @param event the FOTreeEvent that was fired
- * @throws SAXException for parsing errors
- */
- public void foDocumentComplete (FOTreeEvent event) throws SAXException {
- //processAreaTree(atModel);
- try {
- areaTree.endDocument();
- driver.getRenderer().stopRenderer();
- } catch (IOException ex) {
- throw new SAXException(ex);
- }
- }
-
- /**
* Get the area tree for this layout handler.
*
* @return the area tree for this document
@@ -178,86 +140,6 @@
*/
public FOInputHandler getFOInputHandler() {
return foInputHandler;
- }
-
- /**
- * Runs the formatting of this page sequence into the given area tree
- *
- * @param pageSeq the PageSequence to be formatted
- * @param areaTree the area tree to format this page sequence into
- * @throws FOPException if there is an error formatting the contents
- */
- private void formatPageSequence(PageSequence pageSeq, AreaTree areaTree)
- throws FOPException {
- Title title = null;
- if (pageSeq.getTitleFO() != null) {
- title = getTitleArea(pageSeq.getTitleFO());
- }
- areaTree.startPageSequence(title);
- // Make a new PageLayoutManager and a FlowLayoutManager
- // Run the PLM in a thread
- // Wait for them to finish.
-
- // If no main flow, nothing to layout!
- if (pageSeq.getMainFlow() == null) {
- return;
- }
-
- // Initialize if already used?
- // this.layoutMasterSet.resetPageMasters();
- if (pageSeq.getPageSequenceMaster() != null) {
- pageSeq.getPageSequenceMaster().reset();
- }
-
- pageSeq.initPageNumber();
-
- // This will layout pages and add them to the area tree
- PageLayoutManager pageLM = new PageLayoutManager(areaTree, pageSeq, this);
- pageLM.setPageCounting(pageSeq.getCurrentPageNumber(),
- pageSeq.getPageNumberGenerator());
-
- // For now, skip the threading and just call run directly.
- pageLM.run();
-
- // Thread layoutThread = new Thread(pageLM);
- // layoutThread.start();
- // log.debug("Layout thread started");
-
- // // wait on both managers
- // try {
- // layoutThread.join();
- // log.debug("Layout thread done");
- // } catch (InterruptedException ie) {
- // log.error("PageSequence.format() interrupted waiting on layout");
- // }
-
- pageSeq.setCurrentPageNumber(pageLM.getPageCount());
- // Tell the root the last page number we created.
-
pageSeq.getRoot().setRunningPageNumberCounter(pageSeq.getCurrentPageNumber());
- }
-
- /**
- * @return the Title area
- */
- public org.apache.fop.area.Title
getTitleArea(org.apache.fop.fo.pagination.Title foTitle) {
- // use special layout manager to add the inline areas
- // to the Title.
- InlineStackingLayoutManager lm;
- lm = new InlineStackingLayoutManager(foTitle);
- lm.setLMiter(new LMiter(lm, foTitle.children.listIterator()));
- lm.initialize();
-
- // get breaks then add areas to title
- org.apache.fop.area.Title title =
- new org.apache.fop.area.Title();
-
- ContentLayoutManager clm = new ContentLayoutManager(title);
- clm.setUserAgent(foTitle.getUserAgent());
- lm.setParent(clm);
-
- clm.fillArea(lm);
-
- return title;
}
/**
1.62 +8 -2 xml-fop/src/java/org/apache/fop/apps/Driver.java
Index: Driver.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/Driver.java,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- Driver.java 8 Jun 2004 02:28:37 -0000 1.61
+++ Driver.java 11 Jun 2004 17:18:51 -0000 1.62
@@ -518,7 +518,6 @@
public void startDocument() throws SAXException {
if (foInputHandler instanceof FOTreeHandler) {
FOTreeHandler foTreeHandler = (FOTreeHandler)foInputHandler;
- foTreeHandler.addFOTreeListener(currentDocument);
}
super.startDocument();
}
@@ -527,7 +526,6 @@
super.endDocument();
if (foInputHandler instanceof FOTreeHandler) {
FOTreeHandler foTreeHandler = (FOTreeHandler)foInputHandler;
- foTreeHandler.removeFOTreeListener(currentDocument);
}
}
@@ -638,4 +636,12 @@
}
}
+ /**
+ * Public accessor for getting the document used by this generation
+ * @return the current Document object
+ */
+ public Document getCurrentDocument() {
+ return currentDocument;
+ }
+
}
1.16 +29 -10 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.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- FOInputHandler.java 31 Mar 2004 10:55:06 -0000 1.15
+++ FOInputHandler.java 11 Jun 2004 17:18:51 -0000 1.16
@@ -19,7 +19,10 @@
package org.apache.fop.fo;
// FOP
+import org.apache.fop.apps.Document;
+import org.apache.fop.apps.Driver;
import org.apache.fop.apps.FOPException;
+import org.apache.fop.area.AreaTree;
import org.apache.fop.fo.flow.BasicLink;
import org.apache.fop.fo.flow.Block;
import org.apache.fop.fo.flow.ExternalGraphic;
@@ -54,10 +57,11 @@
* as our MIF and RTF output targets.
*/
public abstract class FOInputHandler {
+
/**
- * The FOTreeControl object that is controlling the FO Tree being built
+ * The Document object that is controlling the FO Tree being built
*/
- public FOTreeControl foTreeControl = null;
+ public Document doc = null;
/**
* logging instance
@@ -66,11 +70,11 @@
/**
* Main constructor
- * @param foTreeControl the FOTreeControl implementation that is controlling
+ * @param document the apps.Document implementation that is controlling
* the FO Tree being built
*/
- public FOInputHandler(FOTreeControl foTreeControl) {
- this.foTreeControl = foTreeControl;
+ public FOInputHandler(Document document) {
+ doc = document;
}
/**
@@ -90,11 +94,26 @@
}
/**
- * Returns the FontInfo object associated with this FOInputHandler.
- * @return the FontInof object
+ * Returns the FOTreeControl object associated with this FOInputHandler.
+ * @return the FOTreeControl object
*/
- public FOTreeControl getFontInfo() {
- return null;
+ public Document getDocument() {
+ return doc;
+ }
+
+ /**
+ * @return the current Area Tree object
+ */
+ public AreaTree getAreaTree() {
+ return doc.getAreaTree();
+ }
+
+ /**
+ * Returns the Driver object associated with this FOInputHandler.
+ * @return the Driver object
+ */
+ public Driver getDriver() {
+ return doc.getDriver();
}
/**
1.12 +2 -2 xml-fop/src/java/org/apache/fop/fo/FOTreeControl.java
Index: FOTreeControl.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOTreeControl.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- FOTreeControl.java 22 Apr 2004 21:38:39 -0000 1.11
+++ FOTreeControl.java 11 Jun 2004 17:18:51 -0000 1.12
@@ -72,5 +72,5 @@
* @return the FontInfo object associated with this FOTree
*/
FontInfo getFontInfo();
-
+
}
1.16 +91 -58 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.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- FOTreeHandler.java 31 Mar 2004 10:55:06 -0000 1.15
+++ FOTreeHandler.java 11 Jun 2004 17:18:51 -0000 1.16
@@ -19,6 +19,7 @@
package org.apache.fop.fo;
// Java
+import java.io.IOException;
import java.util.HashSet;
import java.util.Iterator;
@@ -26,7 +27,11 @@
import org.xml.sax.SAXException;
// FOP
+import org.apache.fop.apps.Document;
import org.apache.fop.apps.FOPException;
+import org.apache.fop.area.AreaTree;
+import org.apache.fop.area.Title;
+import org.apache.fop.fo.extensions.Bookmarks;
import org.apache.fop.fo.flow.BasicLink;
import org.apache.fop.fo.flow.Block;
import org.apache.fop.fo.flow.ExternalGraphic;
@@ -45,6 +50,11 @@
import org.apache.fop.fo.flow.TableRow;
import org.apache.fop.fo.pagination.Flow;
import org.apache.fop.fo.pagination.PageSequence;
+import org.apache.fop.layoutmgr.ContentLayoutManager;
+import org.apache.fop.layoutmgr.InlineStackingLayoutManager;
+import org.apache.fop.layoutmgr.LMiter;
+import org.apache.fop.layoutmgr.PageLayoutManager;
+
/**
* Defines how SAX events specific to XSL-FO input should be handled when
@@ -81,20 +91,14 @@
private long startTime;
/**
- * Collection of objects that have registered to be notified about
- * FOTreeEvent firings.
- */
- private HashSet foTreeListeners = new HashSet();
-
- /**
* Main constructor
* @param foTreeControl the FOTreeControl implementation that governs this
* FO Tree
* @param store if true then use the store pages model and keep the
* area tree in memory
*/
- public FOTreeHandler(FOTreeControl foTreeControl, boolean store) {
- super(foTreeControl);
+ public FOTreeHandler(Document doc, boolean store) {
+ super(doc);
if (collectStatistics) {
runtime = Runtime.getRuntime();
}
@@ -125,7 +129,12 @@
* @throws SAXException if there is some error
*/
public void endDocument() throws SAXException {
- notifyDocumentComplete();
+ try {
+ getAreaTree().endDocument();
+ getDriver().getRenderer().stopRenderer();
+ } catch (IOException ex) {
+ throw new SAXException(ex);
+ }
if (collectStatistics) {
if (MEM_PROFILE_WITH_GC) {
@@ -184,7 +193,9 @@
logger.debug("Current heap size: " + (memoryNow / 1024L) + "Kb");
}
}
- notifyPageSequenceComplete(pageSequence);
+
+ getAreaTree().addBookmarksToAreaTree();
+ formatPageSequence(pageSequence, getAreaTree());
}
/**
@@ -457,66 +468,88 @@
* @return the font information
*/
public FOTreeControl getFontInfo() {
- return foTreeControl;
+ return doc;
}
/**
- * Add an object to the collection of objects that should be notified about
- * FOTreeEvent firings.
- * @param listener the Object which should be notified
+ * Runs the formatting of this page sequence into the given area tree
+ *
+ * @param pageSeq the PageSequence to be formatted
+ * @param areaTree the area tree to format this page sequence into
+ * @throws FOPException if there is an error formatting the contents
*/
- public void addFOTreeListener (FOTreeListener listener) {
- if (listener == null) {
- return;
+ private void formatPageSequence(PageSequence pageSeq, AreaTree areaTree)
+ throws FOPException {
+ Title title = null;
+ if (pageSeq.getTitleFO() != null) {
+ title = getTitleArea(pageSeq.getTitleFO());
}
- foTreeListeners.add(listener);
- }
+ areaTree.startPageSequence(title);
+ // Make a new PageLayoutManager and a FlowLayoutManager
+ // Run the PLM in a thread
+ // Wait for them to finish.
- /**
- * Remove an object from the collection of objects that should be notified
- * about FOTreeEvent firings.
- * @param listener the Object which should no longer be notified
- */
- public void removeFOTreeListener (FOTreeListener listener) {
- if (listener == null) {
+ // If no main flow, nothing to layout!
+ if (pageSeq.getMainFlow() == null) {
return;
}
- foTreeListeners.remove(listener);
- }
- /**
- * Notify all objects in the foTreeListeners that a "Page Sequence Complete"
- * FOTreeEvent has been fired.
- * @param eventType integer indicating which type of event is created
- * @param event the Event object that should be passed to the listeners
- */
- private void notifyPageSequenceComplete(PageSequence pageSequence)
- throws FOPException {
- FOTreeEvent event = new FOTreeEvent(this);
- event.setPageSequence(pageSequence);
- Iterator iterator = foTreeListeners.iterator();
- FOTreeListener foTreeListenerItem = null;
- while (iterator.hasNext()) {
- foTreeListenerItem = (FOTreeListener)iterator.next();
- foTreeListenerItem.foPageSequenceComplete(event);
+ // Initialize if already used?
+ // this.layoutMasterSet.resetPageMasters();
+ if (pageSeq.getPageSequenceMaster() != null) {
+ pageSeq.getPageSequenceMaster().reset();
}
+
+ pageSeq.initPageNumber();
+
+ // This will layout pages and add them to the area tree
+ PageLayoutManager pageLM = new PageLayoutManager(areaTree, pageSeq,
+ getDocument());
+ pageLM.setPageCounting(pageSeq.getCurrentPageNumber(),
+ pageSeq.getPageNumberGenerator());
+
+ // For now, skip the threading and just call run directly.
+ pageLM.run();
+
+ // Thread layoutThread = new Thread(pageLM);
+ // layoutThread.start();
+ // log.debug("Layout thread started");
+
+ // // wait on both managers
+ // try {
+ // layoutThread.join();
+ // log.debug("Layout thread done");
+ // } catch (InterruptedException ie) {
+ // log.error("PageSequence.format() interrupted waiting on layout");
+ // }
+
+ pageSeq.setCurrentPageNumber(pageLM.getPageCount());
+ // Tell the root the last page number we created.
+
pageSeq.getRoot().setRunningPageNumberCounter(pageSeq.getCurrentPageNumber());
}
/**
- * Notify all objects in the foTreeListeners that a "Document Complete"
- * FOTreeEvent has been fired.
- * @param eventType integer indicating which type of event is created
- * @param event the Event object that should be passed to the listeners
- */
- private void notifyDocumentComplete()
- throws SAXException {
- FOTreeEvent event = new FOTreeEvent(this);
- Iterator iterator = foTreeListeners.iterator();
- FOTreeListener foTreeListenerItem = null;
- while (iterator.hasNext()) {
- foTreeListenerItem = (FOTreeListener)iterator.next();
- foTreeListenerItem.foDocumentComplete(event);
- }
+ * @return the Title area
+ */
+ private org.apache.fop.area.Title
getTitleArea(org.apache.fop.fo.pagination.Title foTitle) {
+ // use special layout manager to add the inline areas
+ // to the Title.
+ InlineStackingLayoutManager lm;
+ lm = new InlineStackingLayoutManager(foTitle);
+ lm.setLMiter(new LMiter(lm, foTitle.children.listIterator()));
+ lm.initialize();
+
+ // get breaks then add areas to title
+ org.apache.fop.area.Title title =
+ new org.apache.fop.area.Title();
+
+ ContentLayoutManager clm = new ContentLayoutManager(title);
+ clm.setUserAgent(foTitle.getUserAgent());
+ lm.setParent(clm);
+
+ clm.fillArea(lm);
+
+ return title;
}
/**
1.15 +2 -2 xml-fop/src/java/org/apache/fop/fo/pagination/Title.java
Index: Title.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/pagination/Title.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- Title.java 27 Feb 2004 17:45:13 -0000 1.14
+++ Title.java 11 Jun 2004 17:18:51 -0000 1.15
@@ -59,7 +59,7 @@
CommonBackground bProps = propMgr.getBackgroundProps();
// Common Font Properties
- Font fontState =
propMgr.getFontState(getFOTreeControl().getFOInputHandler().getFontInfo());
+ Font fontState = propMgr.getFontState(getFOTreeControl());
// Common Margin Properties-Inline
CommonMarginInline mProps = propMgr.getMarginInlineProps();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]