public Document nextTableRow(String atts) { // peek at current cell - stay with it IF // + it's the first cell in the row // + the current cursor points at the first child (a block) // + the block pointed by cursor is empty Element cell = peek("table-cell", "nextTableRow() is not applicable outside enclosing table"); if (cell.getPreviousSibling() == null && cursor == cell.getFirstChild() && !cursor.hasChildNodes()) { attributes((Element) cell.getParentNode(), atts); return this; } // pop to table pop("table", "nextTableRow() is not applicable outside enclosing table"); Element table = cursor; // last child is already table-body? if (table.getLastChild().getNodeName().equals("table-body")) { cursor = (Element) table.getLastChild(); } else { push("table-body"); } // add row push("table-row", atts); // add cell push("table-cell", "border=" + table.getAttribute("border")); push("block"); // done return this; }
/** Add a paragraph */ public Document nextParagraph(String format) { // start a new block if the current is not-empty if (cursor.getFirstChild() != null) pop().push("block", format); else attributes(cursor, format); return this; }
public Document nextTableCell(String atts) { // peek at current cell - stay with it IF // + it's the first cell in the row // + the current cursor points at the first child (a block) // + the block pointed by cursor is empty Element cell = peek("table-cell", "nextTableCell() is not applicable outside enclosing table"); if (cell.getPreviousSibling() == null && cursor == cell.getFirstChild() && !cursor.hasChildNodes()) { attributes(cell, atts); // add empty content to block so another call to nextTableCell() willl actually move forward push("inline", "").pop(); return this; } // peek at row Element row = peek("table-row", "nextTableCell() is not applicable outside enclosing table row"); int cells = row.getElementsByTagName("table-cell").getLength(); // peek at table - add new row if we have all columns already Element table = peek("table", "nextTableCell() is not applicable outside enclosing table"); int cols = table.getElementsByTagName("table-column").getLength(); if (cols > 0 && cells == cols) return nextTableRow(); // pop to row pop("table-row", "nextTableCell() is not applicable outside enclosing table row"); // 20060215 wanted to use border=inherit here but that would require table-row // and table-body to have border=inherit as well. table-body can't have a // border property in a table with border-collapse=separate (which is the only // model FOP supports). // So we're simply doing our own 'inherit' here :) Alternative would be to do // us border=from-nearest-specified-value() on each cell or border=inherit // on the table-columns and then border=from-table-column() on the cells. // add now push("table-cell", "border=" + table.getAttribute("border") + "," + atts); push("block"); // done return this; }