jeremias    2005/02/04 02:33:39

  Modified:    src/java/org/apache/fop/layoutmgr LayoutManagerMapping.java
  Log:
  Better table-column build-up. Columns can now be in non-consecutive order 
(using column-number) and number-columns-repeated is now respected. Missing 
columns (gaps) are logged as an error but no further handling ATM.
  
  Revision  Changes    Path
  1.5       +36 -11    
xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java
  
  Index: LayoutManagerMapping.java
  ===================================================================
  RCS file: 
/home/cvs/xml-fop/src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LayoutManagerMapping.java 31 Jan 2005 21:16:45 -0000      1.4
  +++ LayoutManagerMapping.java 4 Feb 2005 10:33:39 -0000       1.5
  @@ -31,9 +31,7 @@
   
   import org.apache.fop.fo.FONode;
   import org.apache.fop.fo.FOText;
  -import org.apache.fop.fo.FObj;
   import org.apache.fop.fo.FObjMixed;
  -import org.apache.fop.fo.XMLObj;
   import org.apache.fop.fo.flow.BasicLink;
   import org.apache.fop.fo.flow.BidiOverride;
   import org.apache.fop.fo.flow.Block;
  @@ -48,8 +46,6 @@
   import org.apache.fop.fo.flow.Leader;
   import org.apache.fop.fo.flow.ListBlock;
   import org.apache.fop.fo.flow.ListItem;
  -import org.apache.fop.fo.flow.ListItemBody;
  -import org.apache.fop.fo.flow.ListItemLabel;
   import org.apache.fop.fo.flow.PageNumber;
   import org.apache.fop.fo.flow.PageNumberCitation;
   import org.apache.fop.fo.flow.RetrieveMarker;
  @@ -66,7 +62,6 @@
   import org.apache.fop.fo.pagination.StaticContent;
   import org.apache.fop.fo.pagination.Title;
   
  -import org.apache.fop.layoutmgr.list.Item;
   import org.apache.fop.layoutmgr.list.ListBlockLayoutManager;
   import org.apache.fop.layoutmgr.list.ListItemLayoutManager;
   import org.apache.fop.layoutmgr.table.Body;
  @@ -317,16 +312,46 @@
       }
   
       public static class TableLayoutManagerMaker extends Maker {
  -        public void make(FONode node, List lms) {
  -            Table table = (Table) node;
  -            TableLayoutManager tlm = new TableLayoutManager(table);
  +        
  +        private List getColumnLayoutManagerList(Table table) {
  +            List columnLMs = null;
               List columns = table.getColumns();
               if (columns != null) {
  -                ArrayList columnLMs = new ArrayList();
  +                columnLMs = new java.util.ArrayList();
  +                int colnum = 1;
                   ListIterator iter = columns.listIterator();
                   while (iter.hasNext()) {
  -                    columnLMs.add(new Column((TableColumn) iter.next()));
  +                    TableColumn col = (TableColumn)iter.next();
  +                    if (col.hasColumnNumber()) {
  +                        colnum = col.getColumnNumber();
  +                    }
  +                    for (int i = 0; i < col.getNumberColumnsRepeated(); i++) 
{
  +                        while (colnum > columnLMs.size()) {
  +                            columnLMs.add(null);
  +                        }
  +                        columnLMs.set(colnum - 1, new Column(col));
  +                        colnum++;
  +                    }
  +                }
  +                //Post-processing the list (looking for gaps)
  +                int pos = 1;
  +                ListIterator ppIter = columnLMs.listIterator();
  +                while (ppIter.hasNext()) {
  +                    Column col = (Column)ppIter.next();
  +                    if (col == null) {
  +                        log.error("Found a gap in the table-columns at 
position " + pos);
  +                    }
  +                    pos++;
                   }
  +            }
  +            return columnLMs;
  +        }
  +        
  +        public void make(FONode node, List lms) {
  +            Table table = (Table) node;
  +            TableLayoutManager tlm = new TableLayoutManager(table);
  +            List columnLMs = getColumnLayoutManagerList(table);
  +            if (columnLMs != null) {
                   tlm.setColumns(columnLMs);
               }
               if (table.getTableHeader() != null) {
  
  
  

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

Reply via email to