if (getProgress() == FONodePL.BREAK_AFTER) {
return Status.OK;
}
if (! (areaNode instanceof BlockContentFactory)) {
throw new AreaTreeException("Area \"" + areaNode.getAreaName()
+ "\" cannot contain a TableArea.");
}
final BlockContentFactory bcArea = (BlockContentFactory) areaNode;
if (getProgress() == FONodePL.START) {
if (areaNode instanceof NormalBlockArea) {
getLayout().completeCurrentLineInBlock(
(NormalBlockArea) areaNode);
}
setProgress(0);
if (this.table.traitBreakBefore(areaNode) == Break.PAGE) {
return Status.FORCE_PAGE_BREAK;
}
if (this.table.traitBreakBefore(areaNode) == Break.ODD_PAGE) {
return Status.FORCE_PAGE_BREAK_ODD;
}
if (this.table.traitBreakBefore(areaNode) == Break.EVEN_PAGE) {
return Status.FORCE_PAGE_BREAK_EVEN;
}
/* Process the marker children. */
for (int i = getProgress(); i < this.table.qtyMarkerChildren();
i++) {
final Fo fo = this.table.getChildAt(i);
if (fo instanceof Marker) {
final MarkerPL markerPL = (MarkerPL) getLayoutProxy(fo);
markerPL.layout(areaNode, graftingPoint);
this.setProgress(i);
} else {
throw new AreaTreeException("Marker object expected.");
}
}
}
/* For now, we bail out if the columns widths are not specified. */