<!--

    Copyright (c) 2009, 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

-->

<!-- deploymentWarFields.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.war['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.war['virtualservers']}" >
        <!beforeCreate
            getVsForDeployment(result="#{pageSession.vsList}");
            getListBoxOptions(
                availableList="#{pageSession.vsList}",
                selectedCommaString="",
                availableListResult="#{pageSession.availableVS}",
                selectedOptions="#{pageSession.war['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.war['enabled']}" selectedValue="true" >
        <!beforeCreate
            mapPut(map="#{pageSession.war}", 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.war['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.war['availabilityEnabled']}" 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.war['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.war['verify']}" selectedValue="true" />
</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.war['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.war['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.war['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.war['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.war['description']}" />
</sun:property>
