<!--

    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

-->

<!-- deploymentWeb.jsf -->
<!-- This is the plugin property sheet for deploying web apps.
     id of the property sheet has to be the same as the plugin options for the Type dropdown in the deployment page.
 -->

<sun:propertySheet id="war" visible="#{false}" >
    <!beforeCreate
        createMap(result="#{pageSession.war}")
        mapPut(map="#{pageSession.deployMap}", key="war", value="#{pageSession.war}");
        mapPut(map="#{pageSession.war}", key="convertToFalseList", value={"enabled", "precompilejsp", "availabilityEnabled","PROPERTY-implicitCdiEnabled", "verify" ,"force", "keepState",  "PROPERTY-preserveAppScopedResources" } );
        mapPut(map="#{pageSession.war}", key="PROPERTY-implicitCdiEnabled", value="true");

     />
    <!afterCreate
        getClientId(component="$this{component}" clientId=>$page{warId});
    />
    <sun:propertySheetSection id="psection" >

        <sun:property id="cxp" labelAlign="left" noWrap="#{true}" overlapLabel="#{false}" label="$resource{i18n.webApp.ContextRoot}" helpText="$resource{i18n.webApp.contextRootHelp}" >
            <sun:textField id="ctx" columns="$int{40}" maxLength="#{sessionScope.fieldLengths['maxLength.webApp.ContextRoot']}" text="#{pageSession.war['contextroot']}" >
                <!afterCreate
                    getClientId(component="$this{component}" clientId=>$page{contextRootId});
                />
            </sun:textField>
        </sun:property>

#include "/web/apps/deploymentWarFields.jsf"

    </sun:propertySheetSection>
</sun:propertySheet>    
