org.apache.fop.fo.pagination

## Interface SubSequenceSpecifier

All Known Implementing Classes:
  RepeatablePageMasterAlternatives, RepeatablePageMasterReference, SinglePageMasterReference

    public interface SubSequenceSpecifier

Classes that implement this interface can be added to a `PageSequenceMaster`, and are capable of looking up an appropriate `SimplePageMaster`.

### Method Summary

All Methods Instance Methods Abstract Methods
`boolean` `canProcess(String flowName)`
`SimplePageMaster` `getLastPageMaster(boolean isOddPage, boolean isFirstPage, boolean isBlankPage, BlockLevelEventProducer blockLevelEventProducer)`
`SimplePageMaster` `getNextPageMaster(boolean isOddPage, boolean isFirstPage, boolean isLastPage, boolean isBlankPage, boolean skipPagePositionOnly)` Returns the name of the next page master.
`boolean` `goToPrevious()` Used to set the "cursor position" to the previous item.
`boolean` `hasPagePositionLast()`
`boolean` `hasPagePositionOnly()`
`boolean` `isInfinite()` Test that this is a finite sequence
`boolean` `isReusable()` Test if this can be reused when it is the last sub-sequence specifer, and has been exhausted
`void` `reset()` Called before a new page sequence is rendered so subsequences can reset any state they keep during the formatting process.
`void` `resolveReferences(LayoutMasterSet layoutMasterSet)` called by the parent LayoutMasterSet to resolve object references from simple page master reference names

### Method Detail

#### getNextPageMaster

    SimplePageMaster getNextPageMaster(boolean isOddPage,
                                       boolean isFirstPage,
                                       boolean isLastPage,
                                       boolean isBlankPage,
                                       boolean skipPagePositionOnly)
                                throws PageProductionException

Returns the name of the next page master.

Parameters:
  `isOddPage` - True if the next page number is odd
  `isFirstPage` - True if the next page is the first
  `isLastPage` - True if the next page is the last
  `isBlankPage` - True if the next page is blank
Returns:
  the page master name
Throws:
  `PageProductionException` - if there's a problem determining the next page master

#### getLastPageMaster

    SimplePageMaster getLastPageMaster(boolean isOddPage,
                                       boolean isFirstPage,
                                       boolean isBlankPage,
                                       BlockLevelEventProducer blockLevelEventProducer)
                                throws PageProductionException

Throws:
  `PageProductionException`

#### reset

    void reset()

Called before a new page sequence is rendered so subsequences can reset any state they keep during the formatting process.

#### goToPrevious

    boolean goToPrevious()

Used to set the "cursor position" to the previous item.

Returns:
  true if there is a previous item, false if the current one was the first one.

#### hasPagePositionLast

    boolean hasPagePositionLast()

Returns:
  true if the subsequence has a page master for page-position "last"

#### hasPagePositionOnly

    boolean hasPagePositionOnly()

Returns:
  true if the subsequence has a page master for page-position "only"

#### resolveReferences

    void resolveReferences(LayoutMasterSet layoutMasterSet)
                    throws ValidationException

called by the parent LayoutMasterSet to resolve object references from simple page master reference names

Parameters:
  `layoutMasterSet` - the layout-master-set
Throws:
  `ValidationException` - when a named reference cannot be resolved

#### canProcess

    boolean canProcess(String flowName)

Parameters:
  `flowName` - name of the main flow
Returns:
  true iff page sequence is a finite sequence or can process the entire main flow

#### isInfinite

    boolean isInfinite()

Test that this is a finite sequence

Returns:
  true iff this is a finite sequence

#### isReusable

    boolean isReusable()

Test if this can be reused when it is the last sub-sequence specifer, and has been exhausted

Returns:
  true if and only if it can be reused