craigmcc    01/12/18 17:58:10

  Modified:    webapps/admin/WEB-INF controls.tld
  Added:       webapps/admin/WEB-INF/classes/org/apache/webapp/admin
                        ActionTag.java ActionsTag.java
  Log:
  Add a simple "instant actions" tag that can be used for the "Available
  Actions" control that is common to most of the property sheet pages in the
  Admin App prototype.
  
  Typical usage would look something like:
  
    <form style="instant-actions-style">
      Select one of the following:
      <controls:actions>
        <controls:action>---Available Actions---</controls:action>
        <controls:action>-----------------------</controls:action>
        <controls:action url="first.jsp">First Choice</controls:action>
        <controls:action url="second.jsp">Second Choice</controls:action>
      </controls:actions>
    </form>
  
  Revision  Changes    Path
  1.2       +171 -79   jakarta-tomcat-4.0/webapps/admin/WEB-INF/controls.tld
  
  Index: controls.tld
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/controls.tld,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- controls.tld      2001/12/18 04:17:32     1.1
  +++ controls.tld      2001/12/19 01:58:10     1.2
  @@ -13,6 +13,98 @@
       Tomcat Administrative Application.
     </description>
   
  +  <!-- ========== 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>
  +
  +  </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>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).
  +
  +        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>
  @@ -28,85 +120,85 @@
       </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>
  +      <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>
  
  
  
  1.1                  
jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ActionTag.java
  
  Index: ActionTag.java
  ===================================================================
  /*
   * $Header: 
/home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ActionTag.java,v
 1.1 2001/12/19 01:58:10 craigmcc Exp $
   * $Revision: 1.1 $
   * $Date: 2001/12/19 01:58:10 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   */
  
  
  package org.apache.webapp.admin;
  
  
  import java.io.IOException;
  import java.net.URLEncoder;
  import java.util.ArrayList;
  import javax.servlet.http.HttpServletResponse;
  import javax.servlet.jsp.JspException;
  import javax.servlet.jsp.JspWriter;
  import javax.servlet.jsp.PageContext;
  import javax.servlet.jsp.tagext.BodyTagSupport;
  import javax.servlet.jsp.tagext.Tag;
  
  
  /**
   * <p>Nested tag that represents an individual "instant action".  This tag
   * is valid <strong>only</strong> when nested within an ActoinsTag tag.
   * This tag has the following user-settable attributes:</p>
   * <ul>
   * <li><strong>selected</strong> - Set to <code>true</code> if this action
   *     should be selected when the control is initially displayed.</li>
   * <li><strong>url</strong> - URL to which control should be transferred
   *     (in the current frame or window) if this action is selected.</li>
   * </ul>
   *
   * <p>In addition, the body content of this tag is used as the user-visible
   * label for the action, so that it may be conveniently localized.</p>
   *
   * <strong>FIXME</strong> - Internationalize the exception messages!
   *
   * @author Craig R. McClanahan
   * @version $Revision: 1.1 $ $Date: 2001/12/19 01:58:10 $
   */
  
  public class ActionTag extends BodyTagSupport {
  
  
      // ----------------------------------------------------- Instance Variables
  
  
      /**
       * The label that will be rendered for this action.
       */
      protected String label = null;
  
  
      // ------------------------------------------------------------- Properties
  
  
      /**
       * Should this action be selected when the control is initially displayed?
       */
      protected boolean selected = false;
  
      public boolean getSelected() {
          return (this.selected);
      }
  
      public void setSelected(boolean selected) {
          this.selected = selected;
      }
  
  
      /**
       * The URL to which control is transferred if this action is selected.
       */
      protected String url = null;
  
      public String getUrl() {
          return (this.url);
      }
  
      public void setUrl(String url) {
          this.url = url;
      }
  
  
      // --------------------------------------------------------- Public Methods
  
  
      /**
       * Process the start of this tag.
       *
       * @exception JspException if a JSP exception has occurred
       */
      public int doStartTag() throws JspException {
  
          // Initialize the holder for our label text
          this.label = null;
  
          // Do no further processing for now
          return (EVAL_BODY_TAG);
  
      }
  
  
      /**
       * Process the body text of this tag (if any).
       *
       * @exception JspException if a JSP exception has occurred
       */
      public int doAfterBody() throws JspException {
  
          String label = bodyContent.getString();
          if (label != null) {
              label = label.trim();
              if (label.length() > 0)
                  this.label = label;
          }
          return (SKIP_BODY);
  
      }
  
  
      /**
       * Record this action with our surrounding ActionsTag instance.
       *
       * @exception JspException if a processing error occurs
       */
      public int doEndTag() throws JspException {
  
          // Find our parent ActionsTag instance
          Tag parent = getParent();
          if ((parent == null) || !(parent instanceof ActionsTag))
              throw new JspException("Must be nested in an ActionsTag isntance");
          ActionsTag actions = (ActionsTag) parent;
  
          // Register the information for the action represented by
          // this action
          HttpServletResponse response =
              (HttpServletResponse) pageContext.getResponse();
          actions.addAction(label, selected,
                            response.encodeURL(url));
  
          return (EVAL_PAGE);
  
      }
  
  
      /**
       * Release all state information set by this tag.
       */
      public void release() {
  
          this.label = null;
          this.selected = false;
          this.url = null;
  
      }
  
  
  }
  
  
  
  1.1                  
jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ActionsTag.java
  
  Index: ActionsTag.java
  ===================================================================
  /*
   * $Header: 
/home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ActionsTag.java,v
 1.1 2001/12/19 01:58:10 craigmcc Exp $
   * $Revision: 1.1 $
   * $Date: 2001/12/19 01:58:10 $
   *
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2001 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   */
  
  
  package org.apache.webapp.admin;
  
  
  import java.io.IOException;
  import java.net.URLEncoder;
  import java.util.ArrayList;
  import javax.servlet.jsp.JspException;
  import javax.servlet.jsp.JspWriter;
  import javax.servlet.jsp.PageContext;
  import javax.servlet.jsp.tagext.BodyTagSupport;
  
  
  /**
   * <p>JSP custom tag that renders an "instant actions" control.  To the user,
   * it appears as an HTML &lt;select&gt; element (i.e. a combo box), with
   * the behavior of selecting a new page for the current frame or window when
   * a different option is selected, without requiring a submit action.
   * This tag has the following user-settable attributes:</p>
   * <ul>
   * <li><strong>size</strong> - (Integer) number of rows that will be visible
   *     to the user.  If not specified, one row will be visible.</li>
   * <li><strong>style</strong> - The CSS style class to be applied to the
   *     entire rendered output of the instant actions control, if any.</li>
   * </ul>
   *
   * <strong>FIXME</strong> - Internationalize the exception messages!
   *
   * @author Craig R. McClanahan
   * @version $Revision: 1.1 $ $Date: 2001/12/19 01:58:10 $
   */
  
  public class ActionsTag extends BodyTagSupport {
  
  
      // ----------------------------------------------------- Manifest Constants
  
  
      /**
       * Attribute name used to indicate that we have generated the JavaScript
       * function already on the current page.  The value stored for this
       * attribute is arbitrary - only its existence is relevant.
       */
      protected static final String FUNCTION_TAG =
          "org.apache.webapp.admin.ActionsTag.FUNCTION_TAG";
  
  
      // ----------------------------------------------------- Instance Variables
  
  
      /**
       * The set of labels for the Actions displayed by this control.
       */
      protected ArrayList labels = new ArrayList();
  
  
      /**
       * The set of "selected" flags for Actions displayed by this control.
       */
      protected ArrayList selecteds = new ArrayList();
  
  
      /**
       * The set of URLs for the Actions displayed by this control.
       */
      protected ArrayList urls = new ArrayList();
  
  
      // ------------------------------------------------------------- Properties
  
  
      /**
       * The number of elements that will be displayed to the user.
       */
      protected int size = 1;
  
      public int getSize() {
          return (this.size);
      }
  
      public void setSize(int size) {
          this.size = size;
      }
  
  
      /**
       * The CSS style class to be applied to the entire rendered output
       * of this "instant actions" object.
       */
      protected String style = null;
  
      public String getStyle() {
          return (this.style);
      }
  
      public void setStyle(String style) {
          this.style = style;
      }
  
  
      // --------------------------------------------------------- Public Methods
  
  
      /**
       * Render this instant actions control.
       *
       * @exception JspException if a processing error occurs
       */
      public int doEndTag() throws JspException {
  
          JspWriter out = pageContext.getOut();
  
          try {
  
              // Render (once only) the JavaScript function we need
              if (pageContext.getAttribute(FUNCTION_TAG) == null) {
                  out.println();
                  out.println("<script language=\"JavaScript\">");
                  out.println("<!--");
                  out.println("function IA_jumpMenu(targ,selObj) {");
                  out.println("  dest = selObj.options[selObj.selectedIndex].value;");
                  out.println("  if (dest.length > 0) {");
                  out.println("    eval(targ+\".location='\"+dest+\"'\");");
                  out.println("  }");
                  out.println("}");
                  out.println("//-->");
                  out.println("</script>");
                  out.println();
                  pageContext.setAttribute(FUNCTION_TAG, Boolean.TRUE);
              }
  
              // Render the beginning of this element
              out.println();
              out.print("<select");
              if (size > 1) {
                  out.print(" size=\"");
                  out.print(size);
                  out.print("\"");
              }
              if (style != null) {
                  out.print(" class=\"");
                  out.print(style);
                  out.print("\"");
              }
              out.print(" onchange=\"IA_jumpMenu('self',this)\"");
              out.println(">");
  
              // Render each defined action
              int n = labels.size();
              for (int i = 0; i < n; i++) {
                  String label = (String) labels.get(i);
                  boolean selected = ((Boolean) selecteds.get(i)).booleanValue();
                  String url = (String) urls.get(i);
                  out.print("<option");
                  if (selected)
                      out.print(" selected=\"selected\"");
                  out.print(" value=\"");
                  if (url != null)
                      out.print(url);
                  out.print("\"");
                  out.print(">");
                  if (label != null)
                      out.print(label);
                  out.println("</option>");
              }
  
              // Render the end of this element
              out.println("</select>");
              out.println();
  
          } catch (IOException e) {
              throw new JspException(e);
          }
  
          return (EVAL_PAGE);
  
      }
  
  
      /**
       * Release all state information set by this tag.
       */
      public void release() {
  
          this.labels.clear();
          this.selecteds.clear();
          this.urls.clear();
  
          this.size = 1;
          this.style = null;
  
      }
  
  
      // -------------------------------------------------------- Package Methods
  
  
      /**
       * Add a new Action to the set that will be rendered by this control.
       *
       * @param label Localized label visible to the user
       * @param selected Initial selected state of this option
       * @param url URL to which control should be transferred if selected
       */
      void addAction(String label, boolean selected, String url) {
  
          labels.add(label);
          selecteds.add(new Boolean(selected));
          urls.add(url);
  
      }
  
  
      // ------------------------------------------------------ Protected Methods
  
  
  }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to