# Package `com.install4j.api.styles`

This package contains the interface and abstract base class for styles.

See the [API overview](../../api.md) for general remarks on
how to use the install4j API.

The [`Style`](Style.md) interface contains all methods that have to be implemented by an actual style.
When you develop your own styles, it is recommended that you extend the abstract base classes in this package
rather than implement the interface itself.

Styles can nest other styles with help of the [`StyleManager`](StyleManager.md). Since there are a number of
delegations that have to be implemented correctly and the life-cycle of the screen style has to be taken into account, it is
advisable to use [`WrapperStyle`](WrapperStyle.md) to nest a single style. To get more help with nesting styles,
see [`NestedStyleContainer`](NestedStyleContainer.md).

## Types

| Type | Kind | Description |
|---|---|---|
| [AbstractStyle](AbstractStyle.md) | class | Abstract base class for styles. |
| [ControlButton](ControlButton.md) | interface | Implemented by form components that want to handle navigation functionality for a style. |
| [ControlButtonContainer](ControlButtonContainer.md) | interface | Implemented by objects that handle navigation functionality. |
| [NestedStyleContainer](NestedStyleContainer.md) | interface | Implemented by styles that contain nested styles. |
| [Style](Style.md) | interface | All styles must implement this interface. |
| [StyleContext](StyleContext.md) | interface | Context object that gives access to the style-relevant properties of a screen and its content component that should be embedded into the screen style component. |
| [StyleContextReceiver](StyleContextReceiver.md) | interface | Implemented by objects that handle screen style context changes. |
| [StyleManager](StyleManager.md) | interface | Helper for working with nested styles. |
| [WrapperStyle](WrapperStyle.md) | class | Abstract base class for a screen style that wraps a single user-selectable style. |

