import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
import java.util.*;

/**
   A component that shows a scene composed of items.
*/
public class CarComponent extends JComponent
{
   public CarComponent()
   {
      car = new CarShape(20, 20, 50);
      addMouseListener(new
         MouseAdapter()
         {
            public void mousePressed(MouseEvent event)
            {
               mousePoint = event.getPoint();
               if (!car.contains(mousePoint))
                  mousePoint = null;
            }
         });

      addMouseMotionListener(new
         MouseMotionAdapter()
         {
            public void mouseDragged(MouseEvent event)
            {
               if (mousePoint == null) return;
               Point lastMousePoint = mousePoint;
               mousePoint = event.getPoint();

               double dx = mousePoint.getX() - lastMousePoint.getX();
               double dy = mousePoint.getY() - lastMousePoint.getY();
               car.translate((int) dx, (int) dy);
               repaint();
            }
         });
   }

   public void paintComponent(Graphics g)
   {
      Graphics2D g2 = (Graphics2D) g;
      car.draw(g2);
   }

   private CarShape car;
   private Point mousePoint;
}                               
