<?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}"
                        redisplay="#{property.redisplay}" 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}"/>

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

                    <!-- 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>
