<!--

    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

-->

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

<sun:property id="osgi" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.deploy.osgiType}" helpText="$resource{i18n.deploy.osgiTypeHelp}">
        <sun:checkbox id="osgi"  label=" " selected="#{pageSession.other['type']}" selectedValue="osgi" />
</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.other['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.other['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.other['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.other['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.other['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.other['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.other['description']}" />
</sun:property>
