## Checkbox

### Description

The checkbox can be used to easily display and edit a boolean property. The properties available on this widget are very similar to the ones available on a text widget. On top of the common properties of all widgets (identifier, labelExpression, helpExpression, isEnabledExpression, propertyValidationRules), it has the following properties:

- valueExpression: The value expression is used to compute the value to set in the checkbox widget. This expression must return a boolean.
- editExpression: The edit expression will be executed when the user will click in the checkbox widget. The current value of the checkbox will be accessible in a variable named `newValue`. The variable `newValue` is a `java.lang.Boolean`. This expression does not have to return anything.
- style: The style of the checkbox widget.
- conditionalStyles: All the conditional styles of the checkbox widget.

### Display an EBoolean EAttribute

In order to display in the user interface a checkbox with the value of an EAttribute with the eType EBoolean (i.e. the property abstract of an EObject), you can create a checkbox widget with the following properties:

- labelExpression: `aql:'Abstract:'`
- valueExpression: `aql:self.abstract`
- editExpression: `aql:self.eSet('abstract', newValue)`

EEF does not provide a default interpreter but you can easily configure EEF to be used with the AQL interpreter. In the integration of EEF with the AQL interpreter, you can register additional services, written in Java, in which you can expose to AQL new operations. The operation `eSet(java.lang.String, java.lang.Object)` used in the example does not exist in AQL. You would have to create it yourself.