package org.japanosample;

import javax.servlet.jsp.JspException;
import org.japano.Buffer;
import org.japano.PageNode;
import org.japano.metadata.annotation.*;

/**
 A tag which repeats its body a given number of times.

 @author  Sven Helmberger ( sven dot helmberger at gmx dot de )
 @version $Id: Repeat.java,v 1.3 2005/02/25 01:27:14 fforw Exp $

 @author  Sven Helmberger ( sven dot helmberger at gmx dot de )
 @version $Id: Repeat.java,v 1.3 2005/02/25 01:27:14 fforw Exp $
 */
 ( library="/sample" )
public class Repeat extends PageNode
{
  /** number of times to repeat the body */
  private int times;
  /** current number */
  private int current;
  
  /**
   Number of repetitions.
   */  
   ( required=true )
  public void setTimes(int times)
  {
    this.times=times;
  }
  
  /**
   Main entry method for all page nodes.
   Generates this tag and all its childs into the
   given Buffer
   @param out Buffer
   */
  public void generate(Buffer out)
  {
    // iterate over all numbers from 0 to <repeat>
    for (current=0; current < times; current++)
    {
      // for every iteration, generate all children of this tag
      generateChildren(out);
    }
  }
  
  /**
   The current number 
   */
  
  public int getCurrentNumber()
  {
    return current;
  }
}