com.lowagie.text

## Class Section

- java.lang.Object
- - java.util.AbstractCollection<E>
  - - java.util.AbstractList<E>
    - - java.util.ArrayList
      - - com.lowagie.text.Section

All Implemented Interfaces:
  Element, LargeElement, TextElementArray, java.io.Serializable, java.lang.Cloneable, java.lang.Iterable, java.util.Collection, java.util.List, java.util.RandomAccess

Direct Known Subclasses:
  Chapter

    public class Section
    extends java.util.ArrayList
    implements TextElementArray, LargeElement

A `Section` is a part of a `Document` containing other `Section`s, `Paragraph`s, `List` and/or `Table`s.

Remark: you can not construct a `Section` yourself. You will have to ask an instance of `Section` to the `Chapter` or `Section` to which you want to add the new `Section`.

Example:

>      Paragraph title2 = new Paragraph("This is Chapter 2", FontFactory.getFont(FontFactory.HELVETICA, 18, Font.BOLDITALIC, new Color(0, 0, 255)));
>      Chapter chapter2 = new Chapter(title2, 2);
>      Paragraph someText = new Paragraph("This is some text");
>      chapter2.add(someText);
>      Paragraph title21 = new Paragraph("This is Section 1 in Chapter 2", FontFactory.getFont(FontFactory.HELVETICA, 16, Font.BOLD, new Color(255, 0, 0)));
>      Section section1 = chapter2.addSection(title21);
>      Paragraph someSectionText = new Paragraph("This is some silly paragraph in a chapter and/or section. It contains some text to test the functionality of Chapters and Section.");
>      section1.add(someSectionText);
>      Paragraph title211 = new Paragraph("This is SubSection 1 in Section 1 in Chapter 2", FontFactory.getFont(FontFactory.HELVETICA, 14, Font.BOLD, new Color(255, 0, 0)));
>      Section section11 = section1.addSection(40, title211, 2);
>      section11.add(someSectionText);

See Also:
  Serialized Form

### Field Summary

Fields
`protected boolean` `addedCompletely` Indicates if the Section was added completely to the document.
`protected boolean` `bookmarkOpen` false if the bookmark children are not visible
`protected java.lang.String` `bookmarkTitle` The bookmark title if different from the content title
`protected boolean` `complete` Indicates if the Section will be complete once added to the document.
`protected float` `indentation` The additional indentation of the content of this section.
`protected float` `indentationLeft` The indentation of this section on the left side.
`protected float` `indentationRight` The indentation of this section on the right side.
`protected boolean` `notAddedYet` Indicates if this is the first time the section was added.
`protected int` `numberDepth` The number of sectionnumbers that has to be shown before the section title.
`protected java.util.ArrayList` `numbers` This is the complete list of sectionnumbers of this section and the parents of this section.
`protected int` `numberStyle` The style for sectionnumbers.
`static int` `NUMBERSTYLE_DOTTED` A possible number style.
`static int` `NUMBERSTYLE_DOTTED_WITHOUT_FINAL_DOT` A possible number style.
`private static long` `serialVersionUID` A serial version uid.
`protected int` `subsections` This is the number of subsections.
`protected Paragraph` `title` The title of this section.
`protected boolean` `triggerNewPage` true if the section has to trigger a new page

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

`modCount`

### 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
`protected` `Section()` Constructs a new `Section`.
`protected` `Section(Paragraph title, int numberDepth)` Constructs a new `Section`.

### Method Summary

Methods
`void` `add(int index, java.lang.Object o)` Adds a `Paragraph`, `List` or `Table` to this `Section`.
`boolean` `add(java.lang.Object o)` Adds a `Paragraph`, `List`, `Table` or another `Section` to this `Section`.
`boolean` `addAll(java.util.Collection collection)` Adds a collection of `Element`s to this `Section`.
`MarkedSection` `addMarkedSection()` Adds a marked section.
`Section` `addSection(float indentation, Paragraph title)` Creates a `Section`, adds it to this `Section` and returns it.
`Section` `addSection(float indentation, Paragraph title, int numberDepth)` Creates a `Section`, adds it to this `Section` and returns it.
`Section` `addSection(float indentation, java.lang.String title)` Adds a `Section` to this `Section` and returns it.
`Section` `addSection(float indentation, java.lang.String title, int numberDepth)` Adds a `Section` to this `Section` and returns it.
`Section` `addSection(Paragraph title)` Creates a `Section`, adds it to this `Section` and returns it.
`Section` `addSection(Paragraph title, int numberDepth)` Creates a `Section`, add it to this `Section` and returns it.
`Section` `addSection(java.lang.String title)` Adds a `Section` to this `Section` and returns it.
`Section` `addSection(java.lang.String title, int numberDepth)` Adds a `Section` to this `Section` and returns it.
`static Paragraph` `constructTitle(Paragraph title, java.util.ArrayList numbers, int numberDepth, int numberStyle)` Constructs a Paragraph that will be used as title for a Section or Chapter.
`void` `flushContent()` Flushes the content that has been added.
`Paragraph` `getBookmarkTitle()` Gets the bookmark title.
`java.util.ArrayList` `getChunks()` Gets all the chunks in this element.
`int` `getDepth()` Returns the depth of this section.
`float` `getIndentation()` Returns the indentation of the content of this `Section`.
`float` `getIndentationLeft()` Returns the indentation of this `Section` on the left side.
`float` `getIndentationRight()` Returns the indentation of this `Section` on the right side.
`int` `getNumberDepth()` Returns the numberdepth of this `Section`.
`int` `getNumberStyle()` Gets the style used for numbering sections.
`Paragraph` `getTitle()` Returns the title, preceded by a certain number of sectionnumbers.
`protected boolean` `isAddedCompletely()`
`boolean` `isBookmarkOpen()` Getter for property bookmarkOpen.
`boolean` `isChapter()` Checks if this object is a `Chapter`.
`boolean` `isComplete()` Indicates if the element is complete or not.
`boolean` `isContent()` Checks if this element is a content object.
`boolean` `isNestable()` Checks if this element is nestable.
`boolean` `isNotAddedYet()` Indicates if this is the first time the section is added.
`boolean` `isSection()` Checks if this object is a `Section`.
`boolean` `isTriggerNewPage()` Getter for property bookmarkOpen.
`void` `newPage()` Adds a new page to the section.
`boolean` `process(ElementListener listener)` Processes the element by adding it (or the different parts) to an `ElementListener`.
`protected void` `setAddedCompletely(boolean addedCompletely)`
`void` `setBookmarkOpen(boolean bookmarkOpen)` Setter for property bookmarkOpen.
`void` `setBookmarkTitle(java.lang.String bookmarkTitle)` Sets the bookmark title.
`void` `setChapterNumber(int number)` Changes the Chapter number.
`void` `setComplete(boolean complete)` If you invoke setComplete(false), you indicate that the content of the object isn't complete yet; it can be added to the document partially, but more will follow.
`void` `setIndentation(float indentation)` Sets the indentation of the content of this `Section`.
`void` `setIndentationLeft(float indentation)` Sets the indentation of this `Section` on the left side.
`void` `setIndentationRight(float indentation)` Sets the indentation of this `Section` on the right side.
`void` `setNotAddedYet(boolean notAddedYet)` Sets the indication if the section was already added to the document.
`void` `setNumberDepth(int numberDepth)` Sets the depth of the sectionnumbers that will be shown preceding the title.
`private void` `setNumbers(int number, java.util.ArrayList numbers)` Sets the number of this section.
`void` `setNumberStyle(int numberStyle)` Sets the style for numbering sections.
`void` `setTitle(Paragraph title)` Sets the title of this section.
`void` `setTriggerNewPage(boolean triggerNewPage)` Setter for property triggerNewPage.
`int` `type()` Gets the type of the text element.

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

`addAll, clear, clone, contains, ensureCapacity, get, indexOf, isEmpty, iterator, lastIndexOf, listIterator, listIterator, remove, remove, removeAll, removeRange, retainAll, set, size, subList, toArray, toArray, trimToSize`

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

`equals, hashCode`

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

`containsAll, toString`

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

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

### Methods inherited from interface com.lowagie.text.Element

`toString`

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

`containsAll, equals, hashCode`

### Field Detail

#### NUMBERSTYLE_DOTTED

    public static final int NUMBERSTYLE_DOTTED

A possible number style. The default number style: "1.2.3."

Since:
  iText 2.0.8
See Also:
  Constant Field Values

#### NUMBERSTYLE_DOTTED_WITHOUT_FINAL_DOT

    public static final int NUMBERSTYLE_DOTTED_WITHOUT_FINAL_DOT

A possible number style. For instance: "1.2.3"

Since:
  iText 2.0.8
See Also:
  Constant Field Values

#### serialVersionUID

    private static final long serialVersionUID

A serial version uid.

See Also:
  Constant Field Values

#### title

    protected Paragraph title

The title of this section.

#### bookmarkTitle

    protected java.lang.String bookmarkTitle

The bookmark title if different from the content title

#### numberDepth

    protected int numberDepth

The number of sectionnumbers that has to be shown before the section title.

#### numberStyle

    protected int numberStyle

The style for sectionnumbers.

Since:
  iText 2.0.8

#### indentationLeft

    protected float indentationLeft

The indentation of this section on the left side.

#### indentationRight

    protected float indentationRight

The indentation of this section on the right side.

#### indentation

    protected float indentation

The additional indentation of the content of this section.

#### bookmarkOpen

    protected boolean bookmarkOpen

false if the bookmark children are not visible

#### triggerNewPage

    protected boolean triggerNewPage

true if the section has to trigger a new page

#### subsections

    protected int subsections

This is the number of subsections.

#### numbers

    protected java.util.ArrayList numbers

This is the complete list of sectionnumbers of this section and the parents of this section.

#### complete

    protected boolean complete

Indicates if the Section will be complete once added to the document.

Since:
  iText 2.0.8

#### addedCompletely

    protected boolean addedCompletely

Indicates if the Section was added completely to the document.

Since:
  iText 2.0.8

#### notAddedYet

    protected boolean notAddedYet

Indicates if this is the first time the section was added.

Since:
  iText 2.0.8

### Constructor Detail

#### Section

    protected Section()

Constructs a new `Section`.

#### Section

    protected Section(Paragraph title,
           int numberDepth)

Constructs a new `Section`.

Parameters:
  `title` - a `Paragraph`
  `numberDepth` - the numberDepth

### Method Detail

#### process

    public boolean process(ElementListener listener)

Processes the element by adding it (or the different parts) to an `ElementListener`.

Specified by:
  `process` in interface `Element`
Parameters:
  `listener` - the `ElementListener`
Returns:
  `true` if the element was processed successfully

#### type

    public int type()

Gets the type of the text element.

Specified by:
  `type` in interface `Element`
Returns:
  a type

#### isChapter

    public boolean isChapter()

Checks if this object is a `Chapter`.

Returns:
  `true` if it is a `Chapter`, `false` if it is a `Section`.

#### isSection

    public boolean isSection()

Checks if this object is a `Section`.

Returns:
  `true` if it is a `Section`, `false` if it is a `Chapter`.

#### getChunks

    public java.util.ArrayList getChunks()

Gets all the chunks in this element.

Specified by:
  `getChunks` in interface `Element`
Returns:
  an `ArrayList`

#### isContent

    public boolean isContent()

Description copied from interface: `Element`
Checks if this element is a content object. If not, it's a metadata object.

Specified by:
  `isContent` in interface `Element`
Returns:
  true if this is a 'content' element; false if this is a 'metadata' element
Since:
  iText 2.0.8
See Also:
  `Element.isContent()`

#### isNestable

    public boolean isNestable()

Description copied from interface: `Element`
Checks if this element is nestable.

Specified by:
  `isNestable` in interface `Element`
Returns:
  true if this element can be nested inside other elements.
Since:
  iText 2.0.8
See Also:
  `Element.isNestable()`

#### add

    public void add(int index,
           java.lang.Object o)

Adds a `Paragraph`, `List` or `Table` to this `Section`.

Specified by:
  `add` in interface `java.util.List`
Overrides:
  `add` in class `java.util.ArrayList`
Parameters:
  `index` - index at which the specified element is to be inserted
  `o` - an object of type `Paragraph`, `List` or `Table`=
Throws:
  `java.lang.ClassCastException` - if the object is not a `Paragraph`, `List` or `Table`

#### add

    public boolean add(java.lang.Object o)

Adds a `Paragraph`, `List`, `Table` or another `Section` to this `Section`.

Specified by:
  `add` in interface `TextElementArray`
Specified by:
  `add` in interface `java.util.Collection`
Specified by:
  `add` in interface `java.util.List`
Overrides:
  `add` in class `java.util.ArrayList`
Parameters:
  `o` - an object of type `Paragraph`, `List`, `Table` or another `Section`
Returns:
  a boolean
Throws:
  `java.lang.ClassCastException` - if the object is not a `Paragraph`, `List`, `Table` or `Section`

#### addAll

    public boolean addAll(java.util.Collection collection)

Adds a collection of `Element`s to this `Section`.

Specified by:
  `addAll` in interface `java.util.Collection`
Specified by:
  `addAll` in interface `java.util.List`
Overrides:
  `addAll` in class `java.util.ArrayList`
Parameters:
  `collection` - a collection of `Paragraph`s, `List`s and/or `Table`s
Returns:
  `true` if the action succeeded, `false` if not.
Throws:
  `java.lang.ClassCastException` - if one of the objects isn't a `Paragraph`, `List`, `Table`

#### addSection

    public Section addSection(float indentation,
                     Paragraph title,
                     int numberDepth)

Creates a `Section`, adds it to this `Section` and returns it.

Parameters:
  `indentation` - the indentation of the new section
  `title` - the title of the new section
  `numberDepth` - the numberDepth of the section
Returns:
  a new Section object

#### addSection

    public Section addSection(float indentation,
                     Paragraph title)

Creates a `Section`, adds it to this `Section` and returns it.

Parameters:
  `indentation` - the indentation of the new section
  `title` - the title of the new section
Returns:
  a new Section object

#### addSection

    public Section addSection(Paragraph title,
                     int numberDepth)

Creates a `Section`, add it to this `Section` and returns it.

Parameters:
  `title` - the title of the new section
  `numberDepth` - the numberDepth of the section
Returns:
  a new Section object

#### addMarkedSection

    public MarkedSection addMarkedSection()

Adds a marked section. For use in class MarkedSection only!

#### addSection

    public Section addSection(Paragraph title)

Creates a `Section`, adds it to this `Section` and returns it.

Parameters:
  `title` - the title of the new section
Returns:
  a new Section object

#### addSection

    public Section addSection(float indentation,
                     java.lang.String title,
                     int numberDepth)

Adds a `Section` to this `Section` and returns it.

Parameters:
  `indentation` - the indentation of the new section
  `title` - the title of the new section
  `numberDepth` - the numberDepth of the section
Returns:
  a new Section object

#### addSection

    public Section addSection(java.lang.String title,
                     int numberDepth)

Adds a `Section` to this `Section` and returns it.

Parameters:
  `title` - the title of the new section
  `numberDepth` - the numberDepth of the section
Returns:
  a new Section object

#### addSection

    public Section addSection(float indentation,
                     java.lang.String title)

Adds a `Section` to this `Section` and returns it.

Parameters:
  `indentation` - the indentation of the new section
  `title` - the title of the new section
Returns:
  a new Section object

#### addSection

    public Section addSection(java.lang.String title)

Adds a `Section` to this `Section` and returns it.

Parameters:
  `title` - the title of the new section
Returns:
  a new Section object

#### setTitle

    public void setTitle(Paragraph title)

Sets the title of this section.

Parameters:
  `title` - the new title

#### getTitle

    public Paragraph getTitle()

Returns the title, preceded by a certain number of sectionnumbers.

Returns:
  a `Paragraph`

#### constructTitle

    public static Paragraph constructTitle(Paragraph title,
                           java.util.ArrayList numbers,
                           int numberDepth,
                           int numberStyle)

Constructs a Paragraph that will be used as title for a Section or Chapter.

Parameters:
  `title` - the title of the section
  `numbers` - a list of sectionnumbers
  `numberDepth` - how many numbers have to be shown
  `numberStyle` - the numbering style
Returns:
  a Paragraph object
Since:
  iText 2.0.8

#### setNumberDepth

    public void setNumberDepth(int numberDepth)

Sets the depth of the sectionnumbers that will be shown preceding the title.

If the numberdepth is 0, the sections will not be numbered. If the numberdepth is 1, the section will be numbered with their own number. If the numberdepth is higher (for instance x > 1), the numbers of x - 1 parents will be shown.

Parameters:
  `numberDepth` - the new numberDepth

#### getNumberDepth

    public int getNumberDepth()

Returns the numberdepth of this `Section`.

Returns:
  the numberdepth

#### setNumberStyle

    public void setNumberStyle(int numberStyle)

Sets the style for numbering sections. Possible values are NUMBERSTYLE_DOTTED: 1.2.3. (the default) or NUMBERSTYLE_DOTTED_WITHOUT_FINAL_DOT: 1.2.3

Since:
  iText 2.0.8

#### getNumberStyle

    public int getNumberStyle()

Gets the style used for numbering sections.

Returns:
  a value corresponding with a numbering style
Since:
  iText 2.0.8

#### setIndentationLeft

    public void setIndentationLeft(float indentation)

Sets the indentation of this `Section` on the left side.

Parameters:
  `indentation` - the indentation

#### getIndentationLeft

    public float getIndentationLeft()

Returns the indentation of this `Section` on the left side.

Returns:
  the indentation

#### setIndentationRight

    public void setIndentationRight(float indentation)

Sets the indentation of this `Section` on the right side.

Parameters:
  `indentation` - the indentation

#### getIndentationRight

    public float getIndentationRight()

Returns the indentation of this `Section` on the right side.

Returns:
  the indentation

#### setIndentation

    public void setIndentation(float indentation)

Sets the indentation of the content of this `Section`.

Parameters:
  `indentation` - the indentation

#### getIndentation

    public float getIndentation()

Returns the indentation of the content of this `Section`.

Returns:
  the indentation

#### setBookmarkOpen

    public void setBookmarkOpen(boolean bookmarkOpen)

Setter for property bookmarkOpen.

Parameters:
  `bookmarkOpen` - false if the bookmark children are not visible.

#### isBookmarkOpen

    public boolean isBookmarkOpen()

Getter for property bookmarkOpen.

Returns:
  Value of property bookmarkOpen.

#### setTriggerNewPage

    public void setTriggerNewPage(boolean triggerNewPage)

Setter for property triggerNewPage.

Parameters:
  `triggerNewPage` - true if a new page has to be triggered.

#### isTriggerNewPage

    public boolean isTriggerNewPage()

Getter for property bookmarkOpen.

Returns:
  Value of property triggerNewPage.

#### setBookmarkTitle

    public void setBookmarkTitle(java.lang.String bookmarkTitle)

Sets the bookmark title. The bookmark title is the same as the section title but can be changed with this method.

Parameters:
  `bookmarkTitle` - the bookmark title

#### getBookmarkTitle

    public Paragraph getBookmarkTitle()

Gets the bookmark title.

Returns:
  the bookmark title

#### setChapterNumber

    public void setChapterNumber(int number)

Changes the Chapter number.

#### getDepth

    public int getDepth()

Returns the depth of this section.

Returns:
  the depth

#### setNumbers

    private void setNumbers(int number,
                  java.util.ArrayList numbers)

Sets the number of this section.

Parameters:
  `number` - the number of this section
  `numbers` - an `ArrayList`, containing the numbers of the Parent

#### isNotAddedYet

    public boolean isNotAddedYet()

Indicates if this is the first time the section is added.

Returns:
  true if the section wasn't added yet
Since:
  iText2.0.8

#### setNotAddedYet

    public void setNotAddedYet(boolean notAddedYet)

Sets the indication if the section was already added to the document.

Parameters:
  `notAddedYet` -
Since:
  iText2.0.8

#### isAddedCompletely

    protected boolean isAddedCompletely()

Since:
  iText 2.0.8

#### setAddedCompletely

    protected void setAddedCompletely(boolean addedCompletely)

Since:
  iText 2.0.8

#### flushContent

    public void flushContent()

Description copied from interface: `LargeElement`
Flushes the content that has been added.

Specified by:
  `flushContent` in interface `LargeElement`
Since:
  iText 2.0.8
See Also:
  `LargeElement.flushContent()`

#### isComplete

    public boolean isComplete()

Description copied from interface: `LargeElement`
Indicates if the element is complete or not.

Specified by:
  `isComplete` in interface `LargeElement`
Returns:
  indicates if the element is complete according to the user.
Since:
  iText 2.0.8
See Also:
  `LargeElement.isComplete()`

#### setComplete

    public void setComplete(boolean complete)

Description copied from interface: `LargeElement`
If you invoke setComplete(false), you indicate that the content of the object isn't complete yet; it can be added to the document partially, but more will follow. If you invoke setComplete(true), you indicate that you won't add any more data to the object.

Specified by:
  `setComplete` in interface `LargeElement`
Parameters:
  `complete` - false if you'll be adding more data after adding the object to the document.
Since:
  iText 2.0.8
See Also:
  `LargeElement.setComplete(boolean)`

#### newPage

    public void newPage()

Adds a new page to the section.

Since:
  2.1.1