<?xml version="1.0" encoding="UTF-8"?>

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://xmlns.jcp.org/jsf/core"
                xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
                xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:p="http://primefaces.org/ui"
                xmlns:pe="http://primefaces.org/ui/extensions"
                xmlns:e="http://www.ivu.de/elect/tags"
                xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">

    <!--@elvariable id="model" type="de.ivu.elect.jee.presentation.dynamicform.AdvancedDynaFormModel"-->
    <e:dyna model="#{model}">
        <!--@elvariable id="data" type="de.ivu.elect.jee.presentation.dynamicform.FormData"-->
        <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.Property"-->

        <!-- NOTE, dass dieser Parameter erst in /elect-base-war/src/main/webapp/WEB-INF/templates/edit.xhtml verwendet wird!-->
        <ui:param name="propertyContainerStyleClass" value="#{data.styleClass}"/>

        <!-- NOTE, that all type attributes are specified in de.ivu.elect.jee.presentation.dynamicform.PropertyType. -->
        <ui:param name="property" value="#{data.property}"/>

        <!-- ELECT-7174, cf. elect-base-war/src/main/webapp/email/email-vorgang-einzel-email-create.xhtml. -->
        <ui:param name="formDataFacesValidatorDisabled" value="#{not empty param and param['formDataFacesValidatorDisabled'] eq true}"/>

        <pe:dynaFormControl type="ELECT_5339">
                <!-- https://support.elect-it.com/ticket/browse/ELECT-5339 -->
                <!-- Cf. dyna-form.xhtml, personen-konflikt-personenregister-abgleich-aufloesen.xhtml, personen-konflikt-personenregister-abgleich-aufloesen-dyna-form.xhtml, wahlscheinantrag-person-manuell-zuordnen-dialog-dyna-form.xhtml -->
               <p:inputText id="elect5339" type="hidden"/>
        </pe:dynaFormControl>

        <c:if test="#{model.isTypePresent('input_calendar')}">
        <pe:dynaFormControl type="input_calendar">
            <e:inputCalendar id="inputCalendar" label="#{property.label}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                required="#{property.required and not formDataFacesValidatorDisabled}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}">
                <p:ajax disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />
                <p:ajax event="dateSelect" disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
            </e:inputCalendar>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_calendar_readonly')}">
        <pe:dynaFormControl type="input_calendar_readonly">
            <e:inputCalendar id="inputCalendarDisabled" disabled="true" label="#{property.label}" value="#{property.value}"
                hints="#{data.facesMessages}" tooltip="#{property.tooltip}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}" />
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_calendar_between')}">
        <pe:dynaFormControl type="input_calendar_between">
            <e:inputCalendarBetween id="inputCalendarBetween" label="#{property.label}" valueFromRequired="#{property.valueRequired and not formDataFacesValidatorDisabled}" valueFrom="#{property.value}" valueToRequired="#{property.value2Required and not formDataFacesValidatorDisabled}" valueTo="#{property.value2}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                required="#{property.required and not formDataFacesValidatorDisabled}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}">
                <p:ajax disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />
                <p:ajax event="dateSelect" disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
            </e:inputCalendarBetween>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_calendar_between_readonly')}">
        <pe:dynaFormControl type="input_calendar_between_readonly">
            <e:inputCalendarBetween id="inputCalendarBetweenDisabled" disabled="true" label="#{property.label}" valueFrom="#{property.value}" valueTo="#{property.value2}"
                hints="#{data.facesMessages}" tooltip="#{property.tooltip}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}" />
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_calendar_time')}">
        <pe:dynaFormControl type="input_calendar_time">
            <e:inputCalendar id="inputCalendarTime" label="#{property.label}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                required="#{property.required and not formDataFacesValidatorDisabled}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}">
                <p:ajax disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />
                <p:ajax event="dateSelect" disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
            </e:inputCalendar>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_calendar_time_readonly')}">
        <pe:dynaFormControl type="input_calendar_time_readonly">
            <e:inputCalendar id="inputCalendarTimeDisabled" disabled="true" label="#{property.label}" value="#{property.value}"
                hints="#{data.facesMessages}" tooltip="#{property.tooltip}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}" />
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_calendar_time_between')}">
        <pe:dynaFormControl type="input_calendar_time_between">
            <e:inputCalendarBetween id="inputCalendarTimeBetween" label="#{property.label}" valueFromRequired="#{property.valueRequired and not formDataFacesValidatorDisabled}" valueFrom="#{property.value}" valueToRequired="#{property.value2Required and not formDataFacesValidatorDisabled}" valueTo="#{property.value2}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                required="#{property.required and not formDataFacesValidatorDisabled}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}">
                <p:ajax disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />
                <p:ajax event="dateSelect" disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
            </e:inputCalendarBetween>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_calendar_time_between_readonly')}">
        <pe:dynaFormControl type="input_calendar_time_between_readonly">
            <e:inputCalendarBetween id="inputCalendarTimeBetweenDisabled" disabled="true" label="#{property.label}" valueFrom="#{property.value}" valueTo="#{property.value2}"
                hints="#{data.facesMessages}" tooltip="#{property.tooltip}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}" />
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_calendar_time_only')}">
        <pe:dynaFormControl type="input_calendar_time_only">
            <e:inputCalendar id="inputCalendarTimeOnly" label="#{property.label}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                required="#{property.required and not formDataFacesValidatorDisabled}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}" timeOnly="true">
                <p:ajax disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />
                <p:ajax event="dateSelect" disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
            </e:inputCalendar>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_calendar_time_only_readonly')}">
        <pe:dynaFormControl type="input_calendar_time_only_readonly">
            <e:inputCalendar id="inputCalendarTimeOnlyDisabled" disabled="true" label="#{property.label}" value="#{property.value}"
                hints="#{data.facesMessages}" tooltip="#{property.tooltip}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}" timeOnly="true" />
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_calendar_time_only_between')}">
        <pe:dynaFormControl type="input_calendar_time_only_between">
            <e:inputCalendarBetween id="inputCalendarTimeOnlyBetween" label="#{property.label}" valueFromRequired="#{property.valueRequired and not formDataFacesValidatorDisabled}" valueFrom="#{property.value}" valueToRequired="#{property.value2Required and not formDataFacesValidatorDisabled}" valueTo="#{property.value2}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                required="#{property.required and not formDataFacesValidatorDisabled}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}" timeOnly="true">
                <p:ajax disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />
                <p:ajax event="dateSelect" disabled="#{not data.observedProperty}"
                        listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                        process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
            </e:inputCalendarBetween>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_calendar_time_only_between_readonly')}">
        <pe:dynaFormControl type="input_calendar_time_only_between_readonly">
            <e:inputCalendarBetween id="inputCalendarTimeOnlyBetweenDisabled" disabled="true" label="#{property.label}" valueFrom="#{property.value}" valueTo="#{property.value2}"
                hints="#{data.facesMessages}" tooltip="#{property.tooltip}" converter="#{property.converter}" pattern="#{property.converterPattern}" showTime="#{property.showTime}" timeOnly="true" />
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_color')}">
        <pe:dynaFormControl type="input_color">
            <e:inputColor id="inputColor" label="#{property.label}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                required="#{property.required and not formDataFacesValidatorDisabled}" />
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_color_readonly')}">
        <pe:dynaFormControl type="input_color_readonly">
            <p:outputPanel styleClass="#{data.styleClass}">
                <!-- NOTE that the hidden input field MUST BE USED to transmit the auto-updated value of an observing property! -->
                <h:inputHidden rendered="#{data.observingProperty}" value="#{property.value}" />

                <e:inputColor id="inputColorDisabled" disabled="true" label="#{property.label}" value="#{property.value}"
                    hints="#{data.facesMessages}" tooltip="#{property.tooltip}" />
            </p:outputPanel>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_money')}">
        <pe:dynaFormControl type="input_money">
            <e:inputMoney id="inputMoney" label="#{property.label}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                converter="#{property.converter}" currencySymbol="#{property.currencySymbol}" required="#{property.required and not formDataFacesValidatorDisabled}"
                minlength="#{property.minLength}" maxlength="#{property.maxLength}" autocomplete="#{property.autocomplete}">
                <p:ajax disabled="#{not data.observedProperty}"
                    listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                    process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
            </e:inputMoney>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_money_readonly')}">
        <pe:dynaFormControl type="input_money_readonly">
            <p:outputPanel styleClass="#{data.styleClass}">
                <!-- NOTE that the hidden input field MUST BE USED to transmit the auto-updated value of an observing property! -->
                <h:inputHidden rendered="#{data.observingProperty}" value="#{property.value}"/>

                <e:inputMoney id="inputMoneyDisabled" disabled="true" label="#{property.label}" value="#{property.value}"
                              hints="#{data.facesMessages}" tooltip="#{property.tooltip}" converter="#{property.converter}"
                              currencySymbol="#{property.currencySymbol}"/>
            </p:outputPanel>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_number')}">
        <pe:dynaFormControl type="input_number">
            <e:inputText id="inputNumber" label="#{property.label}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                converter="#{property.converter}" required="#{property.required and not formDataFacesValidatorDisabled}" focused="#{data.focused}"
                minlength="#{property.minLength}" maxlength="#{property.maxLength}" styleClass="#{property.styleClass} dyna-input-number" autocomplete="#{property.autocomplete}">
                <p:ajax disabled="#{not data.observedProperty}"
                    listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                    process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
            </e:inputText>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_number_readonly')}">
        <pe:dynaFormControl type="input_number_readonly">
            <p:outputPanel styleClass="#{data.styleClass}">
                <!-- NOTE that the hidden input field MUST BE USED to transmit the auto-updated value of an observing property! -->
                <h:inputHidden rendered="#{data.observingProperty}" value="#{property.value}"/>

                <e:inputText id="inputNumberDisabled" disabled="#{not property.rtl}" readonly="#{property.rtl}" label="#{property.label}" value="#{property.value}"
                             hints="#{data.facesMessages}" tooltip="#{property.tooltip}" converter="#{property.converter}" styleClass="#{property.styleClass} dyna-input-number"/>
            </p:outputPanel>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_password')}">
        <pe:dynaFormControl type="input_password">
            <e:inputPassword id="inputPassword" required="#{property.required and not formDataFacesValidatorDisabled}" value="#{property.value}" pattern="#{property.pattern}" patternDescription="#{property.patternDescription}"
                minlength="#{property.minLength}" maxlength="#{property.maxLength}" autocomplete="#{property.autocomplete}" feedback="#{property.feedback}" label="#{property.label}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}">
                <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
            </e:inputPassword>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_password_readonly')}">
        <pe:dynaFormControl type="input_password_readonly">
            <e:inputPassword id="inputPasswordDisabled" disabled="true" label="#{property.label}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}" />
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_text')}">
        <pe:dynaFormControl type="input_text">
            <e:inputText id="inputText" label="#{property.label}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                required="#{property.required and not formDataFacesValidatorDisabled}" focused="#{data.focused}" minlength="#{property.minLength}"
                maxlength="#{property.maxLength}" converter="#{property.converter}" styleClass="#{property.styleClass}" autocomplete="#{property.autocomplete}" >
                <p:ajax disabled="#{not data.observedProperty}"
                    listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                    process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
            </e:inputText>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_text_readonly')}">
        <pe:dynaFormControl type="input_text_readonly">
            <p:outputPanel styleClass="#{data.styleClass}" rendered="#{not property.messageProperty}">
                <!-- NOTE that the hidden input field MUST BE USED to transmit the auto-updated value of an observing property! -->
                <h:inputHidden rendered="#{data.observingProperty}" value="#{property.value}"/>

                <e:inputText id="inputTextDisabled" disabled="true" label="#{property.label}" value="#{property.value}"
                             hints="#{data.facesMessages}" tooltip="#{property.tooltip}" converter="#{property.converter}" styleClass="#{property.styleClass}"/>
            </p:outputPanel>

            <p:outputPanel styleClass="#{data.styleClass}" rendered="#{property.messageProperty}">
                <h:outputText value="#{property.value}" converter="#{property.converter}" />
            </p:outputPanel>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_mask')}">
            <pe:dynaFormControl type="input_mask">
                <e:inputMask id="inputMask" label="#{property.label}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}" required="#{property.required and not formDataFacesValidatorDisabled}" focused="#{data.focused}"
                    autocomplete="#{property.autocomplete}" minlength="#{property.minLength}" maxlength="#{property.maxLength}" mask="#{property.mask}" maskSlotChar="#{property.maskSlotChar}" converter="#{property.converter}">
                    <p:ajax disabled="#{not data.observedProperty}" listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}" process="#{data.observedPropertyProcessSelector}"
                        update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                    <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                    <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                    <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
                </e:inputMask>
            </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_mask_readonly')}">
            <pe:dynaFormControl type="input_mask_readonly">
                <p:outputPanel styleClass="#{data.styleClass}">
                    <!-- NOTE that the hidden input field MUST BE USED to transmit the auto-updated value of an observing property! -->
                    <h:inputHidden rendered="#{data.observingProperty}" value="#{property.value}" />

                    <e:inputText id="inputMaskDisabled" disabled="true" label="#{property.label}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}" converter="#{property.converter}" />
                </p:outputPanel>
            </pe:dynaFormControl>
        </c:if>

        <!-- @deprecated WASDE-896, wird nur noch von (Destatis) NamePraesentationAutoUpdateProperty verwendet! -->
        <c:if test="#{model.isTypePresent('input_text_token')}">
        <pe:dynaFormControl type="input_text_token">
            <e:inputTextarea id="inputTextToken" label="#{property.label}" rows="#{property.maxLineSeparators + 2}"
                value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}" required="#{property.required and not formDataFacesValidatorDisabled}" focused="#{data.focused}"
                minlength="#{property.minLength}" maxlength="#{property.maxLength}">
                <!-- NOTE ELECT-5335, <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="maxLineLengthsValidator" /> -->
                <f:attribute name="maxLineLengths" value="#{property.maxLineLengths}" />
            </e:inputTextarea>
        </pe:dynaFormControl>
        </c:if>

        <!-- @deprecated WASDE-896, wird nur noch von (Destatis) NamePraesentationAutoUpdateProperty verwendet! -->
        <c:if test="#{model.isTypePresent('input_text_token_readonly')}">
        <pe:dynaFormControl type="input_text_token_readonly">
            <p:outputPanel styleClass="#{data.styleClass}">
                <!-- NOTE that the hidden input field MUST BE USED to transmit the auto-updated value of an observing property! -->
                <h:inputHidden rendered="#{data.observingProperty}" value="#{property.value}"/>

                <e:inputTextarea id="inputTextTokenDisabled" disabled="true" label="#{property.label}" value="#{property.value}"
                                 hints="#{data.facesMessages}" tooltip="#{property.tooltip}" />
            </p:outputPanel>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_textarea')}">
        <pe:dynaFormControl type="input_textarea">
            <e:inputTextarea id="inputTextArea" label="#{property.label}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                required="#{property.required and not formDataFacesValidatorDisabled}" focused="#{data.focused}" minlength="#{property.minLength}"
                maxlength="#{property.maxLength}">
                <p:ajax disabled="#{not data.observedProperty}"
                    listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                    process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                <f:attribute name="dynamicAttributes" value="#{data.attributes}" />
            </e:inputTextarea>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_textarea_readonly')}">
        <pe:dynaFormControl type="input_textarea_readonly">
            <e:inputTextarea id="inputTextAreaDisabled" disabled="true" label="#{property.label}" value="#{property.value}"
                             hints="#{data.facesMessages}" tooltip="#{property.tooltip}" />
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('pick_list')}">
            <pe:dynaFormControl type="pick_list">
                <e:pickList id="pickList" required="#{property.required and not formDataFacesValidatorDisabled}" label="#{property.label}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}" var="item"
                    itemValue="#{item}" itemLabel="#{property.getItemFilterLabel(item)}" itemsMaxSize="#{property.itemsMaxSize}" converter="#{property.converter}" showTargetControls="#{property.showTargetControls}"
                    showFilter="#{property.showFilter}" filterMatchMode="#{property.filterMatchMode}" filterFunction="#{property.filterFunction}">
                    <p:ajax disabled="#{not data.observedProperty}" event="transfer" listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}" process="#{data.observedPropertyProcessSelector}"
                        update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                    <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                    <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                    <f:attribute name="dynamicAttributes" value="#{data.attributes}" />

                    <f:facet name="sourceCaption">
                        <h:outputText value="#{property.sourceCaption}" />
                    </f:facet>
                    <f:facet name="targetCaption">
                        <h:outputText value="#{property.targetCaption}" />
                    </f:facet>

                    <p:column rendered="#{property.colorPresent}" style="width:7%">
                        <e:outputColor value="#{property.getItemColor(item)}" />
                    </p:column>

                    <p:column style="width:93%;">
                        <h:outputText value="#{property.getItemLabel(item)}" title="#{property.getItemTooltip(item)}" />
                    </p:column>
                </e:pickList>
            </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('pick_list_readonly')}">
            <pe:dynaFormControl type="pick_list_readonly">
                <ui:decorate template="/WEB-INF/templates/edit.xhtml">
                    <ui:param name="id" value="pickListDisabled" />
                    <ui:param name="label" value="#{property.label}" />

                    <ui:param name="hints" value="#{data.facesMessages}" />
                    <ui:param name="tooltip" value="#{property.tooltip}" />

                    <ui:define name="inputComponent">
                        <ui:fragment id="#{id}">
                            <ui:fragment rendered="#{not empty property.value.target}">
                                <ul class="ui-picklist">
                                    <ui:repeat value="#{property.value.target}" var="item">
                                        <li><h:outputText value="#{property.getItemLabel(item)}" title="#{property.getItemTooltip(item)}" /></li>
                                    </ui:repeat>
                                </ul>
                            </ui:fragment>
                        </ui:fragment>
                    </ui:define>
                </ui:decorate>
            </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('image_readonly')}">
            <pe:dynaFormControl type="image_readonly">
                <e:outputImage id="imageReadonly" label="#{property.label}" content="#{property.content}" required="false"/>
            </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('input_url_readonly')}">
            <pe:dynaFormControl type="input_url_readonly">
                <e:inputUrl id="inputUrlDisabled" disabled="true" label="#{property.label}" value="#{property.value}"
                    hints="#{data.facesMessages}" tooltip="#{property.tooltip}" converter="#{property.converter}" />
            </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('select_boolean_checkbox')}">
        <pe:dynaFormControl type="select_boolean_checkbox">
            <e:selectBooleanCheckbox id="selectBooleanCheckbox" label="#{property.label}" value="#{property.value}"
                                     hints="#{data.facesMessages}" tooltip="#{property.tooltip}" required="#{property.required and not formDataFacesValidatorDisabled}"/>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('select_boolean_checkbox_readonly')}">
        <pe:dynaFormControl type="select_boolean_checkbox_readonly">
            <e:selectBooleanCheckbox id="selectBooleanCheckboxDisabled" disabled="true" label="#{property.label}"
                                     value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}" />
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('select_one_menu')}">
            <pe:dynaFormControl type="select_one_menu">


                <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.AbstractSelectOneMenuProperty"-->

                <e:selectOneMenu id="selectOneMenu" required="#{property.required and not formDataFacesValidatorDisabled}" value="#{property.value}" var="option" label="#{property.label}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                    converter="#{property.converter}" editable="#{property.editable}" filter="#{property.showFilter}">
                    <p:ajax disabled="#{not data.observedProperty}" listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}" process="#{data.observedPropertyProcessSelector}"
                        update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                    <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                    <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                    <f:attribute name="dynamicAttributes" value="#{data.attributes}" />

                    <f:selectItems value="#{empty data.values ? property.values : data.values}" var="item" itemLabel="#{property.getItemLabel(item)}" />
                    <p:column>
                        <e:outputIcon rendered="#{property.isItemIconPresent()}" value="#{property.getItemIcon(option)}" title="#{property.getItemLabel(option)}" />
                        <h:outputText value="#{property.getItemLabel(option)}" />
                    </p:column>
                </e:selectOneMenu>
            </pe:dynaFormControl>
        </c:if>

        <!-- C.f. select_one_menu_no_selection_item_readonly, auto_complete_entity_readonly, auto_complete_readonly!  -->
        <c:if test="#{model.isTypePresent('select_one_menu_readonly')}">
        <pe:dynaFormControl type="select_one_menu_readonly">
            <p:outputPanel styleClass="#{data.styleClass}">
                <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.AbstractSelectOneMenuProperty"-->

                <!-- NOTE that the hidden input field MUST BE USED to transmit the auto-updated value of an observing property! -->
                <h:inputHidden rendered="#{data.observingProperty}" value="#{property.value}"/>

                <e:selectOneMenu id="selectOneMenuDisabled" disabled="true" label="#{property.label}"
                                 value="#{property.getItemLabel(property.value)}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}" iconStyleClass="#{property.getItemIcon(property.value)}" />
            </p:outputPanel>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('select_one_menu_no_selection_item')}">
            <pe:dynaFormControl type="select_one_menu_no_selection_item">


                <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.AbstractSelectOneMenuProperty"-->
                <e:selectOneMenu id="selectOneMenuNoSelectionItem" required="#{property.required and not formDataFacesValidatorDisabled}" value="#{property.value}" var="option" label="#{property.label}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                    converter="#{property.converter}" editable="#{property.editable}" filter="#{property.showFilter}">
                    <p:ajax disabled="#{not data.observedProperty}" listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}" process="#{data.observedPropertyProcessSelector}"
                        update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                    <!-- NOTE that noSelectionOption="true" causes a wrong selection, cf. https://code.google.com/p/primefaces/issues/detail?id=4178&thanks=4178&ts=1339093060 -->
                    <!-- NOTE ELECT-3631 itemLabel="#{property.noSelectionLabel}" funktioniert wegen diesem Bug nicht,  scheint aber unter WildFly wieder zu funktionieren. -->
                    <c:if test="#{jBossVersion.wildfly}">
                        <f:selectItem itemLabel="#{empty property.noSelectionLabel ? '&#160;' : property.noSelectionLabel}" itemValue="#{null}" />
                    </c:if>
                    <c:if test="#{!jBossVersion.wildfly}">
                        <f:selectItem itemLabel="" itemValue="#{null}" />
                    </c:if>

                    <f:selectItems value="#{empty data.values ? property.values : data.values}" var="item" itemLabel="#{property.getItemLabel(item)}" />

                    <p:column>
                        <e:outputIcon rendered="#{property.isItemIconPresent()}" value="#{property.getItemIcon(option)}" title="#{property.getItemLabel(option)}" />
                        <h:outputText value="#{property.getItemLabel(option)}" />
                    </p:column>
                </e:selectOneMenu>
            </pe:dynaFormControl>
        </c:if>

        <!-- C.f. select_one_menu_readonly, auto_complete_entity_readonly, auto_complete_readonly!  -->
        <c:if test="#{model.isTypePresent('select_one_menu_no_selection_item_readonly')}">
        <pe:dynaFormControl type="select_one_menu_no_selection_item_readonly">
            <p:outputPanel styleClass="#{data.styleClass}">
                <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.AbstractSelectOneMenuProperty"-->
                <!-- NOTE that the hidden input field MUST BE USED to transmit the auto-updated value of an observing property! -->
                <h:inputHidden rendered="#{data.observingProperty}" value="#{property.value}"/>

                <e:selectOneMenu id="selectOneMenuNoSelectionItemDisabled" disabled="true" label="#{property.label}"
                                 value="#{property.getItemLabel(property.value)}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}" iconStyleClass="#{property.getItemIcon(property.value)}"/>
            </p:outputPanel>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('auto_complete')}">
        <pe:dynaFormControl type="auto_complete">
            <ui:decorate template="/WEB-INF/templates/edit.xhtml">
                <ui:param name="id" value="autoComplete" />
                <ui:param name="label" value="#{property.label}" />

                <ui:param name="required" value="#{property.required}" />

                <ui:param name="hints" value="#{data.facesMessages}" />
                <ui:param name="tooltip" value="#{property.tooltip}" />

                <ui:param name="focused" value="#{data.focused}" />

                <ui:define name="inputComponent">
                    <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.AbstractAutoCompleteProperty"-->

                    <!-- NOTE ELECT-2751, cf. /elect-base-war/src/main/webapp/resources/js/common/PrimeFaces/widget/AutoComplete.js. -->
                    <!-- NOTE, dass der Suffix 'RecentQueryHidden' im JavaScript referenziert wird! -->
                    <p:inputText id="#{id.concat('RecentQueryHidden')}" type="hidden" value="#{property.recentQuery}" />
                    <p:autoComplete id="#{id}" required="#{required}" value="#{property.value}" multiple="#{property.multipleEnabled}" dropdown="#{property.dropdownEnabled}" scrollHeight="420"
                        cache="#{property.cacheEnabled}" selectLimit="#{property.maxOptionsSelectedCount}" forceSelection="false" placeholder="#{property.placeholder}"
                        maxlength="#{property.maxQueryLength}" minQueryLength="#{property.minQueryLength}" queryDelay="75" completeMethod="#{property.getOptionsFiltered}" var="item"
                        itemValue="#{item}" itemLabel="#{property.getValueLabel(item)}" converter="#{property.converter}" styleClass="dynaFormStyle #{property.styleClasses}">
                        <p:ajax event="change" disabled="#{not data.observedProperty}" listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                            process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />
                        <p:ajax event="itemSelect" disabled="#{not data.observedProperty}" listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                            process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />
                        <p:ajax event="itemUnselect" disabled="#{not data.observedProperty}" listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                            process="#{data.observedPropertyProcessSelector}" update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}" />

                        <f:validator disabled="#{formDataFacesValidatorDisabled}" validatorId="formDataFacesValidator" />
                        <f:attribute name="dynamicValidators" value="#{data.facesValidators}" />
                        <f:attribute name="dynamicAttributes" value="#{data.attributes}" />

                        <p:column>
                            <h:outputText value="#{property.getOptionLabel(item)}" />
                        </p:column>
                    </p:autoComplete>
                </ui:define>
            </ui:decorate>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('auto_complete_readonly')}">
        <pe:dynaFormControl type="auto_complete_readonly">
            <ui:decorate template="/WEB-INF/templates/edit.xhtml">
                <ui:param name="id" value="autoCompleteDisabled"/>
                <ui:param name="label" value="#{property.label}"/>

                <ui:param name="hints" value="#{data.facesMessages}"/>
                <ui:param name="tooltip" value="#{property.tooltip}" />

                <ui:define name="inputComponent">
                    <ui:fragment id="#{id}">
                        <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.AbstractAutoCompleteProperty"-->
                        <ui:fragment rendered="#{property.multipleEnabled}">
                            <ul class="ui-auto-complete-string #{property.styleClasses}">
                                <ui:repeat value="#{property.value}" var="item">
                                    <li><h:outputText value="#{property.getValueLabel(item)}"/></li>
                                </ui:repeat>
                            </ul>
                        </ui:fragment>

                        <h:outputText rendered="#{not property.multipleEnabled}" value="#{property.getValueLabel(property.value)}" styleClass="#{property.styleClasses}"/>
                    </ui:fragment>
                </ui:define>
            </ui:decorate>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('auto_complete_entity')}">
        <pe:dynaFormControl type="auto_complete_entity">
            <ui:decorate template="/WEB-INF/templates/edit.xhtml">
                <ui:param name="id" value="inEntityAutoComplete" />
                <ui:param name="label" value="#{property.label}" />

                <ui:param name="required" value="#{property.required}" />

                <ui:param name="hints" value="#{data.facesMessages}" />
                <ui:param name="tooltip" value="#{property.tooltip}" />

                <ui:param name="focused" value="#{data.focused}" />

                <ui:define name="inputComponent">
                    <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.AbstractAutocompletionProperty"-->

                    <p:autoComplete id="#{id}" styleClass="dynaFormStyle dynaFormEntityAutoComplete" forceSelection="#{property.forceSelection}" placeholder="#{property.watermark}" dropdown="true"
                                    scrollHeight="420" value="#{property.value}" converter="#{property.converter}" var="item"
                                    itemValue="#{item}"
                                    itemLabel="#{property.getItemLabel(item)}" completeMethod="#{property.onComplete}"
                                    required="#{required}" minQueryLength="2" queryDelay="75" >
                        <p:ajax event="change" disabled="#{not data.observedProperty}"
                                listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                                process="#{data.observedPropertyProcessSelector}"
                                update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}"/>
                        <p:ajax event="itemSelect" disabled="#{not data.observedProperty}"
                                listener="#{formDataPropertyValueChangeListener.onPropertyValueChanged(data)}"
                                process="#{data.observedPropertyProcessSelector}"
                                update="#{data.observedPropertyUpdateSelector}" resetValues="#{data.observedPropertyResetValues}"/>
                    </p:autoComplete>
                </ui:define>
            </ui:decorate>
        </pe:dynaFormControl>
        </c:if>

        <!-- C.f. select_one_menu_readonly, select_one_menu_no_selection_item_readonly, auto_complete_readonly!  -->
        <c:if test="#{model.isTypePresent('auto_complete_entity_readonly')}">
        <pe:dynaFormControl type="auto_complete_entity_readonly">
            <p:outputPanel styleClass="#{data.styleClass}">
                <!-- NOTE that the hidden input field MUST BE USED to transmit the auto-updated value of an observing property! -->
                <h:inputHidden rendered="#{data.observingProperty}" value="#{property.value}"/>
                <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.AbstractAutocompletionProperty"-->

                <e:selectOneMenu id="inEntityAutoCompleteDisabled" disabled="true" label="#{property.label}"
                                 value="#{property.getItemLabel(property.value)}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}" />
            </p:outputPanel>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('select_one_radio')}">
        <pe:dynaFormControl type="select_one_radio">
            <e:selectOneRadio id="selectOneRadio" label="#{property.label}" value="#{property.value}"
                              hints="#{data.facesMessages}" tooltip="#{property.tooltip}"
                              required="#{property.required and not formDataFacesValidatorDisabled}">
                <f:selectItems value="#{empty data.values ? property.values : data.values}" var="item"
                               itemLabel="#{property.getItemLabel(item)}"/>
            </e:selectOneRadio>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('select_one_radio_readonly')}">
        <pe:dynaFormControl type="select_one_radio_readonly">
            <e:selectOneRadio id="selectOneRadioDisabled" disabled="true" label="#{property.label}"
                              value="#{property.getItemLabel(property.value)}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}" />
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('select_many_checkbox')}">
        <pe:dynaFormControl type="select_many_checkbox">
            <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.SelectManyMenuProperty"-->
            <e:selectManyCheckbox id="selectManyCheckbox" required="#{property.required and not formDataFacesValidatorDisabled}" label="#{property.label}" columns="#{property.columns}" layout="#{property.layout}" 
                converter="#{property.converter}" value="#{property.value}" hints="#{data.facesMessages}" tooltip="#{property.tooltip}">
                <f:selectItems value="#{empty data.values ? property.values : data.values}" var="item" itemLabel="#{property.getItemLabel(item)}"/>
            </e:selectManyCheckbox>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('select_many_checkbox_readonly')}">
        <pe:dynaFormControl type="select_many_checkbox_readonly">
            <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.SelectManyMenuProperty"-->
            <e:selectManyCheckbox id="selectManyCheckboxDisabled" required="#{property.required and not formDataFacesValidatorDisabled}" label="#{property.label}" columns="#{property.columns}" layout="#{property.layout}"
                converter="#{property.converter}" value="#{property.value}" disabled="true" hints="#{data.facesMessages}" tooltip="#{property.tooltip}">
                <f:selectItems value="#{empty data.values ? property.values : data.values}" var="item" itemLabel="#{property.getItemLabel(item)}"/>
            </e:selectManyCheckbox>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('select_many_checkbox_menu')}">
            <pe:dynaFormControl type="select_many_checkbox_menu">
                <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.SelectManyMenuProperty"-->
                <e:selectManyCheckboxMenu id="selectManyCheckboxMenu" required="#{property.required and not formDataFacesValidatorDisabled}" label="#{property.label}" converter="#{property.converter}" value="#{property.value}"
                    hints="#{data.facesMessages}" tooltip="#{property.tooltip}" multiple="#{property.showSeparateItems}" showFilter="#{property.showFilter}" filterMatchMode="#{property.filterMatchMode}"
                    filterFunction="#{property.filterFunction}">
                    <f:selectItems value="#{empty data.values ? property.values : data.values}" var="item" itemLabel="#{property.getItemLabel(item)}" />
                </e:selectManyCheckboxMenu>
            </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('select_many_checkbox_menu_readonly')}">
            <pe:dynaFormControl type="select_many_checkbox_menu_readonly">
                <!--@elvariable id="property" type="de.ivu.elect.jee.presentation.dynamicform.SelectManyMenuProperty"-->
                <ui:decorate template="/WEB-INF/templates/edit.xhtml">
                    <ui:param name="id" value="selectManyCheckboxMenuDisabled" />
                    <ui:param name="label" value="#{property.label}" />

                    <ui:param name="hints" value="#{data.facesMessages}" />
                    <ui:param name="tooltip" value="#{property.tooltip}" />

                    <ui:define name="inputComponent">
                        <ui:fragment id="#{id}">
                            <ui:fragment rendered="#{not empty property.value}">
                                <ul class="ui-outputlist">
                                    <ui:repeat value="#{property.value}" var="item">
                                        <li><h:outputText value="#{property.getItemLabel(item)}" /></li>
                                    </ui:repeat>
                                </ul>
                            </ui:fragment>
                        </ui:fragment>
                    </ui:define>
                </ui:decorate>
            </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('separator')}">
            <pe:dynaFormControl type="separator">
                <e:outputFormSeparator value="#{property.label}" hints="#{data.facesMessages}" styleClass="#{data.styleClass}" />
            </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('separator_readonly')}">
            <pe:dynaFormControl type="separator_readonly">
                <e:outputFormSeparator value="#{property.label}" hints="#{data.facesMessages}" styleClass="#{data.styleClass}" />
            </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('platzhalter')}">
        <pe:dynaFormControl type="platzhalter">
            <ui:insert name="between"/>
        </pe:dynaFormControl>
        </c:if>

        <c:if test="#{ckEditorSupported.ckEditorSupported}">
        <c:if test="#{model.isTypePresent('ckeditor')}">
            <pe:dynaFormControl type="ckeditor">
                <e:ckEditor id="ckeditor" required="#{property.required and not formDataFacesValidatorDisabled}" label="#{property.label}" value="#{property.value}"
                            readonly="#{property.readonly}" width="#{property.width}" toolbar="#{property.toolbar}"
                            placeholderItems="#{property.placeholderItems}" />
            </pe:dynaFormControl>
        </c:if>

        <c:if test="#{model.isTypePresent('ckeditor_readonly')}">
            <pe:dynaFormControl type="ckeditor_readonly">
                <e:ckEditor id="ckeditor" required="false" label="#{property.label}" value="#{property.value}"
                            readonly="true" width="#{property.width}" toolbar="#{property.toolbar}"
                            placeholderItems="#{property.placeholderItems}" />
            </pe:dynaFormControl>
        </c:if>
        </c:if>
    </e:dyna>
</ui:composition>
