# Install4JPropertyDescriptor

Import: `import com.install4j.api.beaninfo.Install4JPropertyDescriptor;`

```java
public class Install4JPropertyDescriptor extends PropertyDescriptor
```

Property descriptor for use in instances of [`Install4JBeanInfo`](Install4JBeanInfo.md).
For file and script properties, derived classes are available.

Using this class is not strictly required. In principle, you could also set values for the `ATTRIBUTE_*` constants in the property descriptor
of an unrelated property descriptor class.

## Methods

| Signature | Returns | Description |
|---|---|---|
| [`create(String, Class, String, String)`](#create-string-class-string-string) | `Install4JPropertyDescriptor` | Same as [`Install4JPropertyDescriptor.create`](Install4JPropertyDescriptor.md#create-string-class-string-string-string) with a `context` of `null`. |
| [`create(String, Class, String, String, String)`](#create-string-class-string-string-string) | `Install4JPropertyDescriptor` | Create a property descriptor that can be passed to [`Install4JBeanInfo.addPropertyDescriptor`](Install4JBeanInfo.md#addpropertydescriptor-install4jpropertydescriptor). |
| [`createNested(String, Class)`](#createnested-string-class) | `Install4JPropertyDescriptor` | Same as [`Install4JPropertyDescriptor.createNested`](Install4JPropertyDescriptor.md#createnested-string-string-class) with a `nestedBeanCategory` of `null`. |
| [`createNested(String, String, Class)`](#createnested-string-string-class) | `Install4JPropertyDescriptor` | Same as [`Install4JPropertyDescriptor.createNested`](Install4JPropertyDescriptor.md#createnested-string-string-class-propertyfilter) with a `propertyFilter` of `name -> true`. |
| [`createNested(String, String, Class, PropertyFilter)`](#createnested-string-string-class-propertyfilter) | `Install4JPropertyDescriptor` | Create a property descriptor for a nested bean that can be passed to [`Install4JBeanInfo.addPropertyDescriptor`](Install4JBeanInfo.md#addpropertydescriptor-install4jpropertydescriptor). |
| [`setContext(String)`](#setcontext-string) | `Install4JPropertyDescriptor` | Set the context for the property. |
| [`setPropertyCategory(String)`](#setpropertycategory-string) | `Install4JPropertyDescriptor` | Configures the property category. |
| [`setDisplayName(String)`](#setdisplayname-string) | `void` |  |
| [`setSortKey(Integer)`](#setsortkey-integer) | `Install4JPropertyDescriptor` | Set an integer key by which properties are sorted. |
| [`setVariableValueClass(Class)`](#setvariablevalueclass-class) | `Install4JPropertyDescriptor` | Set the class of the variable value, if [`Install4JPropertyDescriptor.CONTEXT_VARIABLE_NAME`](Install4JPropertyDescriptor.md#context-variable-name) is set. |
| [`setPropertyChangeListener(PropertyChangeListener)`](#setpropertychangelistener-propertychangelistener) | `Install4JPropertyDescriptor` | Set a property change listener that is invoked when the property is changed in the IDE. |
| [`setParentProperty(String)`](#setparentproperty-string) | `Install4JPropertyDescriptor` | Set the parent property under which this property should be shown in the install4j IDE. |
| [`setVisibilityDiscriminator(VisibilityDiscriminator)`](#setvisibilitydiscriminator-visibilitydiscriminator) | `Install4JPropertyDescriptor` | Sets a visibility discriminator for this property. |
| [`setActionListHiddenKeys(String[])`](#setactionlisthiddenkeys-string) | `Install4JPropertyDescriptor` | Hide this property if the bean is shown in the configuration of an action list property whose configured action keys contain one of the specified strings. |
| [`setActionListShownKeys(String[])`](#setactionlistshownkeys-string) | `Install4JPropertyDescriptor` | Show this property only if the bean is shown in the configuration of an action list property whose configured action keys contain one of the specified strings. |
| [`setHiddenInActionLists()`](#sethiddeninactionlists) | `Install4JPropertyDescriptor` | Do not show this property if the bean is shown in the configuration of the action list. |
| [`setAllowTextOverride(boolean)`](#setallowtextoverride-boolean) | `Install4JPropertyDescriptor` | Allow the user to switch to text mode in the context menu when editing the property in the install4j IDE. |
| [`setEmptyMessage(String)`](#setemptymessage-string) | `Install4JPropertyDescriptor` | If the value is `null` or empty, display a special text in a shaded color in the install4j IDE. |
| [`setSuggestedValues(String[])`](#setsuggestedvalues-string) | `Install4JPropertyDescriptor` | Enable auto-completion of a list of values when using the text field property editor in the install4j IDE. |
| [`setNestedBean(boolean)`](#setnestedbean-boolean) | `Install4JPropertyDescriptor` | Mark a property as a nested bean. |
| [`setNestedBeanCategory(String)`](#setnestedbeancategory-string) | `Install4JPropertyDescriptor` | Set the category for properties of the nested bean. |
| [`setNestedBeanPropertyFilter(PropertyFilter)`](#setnestedbeanpropertyfilter-propertyfilter) | `Install4JPropertyDescriptor` | Set a propertyFilter for properties of the nested bean. |
| [`setPreferred(boolean)`](#setpreferred-boolean) | `void` | Highlight a property as important. |

### create(String, Class, String, String)

```java
public static Install4JPropertyDescriptor create(String propertyName, Class beanClass, String displayName, String shortDescription)
```

Same as [`Install4JPropertyDescriptor.create`](Install4JPropertyDescriptor.md#create-string-class-string-string-string) with a `context` of `null`.

### create(String, Class, String, String, String)

```java
public static Install4JPropertyDescriptor create(String propertyName, Class beanClass, String displayName, String shortDescription, String context)
```

Create a property descriptor that can be passed to [`Install4JBeanInfo.addPropertyDescriptor`](Install4JBeanInfo.md#addpropertydescriptor-install4jpropertydescriptor).


**Parameters:**

- `propertyName` — the name of the property
- `beanClass` — the class of the bean that contains the property. **Note:** This is **not** the class of the property.
- `displayName` — the display name of the property
- `shortDescription` — a short description of the property in HTML format. You do not have to start the description with <html>, it will be prepended automatically.
- `context` — the context of the property. The context allows specifying different editors for the same property types.
See the `CONTEXT_*` properties for the built-in contexts. This context is also used for enumerated properties
in the [`EnumerationMapper`](EnumerationMapper.md). For properties of type `String[]`, you can pass an item name as the context.

**Returns:** the property descriptor

### createNested(String, Class)

```java
public static Install4JPropertyDescriptor createNested(String propertyName, Class beanClass)
```

Same as [`Install4JPropertyDescriptor.createNested`](Install4JPropertyDescriptor.md#createnested-string-string-class) with a `nestedBeanCategory` of `null`.

### createNested(String, String, Class)

```java
public static Install4JPropertyDescriptor createNested(String propertyName, String nestedBeanCategory, Class beanClass)
```

Same as [`Install4JPropertyDescriptor.createNested`](Install4JPropertyDescriptor.md#createnested-string-string-class-propertyfilter) with a `propertyFilter` of `name -> true`.

### createNested(String, String, Class, PropertyFilter)

```java
public static Install4JPropertyDescriptor createNested(String propertyName, String nestedBeanCategory, Class beanClass, PropertyFilter propertyFilter)
```

Create a property descriptor for a nested bean that can be passed to [`Install4JBeanInfo.addPropertyDescriptor`](Install4JBeanInfo.md#addpropertydescriptor-install4jpropertydescriptor).

Note that nested bean values must always be non-null.


**Parameters:**

- `propertyName` — the name of the property
- `nestedBeanCategory` — the category in which the properties of the nested bean will be shown
- `beanClass` — the class of the bean that contains the property. **Note:** This is **not** the class of the property.

**Returns:** the property descriptor

**See also:**

- [Install4JPropertyDescriptor.setNestedBean](Install4JPropertyDescriptor.md#setnestedbean-boolean)

### setContext(String)

```java
public Install4JPropertyDescriptor setContext(String editorContext)
```

Set the context for the property.


**Parameters:**

- `editorContext` — the context

**Returns:** `this`, for chained calls on this property descriptor

**See also:**

- [Install4JPropertyDescriptor.create](Install4JPropertyDescriptor.md#create-string-class-string-string-string)for an explanation of the context.

### setPropertyCategory(String)

```java
public Install4JPropertyDescriptor setPropertyCategory(String propertyCategory)
```

Configures the property category. In the install4j GUI, properties are grouped by their categories. If
no category has been specified, the default "Configuration" category is used.

You can collapse certain categories by default with the
[`Install4JBeanInfo.setCollapsedPropertyCategories`](Install4JBeanInfo.md#setcollapsedpropertycategories-string) method.


**Parameters:**

- `propertyCategory` — the category

**Returns:** `this`, for chained calls on this property descriptor

### setDisplayName(String)

```java
public void setDisplayName(String displayName)
```

### setSortKey(Integer)

```java
public Install4JPropertyDescriptor setSortKey(Integer sortKey)
```

Set an integer key by which properties are sorted. If no sort keys are specified, the properties will be sorted
in the order they were added to the bean info.


**Parameters:**

- `sortKey` — the sort key

**Returns:** `this`, for chained calls on this property descriptor

**See also:**

- [Install4JBeanInfo.addPropertyDescriptor](Install4JBeanInfo.md#addpropertydescriptor-install4jpropertydescriptor)

### setVariableValueClass(Class)

```java
public Install4JPropertyDescriptor setVariableValueClass(Class variableClass)
```

Set the class of the variable value, if [`Install4JPropertyDescriptor.CONTEXT_VARIABLE_NAME`](Install4JPropertyDescriptor.md#context-variable-name) is set.
This information is displayed in the install4j IDE.


**Parameters:**

- `variableClass` — the class of the variable value

**Returns:** `this`, for chained calls on this property descriptor

### setPropertyChangeListener(PropertyChangeListener)

```java
public Install4JPropertyDescriptor setPropertyChangeListener(PropertyChangeListener listener)
```

Set a property change listener that is invoked when the property is changed in the IDE. The source of
the change event is the bean itself.


**Parameters:**

- `listener` — the listener

**Returns:** `this`, for chained calls on this property descriptor

### setParentProperty(String)

```java
public Install4JPropertyDescriptor setParentProperty(String parentProperty)
```

Set the parent property under which this property should be shown in the install4j IDE.
The property sheet is a tree table, and each property can have child nodes. By assigning parent
properties, you can build up a tree-like structure in the property sheet.

For boolean properties, only descendant properties are only shown if the boolean value of the property
is selected as `true`. If the user selection is false, all descendant properties will be hidden.
If the selection is changed to true, all descendant properties will be shown.


**Parameters:**

- `parentProperty` — the name of the parent property

**Returns:** `this`, for chained calls on this property descriptor

### setVisibilityDiscriminator(VisibilityDiscriminator)

```java
public Install4JPropertyDescriptor setVisibilityDiscriminator(VisibilityDiscriminator visibilityDiscriminator)
```

Sets a visibility discriminator for this property. This only makes sense if
[`Install4JPropertyDescriptor.setParentProperty`](Install4JPropertyDescriptor.md#setparentproperty-string) has been called for this property descriptor.
Note that for a boolean parent property, a default visibility discriminator is
set that hides children if the user selection of the parent property is `false`.


**Parameters:**

- `visibilityDiscriminator` — the visibility discriminator

**Returns:** `this`, for chained calls on this property descriptor

**See also:**

- [VisibilityDiscriminator](VisibilityDiscriminator.md)

### setActionListHiddenKeys(String[])

```java
public Install4JPropertyDescriptor setActionListHiddenKeys(String[] hiddenKeys)
```

Hide this property if the bean is shown in the configuration of an action list property whose configured action keys
contain one of the specified strings.


**Parameters:**

- `hiddenKeys` — an array with the contexts of the [`ActionList`](../beans/ActionList.md) property for which the property should be hidden.
If one of the array elements is `null`, the property is always hidden in action lists.

**Returns:** `this`, for chained calls on this property descriptor

**See also:**

- [ActionListPropertyDescriptor.setActionKeys](ActionListPropertyDescriptor.md#setactionkeys-string)

### setActionListShownKeys(String[])

```java
public Install4JPropertyDescriptor setActionListShownKeys(String[] shownKeys)
```

Show this property only if the bean is shown in the configuration of an action list property whose configured action keys
contain one of the specified strings.


**Parameters:**

- `shownKeys` — an array with the contexts of the [`ActionList`](../beans/ActionList.md) property for which the property should be shown.

**Returns:** `this`, for chained calls on this property descriptor

**See also:**

- [ActionListPropertyDescriptor.setActionKeys](ActionListPropertyDescriptor.md#setactionkeys-string)

### setHiddenInActionLists()

```java
public Install4JPropertyDescriptor setHiddenInActionLists()
```

Do not show this property if the bean is shown in the configuration of the action list.
Equivalent to a call to `setActionListHiddenContexts(new String[] {null})`


**Returns:** `this`, for chained calls on this property descriptor

**See also:**

- [ActionListPropertyDescriptor](ActionListPropertyDescriptor.md)

### setAllowTextOverride(boolean)

```java
public Install4JPropertyDescriptor setAllowTextOverride(boolean allowTextOverride)
```

Allow the user to switch to text mode in the context menu when editing the property in the install4j IDE.
This only has an effect for non-String properties. In the getter of the property, you have to call one of the
`replaceWithTextOverride` methods in [`AbstractBean`](../beans/AbstractBean.md)


**Parameters:**

- `allowTextOverride` — if text mode should be available

**Returns:** `this`, for chained calls on this property descriptor

**See also:**

- [AbstractBean.getTextOverrideValue](../beans/AbstractBean.md#gettextoverridevalue-bean-string-class-t)

### setEmptyMessage(String)

```java
public Install4JPropertyDescriptor setEmptyMessage(String message)
```

If the value is `null` or empty, display a special text in a shaded color in the install4j IDE.
This only has an effect for properties of type `java.lang.String`, `java.lang.String[]` and `java.io.File`.


**Parameters:**

- `message` — the message

**Returns:** `this`, for chained calls on this property descriptor

### setSuggestedValues(String[])

```java
public Install4JPropertyDescriptor setSuggestedValues(String[] values)
```

Enable auto-completion of a list of values when using the text field property editor in the install4j IDE.
This only has an effect for properties of type `java.lang.String`.


**Parameters:**

- `values` — the values that should be auto-completed.

**Returns:** `this`, for chained calls on this property descriptor

### setNestedBean(boolean)

```java
public Install4JPropertyDescriptor setNestedBean(boolean nestedBean)
```

Mark a property as a nested bean. The type of the property must be a bean type, i.e., a class
with a BeanInfo of its own. In the install4j IDE, the properties of that type will be expanded
inline in the property table.

[`Visibility discriminator`](Install4JPropertyDescriptor.md#setvisibilitydiscriminator-visibilitydiscriminator), [`property category`](Install4JPropertyDescriptor.md#setpropertycategory-string)
and [`parent property`](Install4JPropertyDescriptor.md#setparentproperty-string) that are configured for this instance, are applied to
all properties of the nested bean. Nesting works recursively.


**Parameters:**

- `nestedBean` — if the property is a nested bean

**Returns:** `this`, for chained calls on this property descriptor

### setNestedBeanCategory(String)

```java
public Install4JPropertyDescriptor setNestedBeanCategory(String category)
```

Set the category for properties of the nested bean.
Only relevant if [`Install4JPropertyDescriptor.setNestedBean`](Install4JPropertyDescriptor.md#setnestedbean-boolean) has been called with `true`.


**Parameters:**

- `category` — the category in which the properties of the nested bean will be shown

**Returns:** `this`, for chained calls on this property descriptor

### setNestedBeanPropertyFilter(PropertyFilter)

```java
public Install4JPropertyDescriptor setNestedBeanPropertyFilter(PropertyFilter propertyFilter)
```

Set a propertyFilter for properties of the nested bean.
Only relevant if [`Install4JPropertyDescriptor.setNestedBean`](Install4JPropertyDescriptor.md#setnestedbean-boolean) has been called with `true`.


**Parameters:**

- `propertyFilter` — only show properties of the nested bean for which the propertyFilter returns `true`.

**Returns:** `this`, for chained calls on this property descriptor

### setPreferred(boolean)

```java
public void setPreferred(boolean preferred)
```

Highlight a property as important.
If set, the property name is shown in bold font in the IDE.


**Parameters:**

- `preferred` — whether to show the property in bold font or not.

## Fields

| Field | Type | Description |
|---|---|---|
| [ATTRIBUTE_PROPERTY_CATEGORY](#attribute-property-category) | `String` |  |
| [CATEGORY_CONFIGURATION](#category-configuration) | `String` | Default category used by install4j. |
| [ATTRIBUTE_CONTEXT](#attribute-context) | `String` |  |
| [CONTEXT_LAUNCHER_ID](#context-launcher-id) | `String` | Special context for properties of type `java.lang.String` that tells the install4j GUI to treat the string value as the ID of a launcher. |
| [CONTEXT_LAUNCHER_ID_OR_OTHER](#context-launcher-id-or-other) | `String` | Same as [`Install4JPropertyDescriptor.CONTEXT_LAUNCHER_ID`](Install4JPropertyDescriptor.md#context-launcher-id), but with an additional "[Other executable]" entry that sets the id property to null. |
| [CONTEXT_NON_SERVICE_LAUNCHER_ID](#context-non-service-launcher-id) | `String` | Same as [`Install4JPropertyDescriptor.CONTEXT_LAUNCHER_ID`](Install4JPropertyDescriptor.md#context-launcher-id), but service launchers are not selectable. |
| [CONTEXT_SERVICE_LAUNCHER_ID](#context-service-launcher-id) | `String` | Same as [`Install4JPropertyDescriptor.CONTEXT_LAUNCHER_ID`](Install4JPropertyDescriptor.md#context-launcher-id), but only service launchers are selectable. |
| [CONTEXT_COMPONENT_ID](#context-component-id) | `String` | Special context for properties of type `java.lang.String` that tells the install4j GUI to treat the string value as the ID of an installation component. |
| [CONTEXT_FORM_COMPONENT_ID](#context-form-component-id) | `String` | Special context for properties of type `java.lang.String` that tells the install4j GUI to treat the string value as the ID of a form component. |
| [CONTEXT_STYLE_ID](#context-style-id) | `String` | Special context for properties of type `java.lang.String` that tells the install4j GUI to treat the string value as the ID of a style. |
| [CONTEXT_DOWNLOADABLE_COMPONENT_ID](#context-downloadable-component-id) | `String` | Same as [`Install4JPropertyDescriptor.CONTEXT_COMPONENT_ID`](Install4JPropertyDescriptor.md#context-component-id), but only downloaded installation components are selectable. |
| [CONTEXT_MULTILINE](#context-multiline) | `String` | Special context for properties of type `java.lang.String` that tells the install4j GUI to allow the user to enter multi-line strings in a separate dialog. |
| [CONTEXT_HTML](#context-html) | `String` | Special context for properties of type `java.lang.String` that tells the install4j GUI to allow the user to enter an HTML document in a separate editor with syntax coloring and preview functionality. |
| [CONTEXT_DATETIME](#context-datetime) | `String` | Special context for properties of type `java.util.Date` that tells the install4j GUI to offer a time editor besides the default date editor as well. |
| [CONTEXT_VARIABLE_NAME](#context-variable-name) | `String` | Special context for properties of type `java.lang.String` that tells the install4j GUI to treat the string value as an installer variable name. |
| [CONTEXT_NO_INSTALLER_VARIABLES](#context-no-installer-variables) | `String` | Special context for properties of type `java.lang.String` and `java.io.File` that tells the install4j GUI not to offer installer variables in the text field for the property. |
| [CONTEXT_STRING_TO_STRING_MAP](#context-string-to-string-map) | `String` | Special context for properties of type `java.util.LinkedHashMap` that tells the install4j GUI that the map contains string keys and values and to offer a suitable converter and property customizer. |
| [CONTEXT_ANCHOR_CORNERS](#context-anchor-corners) | `String` | Special context for properties of type [`Anchor`](../beans/Anchor.md) that tells the install4j GUI to offer only the corner values of the anchor (north-west, north-east, south-west, south-east). |
| [CONTEXT_ANCHOR_SIDES](#context-anchor-sides) | `String` | Special context for properties of type [`Anchor`](../beans/Anchor.md) that tells the install4j GUI to offer only the side values of the anchor (north, west, east, south). |
| [CONTEXT_ANCHOR_HORIZONTAL](#context-anchor-horizontal) | `String` | Special context for properties of type [`Anchor`](../beans/Anchor.md) that tells the install4j GUI to offer only the horizontal values of the anchor (west, center, east). |
| [CONTEXT_ANCHOR_VERTICAL](#context-anchor-vertical) | `String` | Special context for properties of type [`Anchor`](../beans/Anchor.md) that tells the install4j GUI to offer only the vertical values of the anchor (north, center, south). |
| [CONTEXT_WIDGET_STYLE_ID](#context-widget-style-id) | `String` | Special context for properties of type `java.lang.String` that tells the install4j GUI to treat the string value as the ID of a widget style. |
| [ATTRIBUTE_SORT_KEY](#attribute-sort-key) | `String` |  |
| [ATTRIBUTE_PROPERTY_CHANGE_LISTENER](#attribute-property-change-listener) | `String` |  |
| [ATTRIBUTE_PARENT_PROPERTY](#attribute-parent-property) | `String` |  |
| [ATTRIBUTE_VARIABLE_VALUE_CLASS](#attribute-variable-value-class) | `String` |  |
| [ATTRIBUTE_VISIBILITY_DISCRIMINATOR](#attribute-visibility-discriminator) | `String` |  |
| [ATTRIBUTE_ACTION_LIST_HIDDEN_KEYS](#attribute-action-list-hidden-keys) | `String` |  |
| [ATTRIBUTE_ACTION_LIST_SHOWN_KEYS](#attribute-action-list-shown-keys) | `String` |  |
| [ATTRIBUTE_ALLOW_TEXT_OVERRIDE](#attribute-allow-text-override) | `String` |  |
| [ATTRIBUTE_EMPTY_MESSAGE](#attribute-empty-message) | `String` |  |
| [ATTRIBUTE_SUGGESTED_VALUES](#attribute-suggested-values) | `String` |  |
| [ATTRIBUTE_NESTED_BEAN](#attribute-nested-bean) | `String` |  |
| [ATTRIBUTE_NESTED_BEAN_CATEGORY](#attribute-nested-bean-category) | `String` |  |
| [ATTRIBUTE_NESTED_BEAN_PROPERTY_FILTER](#attribute-nested-bean-property-filter) | `String` |  |

### ATTRIBUTE_PROPERTY_CATEGORY

```java
public static final String ATTRIBUTE_PROPERTY_CATEGORY = "propertyCategory"
```

### CATEGORY_CONFIGURATION

```java
public static final String CATEGORY_CONFIGURATION = "Configuration"
```

Default category used by install4j.

### ATTRIBUTE_CONTEXT

```java
public static final String ATTRIBUTE_CONTEXT = "context"
```

### CONTEXT_LAUNCHER_ID

```java
public static final String CONTEXT_LAUNCHER_ID = "launcher"
```

Special context for properties of type `java.lang.String` that tells the install4j GUI
to treat the string value as the ID of a launcher. In the property panel, a drop-down list of
all defined launchers will be shown.

### CONTEXT_LAUNCHER_ID_OR_OTHER

```java
public static final String CONTEXT_LAUNCHER_ID_OR_OTHER = "launcherOrOther"
```

Same as [`Install4JPropertyDescriptor.CONTEXT_LAUNCHER_ID`](Install4JPropertyDescriptor.md#context-launcher-id), but with an additional "[Other executable]" entry that sets the id property to null.

### CONTEXT_NON_SERVICE_LAUNCHER_ID

```java
public static final String CONTEXT_NON_SERVICE_LAUNCHER_ID = "nonServiceLauncher"
```

Same as [`Install4JPropertyDescriptor.CONTEXT_LAUNCHER_ID`](Install4JPropertyDescriptor.md#context-launcher-id), but service launchers are not selectable.

### CONTEXT_SERVICE_LAUNCHER_ID

```java
public static final String CONTEXT_SERVICE_LAUNCHER_ID = "serviceLauncher"
```

Same as [`Install4JPropertyDescriptor.CONTEXT_LAUNCHER_ID`](Install4JPropertyDescriptor.md#context-launcher-id), but only service launchers are selectable.

### CONTEXT_COMPONENT_ID

```java
public static final String CONTEXT_COMPONENT_ID = "component"
```

Special context for properties of type `java.lang.String` that tells the install4j GUI
to treat the string value as the ID of an installation component. In the property panel, a drop-down list of
all defined installation components will be shown.

### CONTEXT_FORM_COMPONENT_ID

```java
public static final String CONTEXT_FORM_COMPONENT_ID = "formComponent"
```

Special context for properties of type `java.lang.String` that tells the install4j GUI
to treat the string value as the ID of a form component. This is only relevant for properties of form
components. In the property panel, a drop-down list of all defined form components in the current screen
will be shown. Layout groups and the currently edited form component will not be shown.

### CONTEXT_STYLE_ID

```java
public static final String CONTEXT_STYLE_ID = "style"
```

Special context for properties of type `java.lang.String` that tells the install4j GUI
to treat the string value as the ID of a style. This is useful for screen style implementations that need to refer
to other user-selectable screen styles, for example, for nesting them. In the property panel, a drop-down list of all
defined screen styles will be shown.

### CONTEXT_DOWNLOADABLE_COMPONENT_ID

```java
public static final String CONTEXT_DOWNLOADABLE_COMPONENT_ID = "downloadableComponent"
```

Same as [`Install4JPropertyDescriptor.CONTEXT_COMPONENT_ID`](Install4JPropertyDescriptor.md#context-component-id), but only downloaded installation components are selectable.

### CONTEXT_MULTILINE

```java
public static final String CONTEXT_MULTILINE = "multiline"
```

Special context for properties of type `java.lang.String` that tells the install4j GUI
to allow the user to enter multi-line strings in a separate dialog.

### CONTEXT_HTML

```java
public static final String CONTEXT_HTML = "html"
```

Special context for properties of type `java.lang.String` that tells the install4j GUI
to allow the user to enter an HTML document in a separate editor with syntax coloring and preview
functionality.

### CONTEXT_DATETIME

```java
public static final String CONTEXT_DATETIME = "dateTime"
```

Special context for properties of type `java.util.Date` that tells the install4j GUI
to offer a time editor besides the default date editor as well.

### CONTEXT_VARIABLE_NAME

```java
public static final String CONTEXT_VARIABLE_NAME = "variableName"
```

Special context for properties of type `java.lang.String` that tells the install4j GUI
to treat the string value as an installer variable name. The user will be offered a selector to choose
pre-defined installer variables.

This context can also be applied to properties of type `java.lang.String[]` so that the variable selector
in the edit dialog inserts installer variable names without the replacement syntax.

### CONTEXT_NO_INSTALLER_VARIABLES

```java
public static final String CONTEXT_NO_INSTALLER_VARIABLES = "noInstallerVariables"
```

Special context for properties of type `java.lang.String` and `java.io.File` that tells the install4j GUI
not to offer installer variables in the text field for the property.

### CONTEXT_STRING_TO_STRING_MAP

```java
public static final String CONTEXT_STRING_TO_STRING_MAP = "stringToStringMap"
```

Special context for properties of type `java.util.LinkedHashMap` that tells the install4j GUI
that the map contains string keys and values and to offer a suitable converter and property
customizer.

### CONTEXT_ANCHOR_CORNERS

```java
public static final String CONTEXT_ANCHOR_CORNERS = "corners"
```

Special context for properties of type [`Anchor`](../beans/Anchor.md) that tells the install4j GUI
to offer only the corner values of the anchor (north-west, north-east, south-west, south-east).

### CONTEXT_ANCHOR_SIDES

```java
public static final String CONTEXT_ANCHOR_SIDES = "sides"
```

Special context for properties of type [`Anchor`](../beans/Anchor.md) that tells the install4j GUI
to offer only the side values of the anchor (north, west, east, south).

### CONTEXT_ANCHOR_HORIZONTAL

```java
public static final String CONTEXT_ANCHOR_HORIZONTAL = "horizontal"
```

Special context for properties of type [`Anchor`](../beans/Anchor.md) that tells the install4j GUI
to offer only the horizontal values of the anchor (west, center, east).

### CONTEXT_ANCHOR_VERTICAL

```java
public static final String CONTEXT_ANCHOR_VERTICAL = "vertical"
```

Special context for properties of type [`Anchor`](../beans/Anchor.md) that tells the install4j GUI
to offer only the vertical values of the anchor (north, center, south).

### CONTEXT_WIDGET_STYLE_ID

```java
public static final String CONTEXT_WIDGET_STYLE_ID = "widgetStyleId"
```

Special context for properties of type `java.lang.String` that tells the install4j GUI
to treat the string value as the ID of a widget style. In the property panel, a drop-down list of
all defined widget sets will be shown.

As a special value, the empty string denotes the widget style for the current screen style.

Widget style IDS are useful if you construct Swing components yourself in code and want to apply a widget style to them.
You can pass widget set IDs to the `applyStyle...` methods in [`FormEnvironment`](../formcomponents/FormEnvironment.md)
to apply the widget style to a Swing component that you have constructed yourself.

### ATTRIBUTE_SORT_KEY

```java
public static final String ATTRIBUTE_SORT_KEY = "sortKey"
```

### ATTRIBUTE_PROPERTY_CHANGE_LISTENER

```java
public static final String ATTRIBUTE_PROPERTY_CHANGE_LISTENER = "propertyChangeListener"
```

### ATTRIBUTE_PARENT_PROPERTY

```java
public static final String ATTRIBUTE_PARENT_PROPERTY = "parentProperty"
```

### ATTRIBUTE_VARIABLE_VALUE_CLASS

```java
public static final String ATTRIBUTE_VARIABLE_VALUE_CLASS = "variableValueClass"
```

### ATTRIBUTE_VISIBILITY_DISCRIMINATOR

```java
public static final String ATTRIBUTE_VISIBILITY_DISCRIMINATOR = "visibilityDiscriminator"
```

### ATTRIBUTE_ACTION_LIST_HIDDEN_KEYS

```java
public static final String ATTRIBUTE_ACTION_LIST_HIDDEN_KEYS = "actionListHiddenKeys"
```

### ATTRIBUTE_ACTION_LIST_SHOWN_KEYS

```java
public static final String ATTRIBUTE_ACTION_LIST_SHOWN_KEYS = "actionListShownKeys"
```

### ATTRIBUTE_ALLOW_TEXT_OVERRIDE

```java
public static final String ATTRIBUTE_ALLOW_TEXT_OVERRIDE = "allowTextOverride"
```

### ATTRIBUTE_EMPTY_MESSAGE

```java
public static final String ATTRIBUTE_EMPTY_MESSAGE = "emptyMessage"
```

### ATTRIBUTE_SUGGESTED_VALUES

```java
public static final String ATTRIBUTE_SUGGESTED_VALUES = "suggestedValues"
```

### ATTRIBUTE_NESTED_BEAN

```java
public static final String ATTRIBUTE_NESTED_BEAN = "nestedBean"
```

### ATTRIBUTE_NESTED_BEAN_CATEGORY

```java
public static final String ATTRIBUTE_NESTED_BEAN_CATEGORY = "nestedBeanCategory"
```

### ATTRIBUTE_NESTED_BEAN_PROPERTY_FILTER

```java
public static final String ATTRIBUTE_NESTED_BEAN_PROPERTY_FILTER = "nestedBeanPropertyFilter"
```

