/*
 * @(#)SetHtmlAttributeTag.java
 *
 * Copyright 2001-2002 by Oracle Corporation,
 * 500 Oracle Parkway, Redwood Shores, California, 94065, U.S.A.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information
 * of Oracle Corporation.
 */

package oracle.jbo.html.jsp.datatags;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;
import oracle.jbo.JboException;

public class SetHtmlAttributeTag extends TagSupport
{
   protected String sName;
   protected String sValue;

   public SetHtmlAttributeTag()
   {
      reset();
   }

   public void setName(String sValue)
   {
      this.sName = sValue;
   }

   public void setValue(String sValue)
   {
      this.sValue = sValue;
   }

   /**
     * Process the start tag for this instance.
     *
     * The doStartTag() method assumes that all setter methods have been
     * invoked before.
     *
     * When this method is invoked, the body has not yet been invoked.
     *
     * @returns EVAL_BODY_INCLUDE if the tag wants to process body, SKIP_BODY if it
     * does ont want to process it.
     */
   public int doStartTag() throws JspException
   {
      InputTagBase tag = (InputTagBase) findAncestorWithClass(this, InputTagBase.class);
      if (tag == null)
      {
         throw new JboException(Res.getString(Res.SETHTMLATTRIBUTE_ONLY_IN_INPUTTAGBASE));
      }

      tag.addHtmlAttribute(sName, sValue);
      
      return Tag.SKIP_BODY;
   }

   // Use by the constructor and the release method to reset the member variable values
   private void reset()
   {
      sName = null;
      sValue = null;
   }
   
   /**
     * release() called after doEndTag() to reset state
     */
   public void release()
   {
      reset();
      super.release();
   }

}
