protected void handleCellSpanning() {
RtfCell deletedCell = new RtfCell(true);
for(int i = 0; i < this.cells.size(); i++) {
RtfCell rtfCell = (RtfCell) this.cells.get(i);
if(rtfCell.getColspan() > 1) {
int cSpan = rtfCell.getColspan();
for(int j = i + 1; j < i + cSpan; j++) {
if(j < this.cells.size()) {
RtfCell rtfCellMerge = (RtfCell) this.cells.get(j);
rtfCell.setCellRight(rtfCell.getCellRight() + rtfCellMerge.getCellWidth());
rtfCell.setCellWidth(rtfCell.getCellWidth() + rtfCellMerge.getCellWidth());
this.cells.set(j, deletedCell);
}
}
}
if(rtfCell.getRowspan() > 1) {
ArrayList rows = this.parentTable.getRows();
for(int j = 1; j < rtfCell.getRowspan(); j++) {
RtfRow mergeRow = (RtfRow) rows.get(this.rowNumber + j);
if(this.rowNumber + j < rows.size()) {
RtfCell rtfCellMerge = (RtfCell) mergeRow.getCells().get(i);
rtfCellMerge.setCellMergeChild(rtfCell);
}
if(rtfCell.getColspan() > 1) {
int cSpan = rtfCell.getColspan();
for(int k = i + 1; k < i + cSpan; k++) {
if(k < mergeRow.getCells().size()) {
mergeRow.getCells().set(k, deletedCell);
}
}
}
}
}
}
}
Performs a second pass over all cells to handle cell row/column spanning. |