Team, While I'm implementing the validateChildNode() methods, I would also like to work on removing the AddLMVisitor visitor pattern[1], and revert to our previous method of having the FO's themselves setup the LayoutManagers via addLayoutManager(). (See here [2][3][4] for examples of the previous way of a year ago.)
I believe this change will help make the fundamental relations between the AreaTreeHandler, the formatting objects, and the layout managers a bit easier to see, and will hopefully lead to making layout less complex. (Architecturally, I'm also not too pleased with the large amount of FO- and LM-specific business logic that AddLMVisitor ends up needing to retain.) We haven't had any demand yet for the visitor pattern, and we can always place it in later if needed after the FO/Layout business logic has been better determined. Any objections? Thanks, Glen [1] http://cvs.apache.org/viewcvs.cgi/xml-fop/src/java/org/apache/fop/layoutmgr/AddLMVisitor.java?rev=1.44&view=auto [2] http://cvs.apache.org/viewcvs.cgi/xml-fop/src/java/org/apache/fop/fo/flow/InstreamForeignObject.java?annotate=1.4#93 [3] http://cvs.apache.org/viewcvs.cgi/xml-fop/src/java/org/apache/fop/fo/flow/ExternalGraphic.java?annotate=1.3#110 [4] http://cvs.apache.org/viewcvs.cgi/xml-fop/src/java/org/apache/fop/fo/flow/PageNumber.java?annotate=1.8#114