Class RtfExtraRowSet


public class RtfExtraRowSet extends RtfContainer

Used to add extra table rows after a row that contains a nested table:

  • created by RtfTableRow before generating RTF code
  • an RtfTableCell that contains a nested table can ask this to put some of its children in extra rows that after the current row
  • once RtfTableRow is done rendering its children, it renders this, causing extra rows to be generated, with content that can come from several RtfTableCells

See org.apache.fop.rtf.rtflib.testdocs.NestedTable for an example of usage.

This work was authored by Bertrand Delacretaz (bdelacretaz@codeconsult.ch).

  • Field Details

    • DEFAULT_IDNUM

      static final int DEFAULT_IDNUM
      See Also:
    • parentITableColumnsInfo

      private ITableColumnsInfo parentITableColumnsInfo
      Parent table context (added by Boris Poudérous on july 2002 in order to process nested tables)
    • cells

      private final List cells
      While a top-level RtfTableRow is being rendered, we build a list of RtfTableCells that must be rendered in extra rows. This holds a cell with positioning information
    • maxRowIndex

      private int maxRowIndex
      our maximum row index
  • Constructor Details

    • RtfExtraRowSet

      RtfExtraRowSet(Writer w) throws IOException
      an RtfExtraRowSet has no parent, it is only used temporary during generation of RTF for an RtfTableRow
      Throws:
      IOException
  • Method Details

    • addTable

      int addTable(RtfTable tbl, int rowIndex, int xOffset)
      Add all cells of given Table to this set for later rendering in extra rows
      Parameters:
      rowIndex - index of first extra row to create to hold cells of tbl
      xOffset - horizontal position of left edge of first column of tbl
      Returns:
      index of extra row to use for elements that follow this table in the same cell
    • addRow

      private void addRow(RtfTableRow row, int rowIndex, int xOffset)
      add all cells of given row to this set
    • createExtraCell

      RtfTableCell createExtraCell(int rowIndex, int xOffset, int cellWidth, RtfAttributes parentCellAttributes) throws IOException
      create an extra cell to hold content that comes after a nested table in a cell Modified by Boris Poudérous in order to permit the extra cell to have the attributes of its parent cell
      Throws:
      IOException
    • writeRtfContent

      protected void writeRtfContent() throws IOException
      render extra RtfTableRows containing all the extra RtfTableCells that we contain
      Overrides:
      writeRtfContent in class RtfContainer
      Throws:
      IOException - for I/O problems
    • writeRow

      private void writeRow(List cells) throws IOException
      write one RtfTableRow containing given PositionedCells
      Throws:
      IOException
    • allCellsEmpty

      private static boolean allCellsEmpty(List cells)
      true if all cells of given list are empty
      Parameters:
      cells - List of PositionedCell objects
    • isEmpty

      public boolean isEmpty()
      As this contains cells from several rows, we say that it's empty only if we have no cells. writeRow makes the decision about rendering specific rows
      Overrides:
      isEmpty in class RtfContainer
      Returns:
      false (always)
    • getParentITableColumnsInfo

      public ITableColumnsInfo getParentITableColumnsInfo()
      Returns:
      The table context of the parent table Added by Boris Poudérous on july 2002 in order to process nested tables
    • setParentITableColumnsInfo

      public void setParentITableColumnsInfo(ITableColumnsInfo parentITableColumnsInfo)
      Parameters:
      parentITableColumnsInfo - table context to set