//[skeleton1.
package visual.statik.described;

import java.awt.*;
import java.util.Iterator;

import visual.statik.AbstractAggregateContent;


/**
 * Static described visual content that is a composition
 * of many component parts
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0
 */
public class      CompositeContent 
       extends    AbstractAggregateContent<TransformableContent>
       implements TransformableContent
{
    /**
     * Default Constructor
     */
    public CompositeContent()
    {
       super();       
    }

//]skeleton1.
//[interface.

    /**
     * Set the Color to use for stroking
     *
     * @param color The Color to use (or null to prevent stroking)
     */
    public void setColor(Color color)
    {
       Iterator<TransformableContent>  i;
       
       i = iterator();
       while (i.hasNext())
       {
          i.next().setColor(color);          
       }
    }

    /**
     * Set the Paint to use for filling
     *
     * @param paint  The Paint to use (or null to prevent filling)
     */
    public void setPaint(Paint paint)
    {
       Iterator<TransformableContent>  i;
       
       i = iterator();
       while (i.hasNext())
       {
          i.next().setPaint(paint);          
       }
    }

    /**
     * Set the Stroke to use
     *
     * @param stroke  The Stroke to use (or null to use the default)
     */
    public void setStroke(Stroke stroke)
    {
       Iterator<TransformableContent>  i;
       
       i = iterator();
       while (i.hasNext())
       {
          i.next().setStroke(stroke);          
       }
    }
//]interface.
//[skeleton2.
   
}
//]skeleton2.
