<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
         "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

  <tlib-version>1.0</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>controls</short-name>
  <description>
    JSP tag library containing custom GUI controls used in the
    Tomcat Administrative Application.
  </description>

  <!-- ========== Instant Table Tag ===================================== -->

  <tag>

    <name>table</name>
    <tag-class>org.apache.webapp.admin.TableTag</tag-class>
    <body-content>JSP</body-content>
    <description>
      Render a "table" object, which is rendered as an HTML
      "table" element. 
      
      NOTE:  The only valid nested content for this tag is
      "row" tags from this library.  Anything else will cause
      the rendered HTML to be invalid.

      NOTE:  To be usable, this tag must be nested inside an
      HTML &lt;form&gt; element.
    </description>

    <attribute>
      <name>columns</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        (Integer) number of columns that the table contains.  If
        not specified, only two columns will be visible.
      </description>
    </attribute>

    <attribute>
      <name>tableStyle</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        The CSS style class to be applied to the entire rendered output
        of the instant table.  If not specified, no overall
        style class is applied.
      </description>
    </attribute>
 
    <attribute>
      <name>lineStyle</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        The CSS style for the lines between rows.
      </description>
    </attribute>

  </tag>

    <tag>

    <name>row</name>
    <tag-class>org.apache.webapp.admin.RowTag</tag-class>
    <body-content>JSP</body-content>
    <description>
      Define a single "instant table row" option for the surrounding "table"
      tag.  It is not valid to use this tag *except* when nested inside an
      "table" tag.

      NOTE: This tag can nest only "label" and "data" tags.
    </description>

    <attribute>
      <name>header</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        (Boolean) variable set to "true" or "yes" if this row is
        the header row.
        </description>
    </attribute>
    
     <attribute>
      <name>labelStyle</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        The style for the label table data element.
      </description>
    </attribute>
    
     <attribute>
      <name>dataStyle</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        The style for the value of the table data element.
      </description>
    </attribute>    
    
     <attribute>
      <name>styleId</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        The styleId for the label table data element.
      </description>
    </attribute>
        
  </tag>

 <tag>

    <name>label</name>
    <tag-class>org.apache.webapp.admin.LabelTag</tag-class>
    <body-content>JSP</body-content>
    <description>
      Render a "label" object, which is rendered as a label in the row of
      an HTML "table" element. 

      NOTE:  To be usable, this tag must be nested inside a "row" tag.
    </description>
  </tag>

 <tag>

    <name>data</name>
    <tag-class>org.apache.webapp.admin.DataTag</tag-class>
    <body-content>JSP</body-content>
    <description>
      Render a "data" object, which is rendered as a label in the row of
      an HTML "table" element. 

      NOTE:  To be usable, this tag must be nested inside a "row" tag.
    </description>
  </tag>

  <!-- ========== Instant Actions Tag ===================================== -->

   <tag>

    <name>actions</name>
    <tag-class>org.apache.webapp.admin.ActionsTag</tag-class>
    <body-content>JSP</body-content>
    <description>
      Render an "instant actions" object, which is rendered as an HTML
      "select" element, where the selection of a particular element from
      the list immediately causes a JavaScript function to be executed
      (with the available elements specified by "action" tag instances
      nested within the body of the "actions" tag).

      NOTE:  The only valid nested content for this tag is
      "action" tags from this library.  Anything else will cause
      the rendered HTML to be invalid.

      NOTE:  To be usable, this tag must be nested inside an
      HTML &lt;form&gt; element.
    </description>

    <attribute>
      <name>size</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        (Integer) number of rows that will be visible to the user.  If
        not specified, only one row will be visible.
      </description>
    </attribute>

    <attribute>
      <name>style</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        The CSS style class to be applied to the entire rendered output
        of the instant actions control.  If not specified, no overall
        style class is applied.
      </description>
    </attribute>

    <attribute>
      <name>label</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        HTML Label tag generation.
      </description>
    </attribute>
    
  </tag>

  <tag>

    <name>action</name>
    <tag-class>org.apache.webapp.admin.ActionTag</tag-class>
    <body-content>JSP</body-content>
    <description>
      Define a single "instant action" option for the surrounding "actions"
      tag.  It is not valid to use this tag *except* when nested inside an
      "actions" tag.

      NOTE:  The body content of this tag (which should be suitably
      localized, if required by your application) is used as the
      user-visible label for this action.
    </description>

    <attribute>
      <name>selected</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        (Boolean) variable set to "true" or "yes" if this action should
        already be selected when the "instant actions" element is
        initially displayed.
      </description>
    </attribute>

    <attribute>
      <name>disabled</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        (Boolean) variable set to "true" or "yes" if the selection
        for this action should be disabled.        
      </description>
    </attribute>

    <attribute>
      <name>url</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        The URL to which the current frame or window will be transferred
        if the "onchange" event handler of this "instant actions" element
        is triggered, and this is the currently selected action.  If no
        URL is specified, no action will be taken (useful for "(None)"
        options and dividers).

        If this URL starts with a slash, it will be assumed to be
        context-relative, and will be prefixed with the context path
        of this request.  Otherwise, it will be used unmodified.

        NOTE:  This URL will be passed through URL rewriting so that it
        will maintain session identity even in environments were cookies
        are not being used.
      </description>
    </attribute>

  </tag>


  <!-- ========== Tree Control Tag ======================================== -->

  <tag>

    <name>tree</name>
    <tag-class>org.apache.webapp.admin.TreeControlTag</tag-class>
    <body-content>empty</body-content>
    <description>
      Render a "tree" control, based on the current state of a data object
      of type org.apache.webapp.admin.TreeControl, which is identified
      by the name specified in the "tree" attribute, in the JSP scope
      specified by the "scope" attribute.
    </description>

    <attribute>
      <name>action</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        Hyperlink to which expand/contract actions should be sent,
        with a string "${node}" marking where the node name of the
        affected node should be included (which will usually be as
        the value of a request parameter).
      </description>
    </attribute>

    <attribute>
      <name>images</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        Name of a directory containing the images for our icons,
        relative to the page including this tag.  If not specified,
        defaults to "images".
      </description>
    </attribute>

    <attribute>
      <name>scope</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        The JSP scope within which the "tree" attribute is to be found
        (page, request, session, or application).  If not specified, the
        "tree" attribute will be searched for in any scope.
      </description>
    </attribute>

    <attribute>
      <name>style</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        The CSS style class to be applied to the entire rendered output
        of the tree control.  If not specified, no overall style class
        is applied.
      </description>
    </attribute>

    <attribute>
      <name>styleSelected</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        The CSS style class to be applied to the text of any node that
        is currently selected.  If not specified, no style class will be
        applied to the text of the selected node.
      </description>
    </attribute>

    <attribute>
      <name>styleUnselected</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        The CSS style class to be applied to the text of any node that
        is *not* currently selected.  If not specified, no style class will
         be applied to the text of non-selected nodes.
      </description>
    </attribute>

    <attribute>
      <name>tree</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        Name of the attribute (in the scope specified by the "scope"
        attribute, if any) under which an object of type
        org.apache.webapp.admin.TreeControl is stored.  This object
        represents the entire current state of the tree, including
        a representation of the hierarchical representation of the
        nodes, plus the current expanded/ or contracted state of
        non-leaf nodes.
      </description>
    </attribute>

  </tag>

  <!-- ========== JMX Attribute Display Tag =============================== -->

  <tag>

    <name>attribute</name>
    <tag-class>org.apache.webapp.admin.AttributeTag</tag-class>
    <body-content>empty</body-content>
    <description>
      Look up an attribute on a JMX MBean, specified by an object name
      specified by the "name" (and optional "property" and "scope")
      attributes, and render it to the current JSP writer.  The object name
      identified by these attributes can be either a java.lang.String version
      of the name, or a javax.management.ObjectName instance.
    </description>

    <attribute>
      <name>attribute</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        Name of the attribute of the JMX MBean whose value is to be
        retrieved and written to the current JSP writer.
      </description>
    </attribute>

    <attribute>
      <name>name</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        Name of a bean, optionally in some scope identified by the "scope"
        attribute.  If the "property" attribute is not specified, this bean
        must by a String or an ObjectName.  Otherwise, this bean must have
        a property getter for the property named by "property", which will
        return the String or ObjectName.
      </description>
    </attribute>

    <attribute>
      <name>property</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        Name of a bean property, on the bean identified by the "name"
        (and optional "scope") attributes, that is either a String or an
        ObjectName of the JMX MBean whose attribute is to be retrieved.
      </description>
    </attribute>

    <attribute>
      <name>scope</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
      <description>
        Name of the scope ("page", "request", "session", or "application")
        in which the bean identified by the "name" attribute is to be found.
        If not specified, all scopes will be searched in ascending order.
      </description>
    </attribute>

  </tag>

</taglib>
