Browse Source

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.


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198376 13f79535-47bb-0310-9956-ffa450edef68
tags/Root_Temp_KnuthStylePageBreaking
Jeremias Maerki 19 years ago
parent
commit
e68c91ec57
1 changed files with 35 additions and 10 deletions
  1. 35
    10
      src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java

+ 35
- 10
src/java/org/apache/fop/layoutmgr/LayoutManagerMapping.java View File

@@ -31,9 +31,7 @@ import org.apache.fop.apps.FOPException;

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.InstreamForeignObject;
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.PageSequence;
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 class LayoutManagerMapping implements LayoutManagerMaker {
}

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) {

Loading…
Cancel
Save