From 4d65912a7f4ea856873eba57c9f39435fe4c12ef Mon Sep 17 00:00:00 2001 From: "Andreas L. Delmelle" Date: Sun, 6 Feb 2011 15:33:17 +0000 Subject: [PATCH] Code fixups git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1067684 13f79535-47bb-0310-9956-ffa450edef68 --- .../inline/WrapperLayoutManager.java | 37 +++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/src/java/org/apache/fop/layoutmgr/inline/WrapperLayoutManager.java b/src/java/org/apache/fop/layoutmgr/inline/WrapperLayoutManager.java index 4b93bcdac..16d7a45b6 100644 --- a/src/java/org/apache/fop/layoutmgr/inline/WrapperLayoutManager.java +++ b/src/java/org/apache/fop/layoutmgr/inline/WrapperLayoutManager.java @@ -24,10 +24,16 @@ import org.apache.fop.area.Block; import org.apache.fop.fo.flow.Wrapper; import org.apache.fop.layoutmgr.BlockLayoutManager; import org.apache.fop.layoutmgr.BlockStackingLayoutManager; +import org.apache.fop.layoutmgr.KnuthBox; +import org.apache.fop.layoutmgr.KnuthSequence; import org.apache.fop.layoutmgr.LayoutContext; +import org.apache.fop.layoutmgr.ListElement; import org.apache.fop.layoutmgr.PositionIterator; import org.apache.fop.layoutmgr.TraitSetter; +import java.util.LinkedList; +import java.util.List; + /** * This is the layout manager for the fo:wrapper formatting object. */ @@ -42,6 +48,7 @@ public class WrapperLayoutManager extends LeafNodeLayoutManager { } /** {@inheritDoc} */ + @Override public InlineArea get(LayoutContext context) { // Create a zero-width, zero-height dummy area so this node can // participate in the ID handling. Otherwise, addId() wouldn't @@ -54,14 +61,38 @@ public class WrapperLayoutManager extends LeafNodeLayoutManager { return area; } + /** + * Overridden to generate a proper {@link ListElement}, if the parent + * requires it (i.e. is a block-container, list-item-body...) + * If the parent is a block, the line LM will take care of properly + * wrapping the sequence in a line box. + * {@inheritDoc} + */ + @Override + public List getNextKnuthElements(LayoutContext context, int alignment) { + List returnList = super.getNextKnuthElements(context, alignment); + KnuthSequence seq = (KnuthSequence) returnList.get(0); + ListElement tempElement = (ListElement) seq.get(0); + if (parentLayoutManager instanceof BlockStackingLayoutManager + && !(parentLayoutManager instanceof BlockLayoutManager)) { + // replace inline box with a block box + returnList = new LinkedList(); + KnuthBox auxiliaryBox = new KnuthBox(0, tempElement.getPosition(), true); + returnList.add(auxiliaryBox); + } else { + // make sure the inline box is an auxiliary one + seq.set(0, new KnuthInlineBox(0, null, tempElement.getPosition(), true)); + } + return returnList; + } + /** * Add the area for this layout manager. * This adds the dummy area to the parent, *if* it has an id * - otherwise it serves no purpose. - * - * @param posIter the position iterator - * @param context the layout context for adding the area + * {@inheritDoc} */ + @Override public void addAreas(PositionIterator posIter, LayoutContext context) { if (fobj.hasId()) { addId(); -- 2.39.5