import java.awt.event.*;

/**
 * A Song
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0
 */
public class Song implements MetronomeListener
{
    
    private Part[]           parts;
    private String           title;
    

    /**
     * Explicit Value Constructor
     *
     * @param numberOfParts  The number of Part objects in this Song
     */
    public Song(int numberOfParts)
    {
       parts = new Part[numberOfParts];       
    }
    

    /**
     * Set a Part
     *
     * @param i     The index
     * @param part  The Part
     */
    public void setPart(int i, Part part)
    {
       parts[i] = part;       
    }
    


    /**
     * Handle a "tick" of the Metronome (required by MetronomeListener)
     *
     * In this case, this method just delegates to the
     * component Part objects
     *
     * @param metronome  The source of the "tick"
     */
    public void handleTick(Metronome metronome)
    {
       for (int i=0; i<parts.length; i++)
       {
          if (parts[i] != null) parts[i].handleTick(metronome);          
       }
    }
    
}
