package ngp.shapes;


import java.awt.*;
import java.awt.geom.*;
import ngp.Animatable;
import ngp.Canvas;


/**
 * Simple shape that knows its position and velocity.
 */
public class Group extends AbstractShape
{
    private java.util.List myShapes;


    public Group ()
    {
        this(new Point2D.Double(0, 0));
    }

    public Group (Point2D center)
    {
        super(center, new Dimension(1, 1), Color.BLACK, 
              new Rectangle2D.Double());
        myShapes = new java.util.ArrayList();
    }


    public void add (AbstractShape shape)
    {
        myShapes.add(shape);
        shape.addToGroup(this);
    }

    public void remove (AbstractShape shape)
    {
        myShapes.add(shape);
        shape.removeFromGroup(this);
    }


    public void update (Canvas canvas)
    {
        super.update(canvas);
        java.util.Iterator iter = myShapes.iterator();
        while (iter.hasNext())
        {
            ((Animatable)iter.next()).update(canvas);
        }
    }

    public void paint (java.awt.Graphics2D pen)
    {
        java.util.Iterator iter = myShapes.iterator();
        while (iter.hasNext())
        {
            ((Animatable)iter.next()).render(pen);
        }
    }
}
