<!--

    Copyright (c) 2011, 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="common" bundle="org.glassfish.common.admingui.Strings")
    setResourceBundle(key="i18n" bundle="org.glassfish.admingui.core.Strings")
    setResourceBundle(key="help_web" bundle="org.glassfish.common.admingui.Helplinks")
    />

<!composition template="/templates/default.layout"  guiTitle="$resource{common.monitoring.Title}" >
<!define name="content">
<sun:form id="propertyForm">
#include "/common/shared/alertMsg_1.inc"
    <sun:title id="propertyContentPage" title="$resource{i18n.commonTasks.group.Monitoring}"
               helpText="$resource{common.monitoringInfo.pageHelp}" />
    "<br />
#include "/common/shared/monitorHandlers.inc"
    <sun:table id="monitorInstancesTable" title="$resource{i18n.commonTasks.group.Monitoring}">
        <sun:tableRowGroup id="rowGroup1" data={"$pageSession{listOfRows}"} sourceVar="td">
            <!beforeCreate
                gfr.getMonitoringTable();
            />
            <sun:tableColumn headerText="$resource{i18n.instanceValues.colInstanceName}" sort="instanceName" rowHeader="$boolean{true}" id="col0">
                <sun:hyperlink id="instanceName" text="#{td.value.instanceName}" url="#{td.value.instanceLink}" />
            </sun:tableColumn>
            <sun:tableColumn headerText="$resource{i18n.instanceValues.colClusterName}" sort="clusterName" rowHeader="$boolean{true}" id="col1">
                <sun:hyperlink id="clusterName" text="#{td.value.clusterName}" rendered="#{td.value.isCluster}" url="#{td.value.clusterLink}" />
                <sun:staticText id="noValue" text="$resource{i18n.common.NA}" rendered="#{!td.value.isCluster}" />
            </sun:tableColumn>
            <sun:tableColumn headerText="$resource{i18n.common.Action}" rowHeader="$boolean{true}" id="col2">
                <sun:hyperlink id="actionLink" text="$resource{i18n.common.configMonitor}" url="#{td.value.actionLink}" />
            </sun:tableColumn>
            <sun:tableColumn headerText="$resource{i18n.commonTasks.task.monitor}" rowHeader="$boolean{true}" id="col3">
                <sun:hyperlink url="#{td.value.appMonitor}" text="$resource{i18n.common.Application}" />
                <sun:staticText text=",   " />
                <sun:hyperlink url="#{td.value.serverMonitor}" text="$resource{i18n.common.Server}" />
                <sun:staticText text=",   " />
                <sun:hyperlink url="#{td.value.resMonitor}" text="$resource{i18n.common.Resources}" />
            </sun:tableColumn>
        </sun:tableRowGroup>

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