<!--

    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

-->

<!-- common/configuration/configuration.jsf -->
<!initPage
    setResourceBundle(key="i18nc" bundle="org.glassfish.common.admingui.Strings")
    setResourceBundle(key="help_common" bundle="org.glassfish.common.admingui.Helplinks");
/>
<!composition template="/templates/default.layout"  guiTitle="$resource{i18n.configuration.pageTitle}"
    guiOnLoad="admingui.nav.selectTreeNodeWithURL('#{request.contextPath}/common/configuration/configuration.jsf?configName=#{pageSession.encodedConfigName}');" >
<!define name="content">
    <event>
        <!beforeCreate
            getRequestValue(key="configName" value="#{pageSession.configName}");
            urlencode(value="#{pageSession.configName}" encoding="UTF-8" result="#{pageSession.encodedConfigName}");
        />
    </event>
    <sun:form id="configForm">
        <sun:title
            id="configPageTitle"
            title="$resource{i18n.configuration.pageTitle}"
            helpText="$resource{i18n.configuration.pageTitleHelp}"
        />
        <sun:propertySheet id="propSheet">
            <!afterCreate
                    getClientId(component="$this{component}" clientId=>$attribute{sheetId});
                />
#include "/common/shared/configNameSection.inc"
            <sun:propertySheetSection id="propSheetSection">
                </sun:propertySheetSection>
        </sun:propertySheet>
        <event>
            <!afterCreate
                getUIComponent(clientId="#{sheetId}"  component=>$attribute{component})
                includeIntegrations(type="org.glassfish.admingui:configuration" root="#{component}");
            />
        </event>
        <sun:hidden id="helpKey" value="$resource{help_common.configuration}" />
        "<br /><br />
    </sun:form>
</define>
</composition>


