<!--

    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

-->

<!initPage
    setResourceBundle(key="i18n_web" bundle="org.glassfish.web.admingui.Strings");
    setResourceBundle(key="help_web" bundle="org.glassfish.web.admingui.Helplinks");
/>
<!composition template="/templates/default.layout"  guiTitle="$resource{i18n_web.grizzly.networkConfigPageTitle}" >
<!define name="content">
    <event>
    <!beforeCreate
        getRequestValue(key="configName" value=>$page{configName});
     />
     </event>

            <sun:form id="propertyForm">
#include "/common/shared/alertMsg.inc"
                 <sun:title id="propertyContentPage" title="$resource{i18n_web.grizzly.networkConfigPageTitle}"
                 helpText="$resource{i18n_web.grizzly.networkConfigPageTitleHelp}" />
    <sun:propertySheet id="propertySheet">
#include "/common/shared/configNameSection.inc"
    <sun:propertySheetSection>
<sun:property>
    <sun:hyperlink 
        toolTip="$resource{i18n_web.tree.grizzly.networkListeners.tooltip}"
        url="/web/grizzly/networkListeners.jsf?configName=#{configName}"
        >
        <sun:image url="/resource/web/images/http.gif" />
        <sun:staticText text="$resource{i18n_web.tree.grizzly.networkListeners}" />
    </sun:hyperlink>
</sun:property>

<sun:property>
    <sun:hyperlink
        toolTip="$resource{i18n_web.tree.grizzly.protocols.tooltip}"
        url="/web/grizzly/protocols.jsf?configName=#{configName}"
        >
        <sun:image url="/resource/web/images/http.gif" />
        <sun:staticText text="$resource{i18n_web.tree.grizzly.protocols}" />
    </sun:hyperlink>
</sun:property>

<sun:property>
    <sun:hyperlink
        toolTip="$resource{i18n_web.tree.grizzly.transports.tooltip}"
        url="/web/grizzly/transports.jsf?configName=#{configName}"
        >
        <sun:image url="/resource/web/images/http.gif" />
        <sun:staticText text="$resource{i18n_web.tree.grizzly.transports}" />
    </sun:hyperlink>
</sun:property>

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

<sun:hidden id="helpKey" value="$resource{help_web.networkConfig}" />
            </sun:form>
</define>
</composition>

