<!--

    Copyright (c) 2013, 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="i18ncon" bundle="org.glassfish.concurrent.admingui.Strings")
        setResourceBundle(key="help_con" bundle="org.glassfish.concurrent.admingui.Helplinks")
/>

<!composition template="/templates/default.layout"  guiTitle="$resource{i18ncon.conResources.pageTitle}" >
<!define name="content">

            <sun:form id="resourcesForm"> 
                <sun:title 
                id="resourcesPageTitle" 
                title="$resource{i18ncon.conResources.pageTitle}" 
                helpText="$resource{i18ncon.conResources.pageTitleHelp}"
                />
                <sun:propertySheet>
                    <sun:propertySheetSection>
                        <sun:property>
                            <sun:hyperlink 
                                toolTip="$resource{i18ncon.tree.ContextServices.tooltip}"
                                url="/concurrent/contextServices.jsf" >
                                <sun:image url="/resource/jdbc/images/JDBC.gif" />
                                <sun:staticText text="$resource{i18ncon.tree.ContextServices}" />
                            </sun:hyperlink>
                        </sun:property>
                        
                        <sun:property>
                            <sun:hyperlink 
                                toolTip="$resource{i18ncon.tree.ManagedThreadFactories.tooltip}"
                                url="/concurrent/managedThreadFactories.jsf" >
                                <sun:image url="/resource/jdbc/images/JDBC.gif" />
                                <sun:staticText text="$resource{i18ncon.tree.ManagedThreadFactories}" />
                            </sun:hyperlink>
                        </sun:property>
                        
                        <sun:property>
                            <sun:hyperlink 
                                toolTip="$resource{i18ncon.tree.ManagedExecutorServices.tooltip}"
                                url="/concurrent/managedExecutorServices.jsf" >
                                <sun:image url="/resource/jdbc/images/JDBC.gif" />
                                <sun:staticText text="$resource{i18ncon.tree.ManagedExecutorServices}" />
                            </sun:hyperlink>
                        </sun:property>
                        
                        <sun:property>
                            <sun:hyperlink 
                                toolTip="$resource{i18ncon.tree.ManagedScheduledExecutorServices.tooltip}"
                                url="/concurrent/managedScheduledExecutorServices.jsf" >
                                <sun:image url="/resource/jdbc/images/JDBC.gif" />
                                <sun:staticText text="$resource{i18ncon.tree.ManagedScheduledExecutorServices}" />
                            </sun:hyperlink>
                        </sun:property>
                        
                    </sun:propertySheetSection>
                </sun:propertySheet>
                <sun:hidden id="helpKey" value="$resource{help_con.concurrentResources}" />
            </sun:form>           
</define>
</composition>

