org.apache.fop.layoutmgr

## Class KnuthSequence<T extends ListElement>

- java.lang.Object
- - java.util.AbstractCollection<E>
  - - java.util.AbstractList<E>
    - - java.util.ArrayList<T>
      - - org.apache.fop.layoutmgr.KnuthSequence<T>

All Implemented Interfaces:
  Serializable, Cloneable, Iterable<T>, Collection<T>, List<T>, RandomAccess

Direct Known Subclasses:
  BlockKnuthSequence, InlineKnuthSequence

    public abstract class KnuthSequence<T extends ListElement>
    extends ArrayList<T>

Represents a list of `Knuth elements`.

See Also:
  Serialized Form

### Field Summary

### Fields inherited from class java.util.AbstractList

`modCount`

### Constructor Summary

Constructors
Constructor and Description
`KnuthSequence()` Creates a new and empty list.
`KnuthSequence(List<T> list)` Creates a new list from an existing list.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`abstract boolean` `appendSequence(KnuthSequence sequence)` Append sequence to this sequence if it can be appended.
`abstract boolean` `appendSequence(KnuthSequence sequence, boolean keepTogether, BreakElement breakElement)` Append sequence to this sequence if it can be appended.
`boolean` `appendSequenceOrClose(KnuthSequence sequence)` Append sequence to this sequence if it can be appended.
`boolean` `appendSequenceOrClose(KnuthSequence sequence, boolean keepTogether, BreakElement breakElement)` Append sequence to this sequence if it can be appended.
`abstract boolean` `canAppendSequence(KnuthSequence sequence)` Can sequence be appended to this sequence?
`abstract KnuthSequence` `endSequence()` Finalizes a Knuth sequence.
`ListElement` `getElement(int index)`
`protected int` `getFirstBoxIndex(int startIndex)` Returns the position index of the first box in this sequence, starting at the given index.
`T` `getLast()`
`abstract boolean` `isInlineSequence()` Is this an inline or a block sequence?
`T` `removeLast()` Remove the last element of this sequence.
`void` `startSequence()` Marks the start of the sequence.
`String` `toString()`
`void` `wrapPositions(LayoutManager lm)` Wrap the Positions of the elements of this sequence in a Position for LayoutManager lm.

### Methods inherited from class java.util.ArrayList

`add, add, addAll, addAll, clear, clone, contains, ensureCapacity, forEach, get, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, removeIf, removeRange, replaceAll, retainAll, set, size, sort, spliterator, subList, toArray, toArray, trimToSize`

### Methods inherited from class java.util.AbstractList

`equals, hashCode`

### Methods inherited from class java.util.AbstractCollection

`containsAll`

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

`finalize, getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.util.List

`containsAll, equals, hashCode`

### Methods inherited from interface java.util.Collection

`parallelStream, stream`

### Constructor Detail

#### KnuthSequence

    public KnuthSequence()

Creates a new and empty list.

#### KnuthSequence

    public KnuthSequence(List<T> list)

Creates a new list from an existing list.

Parameters:
  `list` - The list from which to create the new list.

### Method Detail

#### startSequence

    public void startSequence()

Marks the start of the sequence.

#### endSequence

    public abstract KnuthSequence endSequence()

Finalizes a Knuth sequence.

Returns:
  a finalized sequence.

#### canAppendSequence

    public abstract boolean canAppendSequence(KnuthSequence sequence)

Can sequence be appended to this sequence?

Parameters:
  `sequence` - The sequence that may be appended.
Returns:
  whether the sequence can be appended to this sequence.

#### appendSequence

    public abstract boolean appendSequence(KnuthSequence sequence,
                                           boolean keepTogether,
                                           BreakElement breakElement)

Append sequence to this sequence if it can be appended.

Parameters:
  `sequence` - The sequence that is to be appended.
  `keepTogether` - Whether the two sequences must be kept together.
  `breakElement` - The BreakElement that may be inserted between the two sequences.
Returns:
  whether the sequence was succesfully appended to this sequence.

#### appendSequence

    public abstract boolean appendSequence(KnuthSequence sequence)

Append sequence to this sequence if it can be appended.

Parameters:
  `sequence` - The sequence that is to be appended.
Returns:
  whether the sequence was succesfully appended to this sequence.

#### appendSequenceOrClose

    public boolean appendSequenceOrClose(KnuthSequence sequence)

Append sequence to this sequence if it can be appended. If that is not possible, close this sequence.

Parameters:
  `sequence` - The sequence that is to be appended.
Returns:
  whether the sequence was succesfully appended to this sequence.

#### appendSequenceOrClose

    public boolean appendSequenceOrClose(KnuthSequence sequence,
                                         boolean keepTogether,
                                         BreakElement breakElement)

Append sequence to this sequence if it can be appended. If that is not possible, close this sequence.

Parameters:
  `sequence` - The sequence that is to be appended.
  `keepTogether` - Whether the two sequences must be kept together.
  `breakElement` - The BreakElement that may be inserted between the two sequences.
Returns:
  whether the sequence was succesfully appended to this sequence.

#### wrapPositions

    public void wrapPositions(LayoutManager lm)

Wrap the Positions of the elements of this sequence in a Position for LayoutManager lm.

Parameters:
  `lm` - The LayoutManager for the Positions that will be created.

#### getLast

    public T getLast()

Returns:
  the last element of this sequence.

#### removeLast

    public T removeLast()

Remove the last element of this sequence.

Returns:
  the removed element.

#### getElement

    public ListElement getElement(int index)

Parameters:
  `index` - The index of the element to be returned
Returns:
  the element at index index.

#### getFirstBoxIndex

    protected int getFirstBoxIndex(int startIndex)

Returns the position index of the first box in this sequence, starting at the given index. If `startIndex` is outside the bounds of this sequence, it is returned.

Parameters:
  `startIndex` - the index from which to start the lookup
Returns:
  the index of the next box element, `ArrayList.size()` if there is no such element, `startIndex` if `(startIndex < 0 || startIndex >= size())`

#### isInlineSequence

    public abstract boolean isInlineSequence()

Is this an inline or a block sequence?

Returns:
  true if this is an inline sequence

#### toString

    public String toString()

Overrides:
  `toString` in class `AbstractCollection<T extends ListElement>`