public int CheckBreakBefore(Area area) { if (!(area is ColumnArea)) { switch (properties.GetProperty("break-before").GetEnum()) { case BreakBefore.PAGE: return Status.FORCE_PAGE_BREAK; case BreakBefore.ODD_PAGE: return Status.FORCE_PAGE_BREAK_ODD; case BreakBefore.EVEN_PAGE: return Status.FORCE_PAGE_BREAK_EVEN; case BreakBefore.COLUMN: return Status.FORCE_COLUMN_BREAK; default: return Status.OK; } } else { ColumnArea colArea = (ColumnArea)area; switch (properties.GetProperty("break-before").GetEnum()) { case BreakBefore.PAGE: if (!colArea.hasChildren() && (colArea.getColumnIndex() == 1)) { return Status.OK; } else { return Status.FORCE_PAGE_BREAK; } case BreakBefore.ODD_PAGE: if (!colArea.hasChildren() && (colArea.getColumnIndex() == 1) && (colArea.getPage().getNumber() % 2 != 0)) { return Status.OK; } else { return Status.FORCE_PAGE_BREAK_ODD; } case BreakBefore.EVEN_PAGE: if (!colArea.hasChildren() && (colArea.getColumnIndex() == 1) && (colArea.getPage().getNumber() % 2 == 0)) { return Status.OK; } else { return Status.FORCE_PAGE_BREAK_EVEN; } case BreakBefore.COLUMN: if (!area.hasChildren()) { return Status.OK; } else { return Status.FORCE_COLUMN_BREAK; } default: return Status.OK; } } }