Package org.jfree.layouting.layouter.feed

## Interface InputFeed

- All Superinterfaces:
    `StatefullComponent`
  All Known Implementing Classes:
    `DefaultInputFeed`

      public interface InputFeed
      extends StatefullComponent

  The input feed shields the internal processing from users errors. It implements a state maschine, which checks that all documents are well formed and which does not allow users to manipulate the resulting document tree directly.

  An input feed collects all data for elements and other nodes and forwards them to the normalizer. The normalizer is the first stage of the content layouting and processing.

  Pagination ability is not propagated back to the caller. A caller will not normaly know whether a certain input caused a pagebreak. However, especially in the cases where only one page should be processed, we allow the detection of page breaks using a boolean flag. (Which is also used to detect loops.)

  The flag is reset on each call to 'startElement', 'startDocument', 'endElement', 'endDocument' and 'addText'. Attribute modifications have no effect on that flag (as these calls are accumulated into one big supercall before passing them to the normalizer.)

  Processing the meta-info also has no effect on the page-break flag, as meta- info is processed before the content is processed.
  Author:
    Thomas Morgner

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addContent​(java.lang.String text)` |
    `void` | `addDocumentAttribute​(java.lang.String name, java.lang.Object attr)` | Adds document attributes.
    `void` | `endDocument​()` |
    `void` | `endElement​()` |
    `void` | `endMetaInfo​()` |
    `void` | `endMetaNode​()` |
    `Normalizer` | `getCurrentNormalizer​()` | Warning; This method is needed internally, mess with it from the outside and you will run into trouble.
    `NamespaceCollection` | `getNamespaceCollection​()` |
    `void` | `handlePageBreakEncountered​(CSSValue pageName, PseudoPage[] pseudoPages)` |
    `boolean` | `isPagebreakEncountered​()` |
    `void` | `resetPageBreakFlag​()` |
    `void` | `setAttribute​(java.lang.String namespace, java.lang.String name, java.lang.Object attr)` |
    `void` | `setMetaNodeAttribute​(java.lang.String name, java.lang.Object attr)` | Defines an attribute for the meta-nodes.
    `void` | `startDocument​()` | Starts the document processing.
    `void` | `startElement​(java.lang.String namespace, java.lang.String name)` |
    `void` | `startMetaInfo​()` | Signals, that meta-data follows.
    `void` | `startMetaNode​()` | Starts a new meta-node structure.

    - ### Methods inherited from interface org.jfree.layouting.StatefullComponent

      `saveState`

- - ### Method Detail

    - #### startDocument

          void startDocument​()
                      throws InputFeedException

      Starts the document processing. This is the first method to call. After calling this method, the meta-data should be fed into the inputfeed.
      Throws:
        `InputFeedException`

    - #### startMetaInfo

          void startMetaInfo​()
                      throws InputFeedException

      Signals, that meta-data follows. Calling this method is only valid directly after startDocument has been called.
      Throws:
        `InputFeedException`

    - #### addDocumentAttribute

          void addDocumentAttribute​(java.lang.String name,
                                    java.lang.Object attr)
                             throws InputFeedException

      Adds document attributes. Document attributes hold object factories and document wide resources which appear only once.
      Parameters:
        `name` -
        `attr` -
      Throws:
        `InputFeedException`

    - #### startMetaNode

          void startMetaNode​()
                      throws InputFeedException

      Starts a new meta-node structure. Meta-Nodes are used to hold content that can appear more than once (like stylesheet declarations).

      For now, only stylesheet declarations are defined as meta-node content; more content types will surely arise in the future.

      Calling this method is only valid after 'startMetaInfo' has been called.
      Throws:
        `InputFeedException`

    - #### setMetaNodeAttribute

          void setMetaNodeAttribute​(java.lang.String name,
                                    java.lang.Object attr)
                             throws InputFeedException

      Defines an attribute for the meta-nodes. For each meta node, at least the 'type' attribute (namespace: LibLayout) should be defined.
      Parameters:
        `name` -
        `attr` -
      Throws:
        `InputFeedException`

    - #### endMetaNode

          void endMetaNode​()
                    throws InputFeedException

      Throws:
        `InputFeedException`

    - #### endMetaInfo

          void endMetaInfo​()
                    throws InputFeedException

      Throws:
        `InputFeedException`

    - #### startElement

          void startElement​(java.lang.String namespace,
                            java.lang.String name)
                     throws InputFeedException

      Throws:
        `InputFeedException`

    - #### setAttribute

          void setAttribute​(java.lang.String namespace,
                            java.lang.String name,
                            java.lang.Object attr)
                     throws InputFeedException

      Throws:
        `InputFeedException`

    - #### addContent

          void addContent​(java.lang.String text)
                   throws InputFeedException

      Throws:
        `InputFeedException`

    - #### endElement

          void endElement​()
                   throws InputFeedException

      Throws:
        `InputFeedException`

    - #### endDocument

          void endDocument​()
                    throws InputFeedException

      Throws:
        `InputFeedException`

    - #### getNamespaceCollection

          NamespaceCollection getNamespaceCollection​()

    - #### handlePageBreakEncountered

          void handlePageBreakEncountered​(CSSValue pageName,
                                          PseudoPage[] pseudoPages)
                                   throws NormalizationException

      Throws:
        `NormalizationException`

    - #### isPagebreakEncountered

          boolean isPagebreakEncountered​()

    - #### resetPageBreakFlag

          void resetPageBreakFlag​()

    - #### getCurrentNormalizer

          Normalizer getCurrentNormalizer​()

      Warning; This method is needed internally, mess with it from the outside and you will run into trouble. The normalizer is a statefull component and any call to it may mess up the state. From there on, 'Abandon every hope, ye who enter here'.
      Returns: