com.lowagie.text.rtf.field

## Class RtfField

- java.lang.Object
- - com.lowagie.text.Chunk
  - - com.lowagie.text.rtf.field.RtfField

- All Implemented Interfaces:
    Element, RtfBasicElement, RtfElementInterface
  Direct Known Subclasses:
    RtfAnchor, RtfPageNumber, RtfTableOfContents, RtfTOCEntry, RtfTotalPageNumber

      public abstract class RtfField
      extends Chunk
      implements RtfBasicElement

  The RtfField class is an abstract base class for all rtf field functionality. Subclasses only need to implement the two abstract methods writeFieldInstContent and writeFieldResultContent. All other field functionality is handled by the RtfField class.
  Version:
    $Id$
  Author:
    Mark Hall (Mark.Hall@mail.room3b.eu), Dirk Weigenand (Dirk.Weigenand@smb-tec.com), Thomas Bickel (tmb99@inode.at)

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected RtfDocument` | `document` The RtfDocument this RtfField belongs to
    `private static byte[]` | `FIELD` Constant for a rtf field
    `private static byte[]` | `FIELD_ALT` Constant for an alt field
    `private static byte[]` | `FIELD_DIRTY` Constant for a dirty field
    `private static byte[]` | `FIELD_EDIT` Constant for a edited field
    `private static byte[]` | `FIELD_INSTRUCTIONS` Constant for the field instructions
    `private static byte[]` | `FIELD_LOCKED` Constant for a locked field
    `private static byte[]` | `FIELD_PRIVATE` Constant for a private field
    `private static byte[]` | `FIELD_RESULT` Constant for the field result
    `private boolean` | `fieldAlt` Is it an alt field
    `private boolean` | `fieldDirty` Is the field dirty
    `private boolean` | `fieldEdit` Is the field edited
    `private boolean` | `fieldLocked` Is the field locked
    `private boolean` | `fieldPrivate` Is the field private
    `private RtfFont` | `font` The RtfFont of this RtfField
    `private boolean` | `inHeader` Whether this RtfElement is in a header
    `private boolean` | `inTable` Whether this RtfField is in a table

    - ### Fields inherited from class com.lowagie.text.Chunk

      `ACTION, attributes, BACKGROUND, CHAR_SPACING, COLOR, content, ENCODING, GENERICTAG, HSCALE, HYPHENATION, IMAGE, LOCALDESTINATION, LOCALGOTO, NEWLINE, NEWPAGE, NEXTPAGE, OBJECT_REPLACEMENT_CHARACTER, PDFANNOTATION, REMOTEGOTO, SEPARATOR, SKEW, SPLITCHARACTER, SUBSUPSCRIPT, TAB, TEXTRENDERMODE, UNDERLINE`

    - ### Fields inherited from interface com.lowagie.text.rtf.RtfBasicElement

      `CLOSE_GROUP, COMMA_DELIMITER, DELIMITER, OPEN_GROUP, TWIPS_FACTOR`

    - ### Fields inherited from interface com.lowagie.text.Element

      `ALIGN_BASELINE, ALIGN_BOTTOM, ALIGN_CENTER, ALIGN_JUSTIFIED, ALIGN_JUSTIFIED_ALL, ALIGN_LEFT, ALIGN_MIDDLE, ALIGN_RIGHT, ALIGN_TOP, ALIGN_UNDEFINED, ANCHOR, ANNOTATION, AUTHOR, CCITT_BLACKIS1, CCITT_ENCODEDBYTEALIGN, CCITT_ENDOFBLOCK, CCITT_ENDOFLINE, CCITTG3_1D, CCITTG3_2D, CCITTG4, CELL, CHAPTER, CHUNK, CREATIONDATE, CREATOR, HEADER, IMGRAW, IMGTEMPLATE, JBIG2, JPEG, JPEG2000, KEYWORDS, LIST, LISTITEM, MARKED, MULTI_COLUMN_TEXT, PARAGRAPH, PHRASE, PRODUCER, PTABLE, RECTANGLE, ROW, SECTION, SUBJECT, TABLE, TITLE, YMARK`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `RtfField(RtfDocument doc)` Constructs a RtfField for a RtfDocument.
    `protected` | `RtfField(RtfDocument doc, Font font)` Constructs a RtfField for a RtfDocument.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `isEmpty()` An RtfField is never empty.
    `boolean` | `isFieldAlt()` Get whether this field is an alt field
    `boolean` | `isFieldDirty()` Get whether this field is dirty
    `boolean` | `isFieldEdit()` Get whether this field is edited
    `boolean` | `isFieldLocked()` Get whether this field is locked
    `boolean` | `isFieldPrivate()` Get whether this field is private
    `boolean` | `isInHeader()` Gets whether this `RtfField` is in a header.
    `boolean` | `isInTable()` Gets whether this `RtfField` is in a table.
    `void` | `setFieldAlt(boolean fieldAlt)` Set whether this field is an alt field
    `void` | `setFieldDirty(boolean fieldDirty)` Set whether this field is dirty
    `void` | `setFieldEdit(boolean fieldEdit)` Set whether this field is edited.
    `void` | `setFieldLocked(boolean fieldLocked)` Set whether this field is locked
    `void` | `setFieldPrivate(boolean fieldPrivate)` Set whether this field is private
    `void` | `setFont(Font font)` Override setFont to perform the correct font handling.
    `void` | `setInHeader(boolean inHeader)` Sets whether this RtfField is in a header
    `void` | `setInTable(boolean inTable)` Sets whether this RtfField is in a table
    `void` | `setRtfDocument(RtfDocument doc)` Sets the RtfDocument this RtfElement belongs to
    `void` | `writeContent(java.io.OutputStream result)` Writes the field to the `OutputStream`.
    `private void` | `writeFieldBegin(java.io.OutputStream result)` Writes the field beginning.
    `private void` | `writeFieldEnd(java.io.OutputStream result)` Writes the end of the field
    `private void` | `writeFieldInstBegin(java.io.OutputStream result)` Writes the beginning of the field instruction area.
    `protected abstract void` | `writeFieldInstContent(java.io.OutputStream result)` Writes the content of the field instruction area.
    `private void` | `writeFieldInstEnd(java.io.OutputStream result)` Writes the end of the field instruction area.
    `private void` | `writeFieldResultBegin(java.io.OutputStream result)` Writes the beginning of the field result area
    `protected abstract void` | `writeFieldResultContent(java.io.OutputStream result)` Writes the content of the pre-calculated field result.
    `private void` | `writeFieldResultEnd(java.io.OutputStream result)` Writes the end of the field result area

    - ### Methods inherited from class com.lowagie.text.Chunk

      `append, getAttributes, getCharacterSpacing, getChunks, getContent, getFont, getHorizontalScaling, getHyphenation, getImage, getTextRise, getWidthPoint, hasAttributes, isContent, isNestable, process, setAction, setAnchor, setAnchor, setAnnotation, setAttributes, setBackground, setBackground, setCharacterSpacing, setGenericTag, setHorizontalScaling, setHyphenation, setLocalDestination, setLocalGoto, setNewPage, setRemoteGoto, setRemoteGoto, setSkew, setSplitCharacter, setTextRenderMode, setTextRise, setUnderline, setUnderline, toString, type`

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

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

- - ### Field Detail

    - #### FIELD

          private static final byte[] FIELD

      Constant for a rtf field

    - #### FIELD_DIRTY

          private static final byte[] FIELD_DIRTY

      Constant for a dirty field

    - #### FIELD_PRIVATE

          private static final byte[] FIELD_PRIVATE

      Constant for a private field

    - #### FIELD_LOCKED

          private static final byte[] FIELD_LOCKED

      Constant for a locked field

    - #### FIELD_EDIT

          private static final byte[] FIELD_EDIT

      Constant for a edited field

    - #### FIELD_ALT

          private static final byte[] FIELD_ALT

      Constant for an alt field

    - #### FIELD_INSTRUCTIONS

          private static final byte[] FIELD_INSTRUCTIONS

      Constant for the field instructions

    - #### FIELD_RESULT

          private static final byte[] FIELD_RESULT

      Constant for the field result

    - #### fieldDirty

          private boolean fieldDirty

      Is the field dirty

    - #### fieldEdit

          private boolean fieldEdit

      Is the field edited

    - #### fieldLocked

          private boolean fieldLocked

      Is the field locked

    - #### fieldPrivate

          private boolean fieldPrivate

      Is the field private

    - #### fieldAlt

          private boolean fieldAlt

      Is it an alt field

    - #### inTable

          private boolean inTable

      Whether this RtfField is in a table

    - #### inHeader

          private boolean inHeader

      Whether this RtfElement is in a header

    - #### document

          protected RtfDocument document

      The RtfDocument this RtfField belongs to

    - #### font

          private RtfFont font

      The RtfFont of this RtfField

  - ### Constructor Detail

    - #### RtfField

          protected RtfField(RtfDocument doc)

      Constructs a RtfField for a RtfDocument. This is not very useful, since the RtfField by itself does not do anything. Use one of the subclasses instead.
      Parameters:
        `doc` - The RtfDocument this RtfField belongs to.

    - #### RtfField

          protected RtfField(RtfDocument doc,
                  Font font)

      Constructs a RtfField for a RtfDocument. This is not very useful, since the RtfField by itself does not do anything. Use one of the subclasses instead.
      Parameters:
        `doc` - The RtfDocument this RtfField belongs to.
        `font` - The Font this RtfField should use

  - ### Method Detail

    - #### setRtfDocument

          public void setRtfDocument(RtfDocument doc)

      Sets the RtfDocument this RtfElement belongs to
      Specified by:
        `setRtfDocument` in interface `RtfBasicElement`
      Parameters:
        `doc` - The RtfDocument to use

    - #### writeFieldBegin

          private void writeFieldBegin(java.io.OutputStream result)
                                throws java.io.IOException

      Writes the field beginning. Also writes field properties.
      Parameters:
        `result` - The `OutputStream` to write to.
      Throws:
        `java.io.IOException`

    - #### writeFieldInstBegin

          private void writeFieldInstBegin(java.io.OutputStream result)
                                    throws java.io.IOException

      Writes the beginning of the field instruction area.
      Parameters:
        `result` - The `OutputStream` to write to.
      Throws:
        `java.io.IOException`

    - #### writeFieldInstContent

          protected abstract void writeFieldInstContent(java.io.OutputStream result)
                                                 throws java.io.IOException

      Writes the content of the field instruction area. Override this method in your subclasses.
      Parameters:
        `result` - The `OutputStream` to write to.
      Throws:
        `java.io.IOException`

    - #### writeFieldInstEnd

          private void writeFieldInstEnd(java.io.OutputStream result)
                                  throws java.io.IOException

      Writes the end of the field instruction area.
      Parameters:
        `result` - The `OutputStream` to write to.
      Throws:
        `java.io.IOException`

    - #### writeFieldResultBegin

          private void writeFieldResultBegin(java.io.OutputStream result)
                                      throws java.io.IOException

      Writes the beginning of the field result area
      Parameters:
        `result` - The `OutputStream` to write to.
      Throws:
        `java.io.IOException`

    - #### writeFieldResultContent

          protected abstract void writeFieldResultContent(java.io.OutputStream result)
                                                   throws java.io.IOException

      Writes the content of the pre-calculated field result. Override this method in your subclasses.
      Parameters:
        `result` - The `OutputStream` to write to.
      Throws:
        `java.io.IOException` - on i/o errors.

    - #### writeFieldResultEnd

          private void writeFieldResultEnd(java.io.OutputStream result)
                                    throws java.io.IOException

      Writes the end of the field result area
      Parameters:
        `result` - The `OutputStream` to write to.
      Throws:
        `java.io.IOException` - on i/o errors.

    - #### writeFieldEnd

          private void writeFieldEnd(java.io.OutputStream result)
                              throws java.io.IOException

      Writes the end of the field
      Parameters:
        `result` - The `OutputStream` to write to.
      Throws:
        `java.io.IOException` - on i/o errors.

    - #### writeContent

          public void writeContent(java.io.OutputStream result)
                            throws java.io.IOException

      Writes the field to the `OutputStream`.
      Specified by:
        `writeContent` in interface `RtfBasicElement`
      Parameters:
        `result` - The `OutputStream` to write to.
      Throws:
        `java.io.IOException` - on i/o errors.

    - #### isFieldAlt

          public boolean isFieldAlt()

      Get whether this field is an alt field
      Returns:
        Returns whether this field is an alt field

    - #### setFieldAlt

          public void setFieldAlt(boolean fieldAlt)

      Set whether this field is an alt field
      Parameters:
        `fieldAlt` - The value to use

    - #### isFieldDirty

          public boolean isFieldDirty()

      Get whether this field is dirty
      Returns:
        Returns whether this field is dirty

    - #### setFieldDirty

          public void setFieldDirty(boolean fieldDirty)

      Set whether this field is dirty
      Parameters:
        `fieldDirty` - The value to use

    - #### isFieldEdit

          public boolean isFieldEdit()

      Get whether this field is edited
      Returns:
        Returns whether this field is edited

    - #### setFieldEdit

          public void setFieldEdit(boolean fieldEdit)

      Set whether this field is edited.
      Parameters:
        `fieldEdit` - The value to use

    - #### isFieldLocked

          public boolean isFieldLocked()

      Get whether this field is locked
      Returns:
        Returns the fieldLocked.

    - #### setFieldLocked

          public void setFieldLocked(boolean fieldLocked)

      Set whether this field is locked
      Parameters:
        `fieldLocked` - The value to use

    - #### isFieldPrivate

          public boolean isFieldPrivate()

      Get whether this field is private
      Returns:
        Returns the fieldPrivate.

    - #### setFieldPrivate

          public void setFieldPrivate(boolean fieldPrivate)

      Set whether this field is private
      Parameters:
        `fieldPrivate` - The value to use

    - #### setInTable

          public void setInTable(boolean inTable)

      Sets whether this RtfField is in a table
      Specified by:
        `setInTable` in interface `RtfBasicElement`
      Parameters:
        `inTable` - `True` if this RtfField is in a table, `false` otherwise

    - #### isInTable

          public boolean isInTable()

      Gets whether this `RtfField` is in a table.
      Returns:
        `True` if this `RtfField` is in a table, `false` otherwise
      Since:
        2.1.0

    - #### setInHeader

          public void setInHeader(boolean inHeader)

      Sets whether this RtfField is in a header
      Specified by:
        `setInHeader` in interface `RtfBasicElement`
      Parameters:
        `inHeader` - `True` if this RtfField is in a header, `false` otherwise

    - #### isInHeader

          public boolean isInHeader()

      Gets whether this `RtfField` is in a header.
      Returns:
        `True` if this `RtfField` is in a header, `false` otherwise
      Since:
        2.1.0

    - #### isEmpty

          public boolean isEmpty()

      An RtfField is never empty.
      Overrides:
        `isEmpty` in class `Chunk`
      Returns:
        `false` if the Chunk contains other characters than space.

    - #### setFont

          public void setFont(Font font)

      Override setFont to perform the correct font handling.
      Overrides:
        `setFont` in class `Chunk`
      Parameters:
        `font` - a `Font`