org.apache.fop.render.rtf.rtflib.tools

## Class BuilderContext

- java.lang.Object
- - org.apache.fop.render.rtf.rtflib.tools.BuilderContext

    public class BuilderContext
    extends Object

A BuilderContext holds context information when building an RTF document.

This class was originally developed by Bertrand Delacretaz bdelacretaz@codeconsult.ch for the JFOR project and is now integrated into FOP.

This work was authored by Bertrand Delacretaz (bdelacretaz@codeconsult.ch), Andreas Putz (a.putz@skynamics.com), and Peter Herweg (pherweg@web.de).

### Field Summary

Fields
`protected static org.apache.commons.logging.Log` `LOG` Static logging instance

### Constructor Summary

Constructors
Constructor and Description
`BuilderContext(IRtfOptions rtfOptions)` Construct a builder context.

### Method Summary

All Methods Instance Methods Concrete Methods
`RtfContainer` `getContainer(Class containerClass, boolean required, Object forWhichBuilder)` Find the "nearest" container that implements the given interface on our stack.
`TableContext` `getTableContext()`
`void` `popContainer(Class containerClass, RTFHandler handler)` pop the topmost RtfContainer from our stack
`void` `popPart(Class part, RTFHandler handler)` pop the topmost part class from our stack
`void` `popTableContext()` Pop a TableContext from our stack.
`void` `pushContainer(RtfContainer c)` Push an RtfContainer on our stack.
`void` `pushPart(FObj part)` Push a Class representing a non-writeable section of the FO tree
`void` `pushTableContext(TableContext tc)` Push a TableContext to our stack.
`void` `replaceContainer(RtfContainer oldC, RtfContainer newC)` In some cases an RtfContainer must be replaced by another one on the stack.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### LOG

    protected static final org.apache.commons.logging.Log LOG

Static logging instance

### Constructor Detail

#### BuilderContext

    public BuilderContext(IRtfOptions rtfOptions)

Construct a builder context.

Parameters:
  `rtfOptions` - some options

### Method Detail

#### getContainer

    public RtfContainer getContainer(Class containerClass,
                                     boolean required,
                                     Object forWhichBuilder)
                              throws RtfException

Find the "nearest" container that implements the given interface on our stack.

Parameters:
  `containerClass` - class of container
  `required` - if true, ConverterException is thrown if no container found
  `forWhichBuilder` - used in error message if container not found
Returns:
  the container
Throws:
  `RtfException` - if not caught

#### pushContainer

    public void pushContainer(RtfContainer c)

Push an RtfContainer on our stack.

Parameters:
  `c` - the container

#### pushPart

    public void pushPart(FObj part)

Push a Class representing a non-writeable section of the FO tree

Parameters:
  `part` - the part

#### replaceContainer

    public void replaceContainer(RtfContainer oldC,
                                 RtfContainer newC)
                          throws Exception

In some cases an RtfContainer must be replaced by another one on the stack. This happens when handling nested fo:blocks for example: after handling a nested block the enclosing block must switch to a new paragraph container to handle what follows the nested block. TODO: what happens to elements that are "more on top" than oldC on the stack? shouldn't they be closed or something?

Parameters:
  `oldC` - old container
  `newC` - new container
Throws:
  `Exception` - if not caught

#### popContainer

    public void popContainer(Class containerClass,
                             RTFHandler handler)

pop the topmost RtfContainer from our stack

#### popPart

    public void popPart(Class part,
                        RTFHandler handler)

pop the topmost part class from our stack

#### getTableContext

    public TableContext getTableContext()

Returns:
  the current TableContext

#### pushTableContext

    public void pushTableContext(TableContext tc)

Push a TableContext to our stack.

Parameters:
  `tc` - the table context

#### popTableContext

    public void popTableContext()

Pop a TableContext from our stack.