<!--

    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!-- uploadCommonFields.jsf -->

<sun:property id="nameProp" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.ApplicationName}" visible="#{true}">
    <sun:textField id="appName" columns="$int{40}" maxLength="#{sessionScope.fieldLengths['maxLength.deploy.ApplicationName']}" text="#{pageSession.ear['name']}" styleClass="required" required="#{true}"
        onChange="javascript: admingui.deploy.setAppName('#{appNameId}', this.value, window, '#{sessionScope.appTypeString}')">
        <!afterCreate
            getClientId(component="$this{component}" clientId=>$page{appNameId});
        />
    </sun:textField>
</sun:property>

<sun:property id="vsProp"  rendered="#{pageSession.onlyDASExist}" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.virtualServerLabel}" helpText="$resource{i18n.deploy.vsHelp}">
    <sun:listbox id="vs" immediate="#{true}" multiple="#{true}"  rows="$int{4}"
        labels="$pageSession{availableVS}"
        selected="#{pageSession.ear['virtualservers']}" >
        <!beforeCreate
            getVsForDeployment(result="#{pageSession.vsList}");
            getListBoxOptions(
                availableList="#{pageSession.vsList}",
                selectedCommaString="",
                availableListResult="#{pageSession.availableVS}",
                selectedOptions="#{pageSession.ear['virtualservers']}"
                addEmptyFirstChoice="true");
        />
    </sun:listbox>
</sun:property>

<sun:property id="enableProp" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.status}"  helpText="$resource{i18n.deploy.statusHelp}">
	<sun:checkbox  selected="#{pageSession.ear['enabled']}" selectedValue="true" >
        <!beforeCreate
            mapPut(map="#{pageSession.ear}", key="enabled", value="true" );
        />
    </sun:checkbox>
</sun:property>

<sun:property id="implicitCdi" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.implicitCdi}" helpText="$resource{i18n.deploy.implicitCdiHelp}">
    <sun:checkbox id="implicitCdi"  selected="#{pageSession.ear['PROPERTY-implicitCdiEnabled']}" selectedValue="true" />
</sun:property>

<sun:property id="availability"  rendered="#{!pageSession.onlyDASExist}"  labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.availability}" helpText="$resource{i18n.deploy.availabilityHelp}">
    <sun:checkbox id="availability"  selected="#{pageSession.ear['availabilityEnabled']}" selectedValue="true" />
</sun:property>

<sun:property id="jw" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.JavaWebStart}" helpText="$resource{i18n.deploy.JavaWebStartHelp}">
	<sun:checkbox id="jwc"  selected="#{pageSession.ear['PROPERTY-$constant{org.glassfish.admingui.common.deployment.DFDeploymentProperties.DEPLOY_OPTION_JAVA_WEB_START_ENABLED}']}" selectedValue="true" />
</sun:property>

<sun:property id="precmplProp" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.precompile}" helpText="$resource{i18n.deploy.PrecompileHelp}">
	<sun:checkbox id="precompileJSP" label=" " selected="#{pageSession.ear['precompilejsp']}" selectedValue="true" />
</sun:property>

<sun:property id="v2" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.run}" helpText="$resource{i18n.deploy.runHelp}">
        <sun:checkbox id="ver2" label=" " selected="#{pageSession.ear['verify']}" selectedValue="true" />
</sun:property>

<sun:property id="compatibility" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.compatibility}" helpText="$resource{i18n.deploy.compatibilityHelp}">
        <sun:checkbox id="compatibility" label=" " selected="#{pageSession.ear['PROPERTY-compatibility']}" selectedValue="v2" />
</sun:property>

<sun:property id="force" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.forceRedeploy}" helpText="$resource{i18n.deploy.forceRedeployHelp}">
        <sun:checkbox id="force"  label=" " selected="#{pageSession.ear['force']}" selectedValue="true" />
</sun:property>

<sun:property id="keepState" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.redeploy.keepState}" helpText="$resource{i18n.redeploy.keepStateHelp}">
        <sun:checkbox id="keepState"  label=" " selected="#{pageSession.ear['keepState']}" selectedValue="true" />
</sun:property>

<sun:property id="deploymentOrder" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.deploymentOrder}" helpText="$resource{i18n.deploy.deploymentOrderHelp}" >
	<sun:textField id="deploymentOrder" styleClass="integer" columns="$int{40}" maxLength="#{sessionScope.fieldLengths['maxLength.deploy.deploymentOrder']}" text="#{pageSession.ear['deploymentOrder']}" />
</sun:property>

<sun:property id="librariesProp" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.common.Libraries}" helpText="$resource{i18n.deploy.libraryHelp}" >
	<sun:textField id="library" columns="$int{40}" maxLength="#{sessionScope.fieldLengths['maxLength.common.Libraries']}" text="#{pageSession.ear['libraries']}" />
</sun:property>

<sun:property id="descriptionProp" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.common.description}" helpText="$resource{i18n.deploy.descHelp}" >
	<sun:textField id="description" columns="$int{40}" maxLength="#{sessionScope.fieldLengths['maxLength.common.description']}" text="#{pageSession.ear['description']}" />
</sun:property>
