keiron      2002/11/28 05:04:51

  Modified:    src/org/apache/fop/layoutmgr/list
                        ListBlockLayoutManager.java
                        ListItemLayoutManager.java
               src/org/apache/fop/layoutmgr/table Cell.java
                        TableLayoutManager.java
  Log:
  added table header and footer
  
  Revision  Changes    Path
  1.5       +2 -1      
xml-fop/src/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java
  
  Index: ListBlockLayoutManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/org/apache/fop/layoutmgr/list/ListBlockLayoutManager.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ListBlockLayoutManager.java       18 Nov 2002 15:54:15 -0000      1.4
  +++ ListBlockLayoutManager.java       28 Nov 2002 13:04:51 -0000      1.5
  @@ -104,6 +104,7 @@
                           } else {
                               curLM.resetPosition(null);
                           }
  +                        over = true;
                           break;
                       }
                       stackSize.add(bp.getStackingSize());
  
  
  
  1.6       +2 -1      
xml-fop/src/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java
  
  Index: ListItemLayoutManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/org/apache/fop/layoutmgr/list/ListItemLayoutManager.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ListItemLayoutManager.java        19 Nov 2002 07:00:27 -0000      1.5
  +++ ListItemLayoutManager.java        28 Nov 2002 13:04:51 -0000      1.6
  @@ -135,6 +135,7 @@
                           } else {
                               curLM.resetPosition(null);
                           }
  +                        over = true;
                           break;
                       } else {
                           lastPos = bp;
  
  
  
  1.8       +2 -1      xml-fop/src/org/apache/fop/layoutmgr/table/Cell.java
  
  Index: Cell.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/org/apache/fop/layoutmgr/table/Cell.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Cell.java 18 Nov 2002 15:54:16 -0000      1.7
  +++ Cell.java 28 Nov 2002 13:04:51 -0000      1.8
  @@ -258,6 +258,7 @@
       public void resetPosition(Position resetPos) {
           if (resetPos == null) {
               reset(null);
  +            childBreaks.clear();
           }
       }
   }
  
  
  
  1.6       +39 -6     
xml-fop/src/org/apache/fop/layoutmgr/table/TableLayoutManager.java
  
  Index: TableLayoutManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/org/apache/fop/layoutmgr/table/TableLayoutManager.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TableLayoutManager.java   18 Nov 2002 15:54:16 -0000      1.5
  +++ TableLayoutManager.java   28 Nov 2002 13:04:51 -0000      1.6
  @@ -86,6 +86,7 @@
        */
       public void setTableHeader(Body th) {
           tableHeader = th;
  +        tableHeader.setParentLM(this);
       }
   
       /**
  @@ -95,6 +96,7 @@
        */
       public void setTableFooter(Body tf) {
           tableFooter = tf;
  +        tableFooter.setParentLM(this);
       }
   
       /**
  @@ -115,14 +117,26 @@
   
           MinOptMax headerSize = null;
           if (tableHeader != null) {
  +            tableHeader.resetPosition(null);
               headerBreak = getHeight(tableHeader, context);
               headerSize = headerBreak.getStackingSize();
  +            stackSize.add(headerSize);
           }
   
           MinOptMax footerSize = null;
           if (tableFooter != null) {
  +            tableFooter.resetPosition(null);
               footerBreak = getHeight(tableFooter, context);
               footerSize = footerBreak.getStackingSize();
  +            stackSize.add(footerSize);
  +        }
  +
  +        if (stackSize.opt > context.getStackLimit().max) {
  +            BreakPoss breakPoss = new BreakPoss(
  +                                    new LeafPosition(this, 0));
  +            breakPoss.setFlag(BreakPoss.NEXT_OVERFLOWS, true);
  +            breakPoss.setStackingSize(stackSize);
  +            return breakPoss;
           }
   
           while ((curLM = (Body)getChildLM()) != null) {
  @@ -213,7 +227,6 @@
                                  new SectionPosition(this, breaks.size() - 1, 
breaks));
           breakPoss.setStackingSize(stackSize);
           return breakPoss;
  -
       }
   
       /**
  @@ -230,13 +243,22 @@
   
           // add column, body then row areas
   
  -        // add table header areas
  -
           int tableHeight = 0;
  -
           Body childLM;
  -        int iStartPos = 0;
           LayoutContext lc = new LayoutContext(0);
  +
  +        // add table header areas
  +        if (headerBreak != null) {
  +            SectionPosition pos = (SectionPosition)headerBreak.getPosition();
  +            List list = pos.list;
  +            PositionIterator breakPosIter = new BreakPossPosIter(list, 0, 
list.size() + 1);
  +            while ((childLM = (Body)breakPosIter.getNextChildLM()) != null) {
  +                childLM.addAreas(breakPosIter, lc);
  +                tableHeight += childLM.getBodyHeight();
  +            }
  +        }
  +
  +        int iStartPos = 0;
           while (parentIter.hasNext()) {
               LeafPosition lfp = (LeafPosition) parentIter.next();
               // Add the block areas to Area
  @@ -245,12 +267,23 @@
                                      lfp.getLeafPos() + 1);
               iStartPos = lfp.getLeafPos() + 1;
               while ((childLM = (Body)breakPosIter.getNextChildLM()) != null) {
  +                childLM.setYOffset(tableHeight);
                   childLM.addAreas(breakPosIter, lc);
                   tableHeight += childLM.getBodyHeight();
               }
           }
   
           // add footer areas
  +        if (footerBreak != null) {
  +            SectionPosition pos = (SectionPosition)footerBreak.getPosition();
  +            List list = pos.list;
  +            PositionIterator breakPosIter = new BreakPossPosIter(list, 0, 
list.size() + 1);
  +            while ((childLM = (Body)breakPosIter.getNextChildLM()) != null) {
  +                childLM.setYOffset(tableHeight);
  +                childLM.addAreas(breakPosIter, lc);
  +                tableHeight += childLM.getBodyHeight();
  +            }
  +        }
   
           curBlockArea.setHeight(tableHeight);
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to