package howto;

import java.awt.*;
import java.util.*;

public class ShapeMgr extends Canvas
{
   Vector _vec;
   HotSpotMgr _hsm;
   HotSpot _hs;

   public ShapeMgr()
   {
      _vec = new Vector();
      _hsm = new HotSpotMgr();
   }

   public void manage(Shape s)
   {
      _vec.addElement(s);

      Vector vecShapes = s.getHotSpots();

      for (int i = 0; i < vecShapes.size(); i++)
      {
         _hsm.manage((HotSpot)vecShapes.elementAt(i));
      }

      repaint();
   }

   public boolean mouseDrag(Event e, int x, int y)
   {
      if (_hs != null)
      {
         _hs.setCoordinates(new Coordinates(x, y));
         _hs.notifyObservers();

         repaint();
      }

      return true;
   }

   public boolean mouseDown(Event e, int x, int y)
   {
      _hs = _hsm.isAt(new Coordinates(x, y));

      return true;
   }

   public boolean mouseUp(Event e, int x, int y)
   {
      _hs = null;

      return true;
   }

   public void paint(Graphics g)
   {
      for (int i = 0; i < _vec.size(); i++)
      {
         Shape s = (Shape)_vec.elementAt(i);

         g.setColor(Color.lightGray);

         Vector vecShapes = s.getHotSpots();

         for (int j = 0; j < vecShapes.size(); j++)
         {
            HotSpot hs = (HotSpot)vecShapes.elementAt(j);

            hs.paint(g);
         }

         g.setColor(Color.black);

         s.paint(g);
      }
   }
}
