org.apache.poi.xssf.model

## Class ThemesTable

- java.lang.Object
- - org.apache.poi.ooxml.POIXMLDocumentPart
  - - org.apache.poi.xssf.model.ThemesTable

- All Implemented Interfaces:
    Themes

      public class ThemesTable
      extends POIXMLDocumentPart
      implements Themes

  Class that represents theme of XLSX document. The theme includes specific colors and fonts.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ThemesTable.ThemeElement`

    - ### Nested classes/interfaces inherited from class org.apache.poi.ooxml.POIXMLDocumentPart

      `POIXMLDocumentPart.RelationPart`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ThemesTable()` Create a new, empty ThemesTable
    `ThemesTable(PackagePart part)` Construct a ThemesTable.
    `ThemesTable(org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument theme)` Construct a ThemesTable from an existing ThemeDocument.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `commit()` Save the content in the underlying package part.
    `XSSFColor` | `getThemeColor(int idx)` Convert a theme "index" (as used by fonts etc) into a color.
    `void` | `inheritFromThemeAsRequired(XSSFColor color)` If the colour is based on a theme, then inherit information (currently just colours) from it as required.
    `protected void` | `setColorMap(IndexedColorMap colorMap)` called from `StylesTable` when setting theme, used to adjust colors if a custom indexed mapping is defined
    `void` | `writeTo(java.io.OutputStream out)` Write this table out as XML.

    - ### Methods inherited from class org.apache.poi.ooxml.POIXMLDocumentPart

      `_invokeOnDocumentRead, addRelation, createRelationship, createRelationship, createRelationship, getNextPartNumber, getPackagePart, getParent, getRelationById, getRelationId, getRelationPartById, getRelationParts, getRelations, getTargetPart, isCommited, isCommitted, onDocumentCreate, onDocumentRead, onDocumentRemove, onSave, prepareForCommit, read, rebase, removeRelation, removeRelation, removeRelation, setCommited, setCommitted, toString`

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

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

- - ### Constructor Detail

    - #### ThemesTable

          public ThemesTable()

      Create a new, empty ThemesTable

    - #### ThemesTable

          public ThemesTable(PackagePart part)
                      throws java.io.IOException

      Construct a ThemesTable.
      Parameters:
        `part` - A PackagePart.
      Throws:
        `java.io.IOException`
      Since:
        POI 3.14-Beta1

    - #### ThemesTable

          public ThemesTable(org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument theme)

      Construct a ThemesTable from an existing ThemeDocument.
      Parameters:
        `theme` - A ThemeDocument.

  - ### Method Detail

    - #### setColorMap

          protected void setColorMap(IndexedColorMap colorMap)

      called from `StylesTable` when setting theme, used to adjust colors if a custom indexed mapping is defined
      Parameters:
        `colorMap` -

    - #### getThemeColor

          public XSSFColor getThemeColor(int idx)

      Convert a theme "index" (as used by fonts etc) into a color.
      Specified by:
        `getThemeColor` in interface `Themes`
      Parameters:
        `idx` - A theme "index"
      Returns:
        The mapped XSSFColor, or null if not mapped.

    - #### inheritFromThemeAsRequired

          public void inheritFromThemeAsRequired(XSSFColor color)

      If the colour is based on a theme, then inherit information (currently just colours) from it as required.
      Specified by:
        `inheritFromThemeAsRequired` in interface `Themes`

    - #### writeTo

          public void writeTo(java.io.OutputStream out)
                       throws java.io.IOException

      Write this table out as XML.
      Parameters:
        `out` - The stream to write to.
      Throws:
        `java.io.IOException` - if an error occurs while writing.

    - #### commit

          protected void commit()
                         throws java.io.IOException

      Description copied from class: `POIXMLDocumentPart`
      Save the content in the underlying package part. Default implementation is empty meaning that the package part is left unmodified.

      Sub-classes should override and add logic to marshal the "model" into Ooxml4J.

      For example, the code saving a generic XML entry may look as follows:

           protected void commit() throws IOException {
             PackagePart part = getPackagePart();
             OutputStream out = part.getOutputStream();
             XmlObject bean = getXmlBean(); //the "model" which holds changes in memory
             bean.save(out, DEFAULT_XML_OPTIONS);
             out.close();
           }

      Overrides:
        `commit` in class `POIXMLDocumentPart`
      Throws:
        `java.io.IOException` - a subclass may throw an IOException if the changes can't be committed

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.