<md-content layout="column" layout-align="center stretch" class="content">
  <ul class="breadcrumb">
    <li><a href="#/documentation/1.6.1">1.6.1</a> <span class="divider">/</span></li>
    <li><a href="#/documentation/1.6.1/language/overview">Language</a> <span class="divider">/</span></li>
    <li><a href="#/documentation/1.6.1/language/widgets">Widgets</a></li>
  </ul>
		<h2 id="Select">Select</h2>
		<h3 id="description">Description</h3>
		<p>The select widget can be used to display and edit a mono-valued property which can take one of several existing values. It can thus be used to edit a mono-valued EReference with a sizable list of potential values or an EEnum. The properties available on this widget are very similar to the ones available on a 
			<a href="#/documentation/1.6.1/language/widgets/radio">radio</a> widget. On top of the common properties of all widgets (identifier, labelExpression, helpExpression, isEnabledExpression, propertyValidationRules), it has the following properties:
		</p>
		<ul>
			<li>valueExpression: The value expression is used to compute the value to select. This expression must return an object.</li>
			<li>editExpression: This expression will be executed when the user will select a new value. The selected value will be accessible using the variable 
				<code>newValue</code>. This expression does not have to return anything.
			</li>
			<li>candidatesExpression: This expression is used to compute all the values to display in the select widget. This expression must return a collection of objects.</li>
			<li>candidateDisplayExpression: This expression is used to compute the label of each value in the select widget. Each value will be accessible using the variable 
				<code>candidate</code>. This expression must return a string.
			</li>
			<li>style: The style of the select widget.</li>
			<li>conditionalStyles: All the conditional styles of the select widget.</li>
		</ul>
		<h3 id="displayereference">Display an EReference</h3>
		<p>In order to display in the user interface a select widget with the value of a mono-valued EReference, you can create a select widget with the following properties:</p>
		<ul>
			<li>labelExpression: 
				<code>aql:'Supertype'</code>
			</li>
			<li>valueExpression: 
				<code>aql:self.supertype</code>
			</li>
			<li>editExpression: 
				<code>aql:self.eSet('supertype', newValue)</code>
			</li>
			<li>candidatesExpression: 
				<code>aql:packagename::Class.allInstances()</code>
			</li>
			<li>candidateDisplayExpression: 
				<code>aql:candidate.name</code>
			</li>
		</ul>
		<p>In this scenario, we will display a property with the eType &#171;Class&#187; coming from a package with the name &#171;packagename&#187;. 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 
			<code>eSet(java.lang.String, java.lang.Object)</code> used in the example does not exist in AQL. You would have to create it yourself.
		</p>
</md-content>
