Author: vhennebert
Date: Mon Apr 28 19:25:12 2014
New Revision: 1590760

URL: http://svn.apache.org/r1590760
Log:
Made WhitespaceManagement.getKnuthElements more robust by iterating over 
childLM.getNextKnuthElements

Modified:
    
xmlgraphics/fop/branches/Temp_WhitespaceManagement/src/java/org/apache/fop/layoutmgr/MultiSwitchLayoutManager.java

Modified: 
xmlgraphics/fop/branches/Temp_WhitespaceManagement/src/java/org/apache/fop/layoutmgr/MultiSwitchLayoutManager.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_WhitespaceManagement/src/java/org/apache/fop/layoutmgr/MultiSwitchLayoutManager.java?rev=1590760&r1=1590759&r2=1590760&view=diff
==============================================================================
--- 
xmlgraphics/fop/branches/Temp_WhitespaceManagement/src/java/org/apache/fop/layoutmgr/MultiSwitchLayoutManager.java
 (original)
+++ 
xmlgraphics/fop/branches/Temp_WhitespaceManagement/src/java/org/apache/fop/layoutmgr/MultiSwitchLayoutManager.java
 Mon Apr 28 19:25:12 2014
@@ -59,12 +59,12 @@ public class MultiSwitchLayoutManager ex
     }
 
     private interface KnuthElementsGenerator {
-        List<ListElement> getKnuthElement(LayoutContext context, int 
alignment);
+        List<ListElement> getKnuthElements(LayoutContext context, int 
alignment);
     }
 
     private class DefaultKnuthListGenerator implements KnuthElementsGenerator {
 
-        public List<ListElement> getKnuthElement(LayoutContext context, int 
alignment) {
+        public List<ListElement> getKnuthElements(LayoutContext context, int 
alignment) {
             List<ListElement> knuthList = new LinkedList<ListElement>();
             LayoutManager childLM = getChildLM();
             while (!childLM.isFinished()) {
@@ -83,7 +83,8 @@ public class MultiSwitchLayoutManager ex
 
     private class WhitespaceManagement implements KnuthElementsGenerator {
 
-        public List<ListElement> getKnuthElement(LayoutContext context, int 
alignment) {
+        @SuppressWarnings("unchecked")
+        public List<ListElement> getKnuthElements(LayoutContext context, int 
alignment) {
 
             MultiSwitchLayoutManager mslm = MultiSwitchLayoutManager.this;
             List<ListElement> knuthList = new LinkedList<ListElement>();
@@ -91,18 +92,17 @@ public class MultiSwitchLayoutManager ex
                     new WhitespaceManagementPosition(mslm));
             LayoutManager childLM;
             while ((childLM = getChildLM()) != null) {
-                if (!childLM.isFinished()) {
-                    LayoutContext childLC = makeChildLayoutContext(context);
-                    List childElements = childLM.getNextKnuthElements(childLC, 
alignment);
-                    if (childElements != null) {
-                        List<ListElement> newList = new 
LinkedList<ListElement>();
-                        wrapPositionElements(childElements, newList);
-                        // TODO Doing space resolution here is wrong.
-                        SpaceResolver.resolveElementList(newList);
-                        int contentLength = 
ElementListUtils.calcContentLength(newList);
-                        penalty.addVariant(penalty.new Variant(newList, 
contentLength));
-                    }
+                LayoutContext childLC = makeChildLayoutContext(context);
+                List<ListElement> childElements = new 
LinkedList<ListElement>();
+                while (!childLM.isFinished()) {
+                    childElements.addAll(childLM.getNextKnuthElements(childLC, 
alignment));
                 }
+                List<ListElement> wrappedElements = new 
LinkedList<ListElement>();
+                wrapPositionElements(childElements, wrappedElements);
+                // TODO Doing space resolution here is wrong.
+                SpaceResolver.resolveElementList(wrappedElements);
+                int contentLength = 
ElementListUtils.calcContentLength(wrappedElements);
+                penalty.addVariant(penalty.new Variant(wrappedElements, 
contentLength));
             }
             // Prevent the penalty from being ignored if it is at the 
beginning of the content
             knuthList.add(new KnuthBox(0, new Position(mslm), false));
@@ -129,7 +129,7 @@ public class MultiSwitchLayoutManager ex
     @Override
     public List<ListElement> getNextKnuthElements(LayoutContext context, int 
alignment) {
         referenceIPD = context.getRefIPD();
-        List<ListElement> knuthList = knuthGen.getKnuthElement(context, 
alignment);
+        List<ListElement> knuthList = knuthGen.getKnuthElements(context, 
alignment);
         setFinished(true);
         return knuthList;
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to