
import java.awt.*;

public class point extends shape
{
     double x, y;  // private for sub-classes

     public point() { }

     public point(double X, double Y)
     {
	  x = X; y = Y;
     }

     public void setPoint(double X, double Y)
     {
	  x = X; y = Y;
     }
     
     public void updateCoord()
     {
     }

     public void setX(double X) { x = X; }
     public void setY(double Y) { y = Y; }

     public double X() { return(x); }
     public double Y() { return(y); }

     public void draw(GeometryWindow G)
     {
	  if (!exists() || hidden)
	       return;

	  G.setColor(color);
	  G.drawPoint(x, y);
     }

     public boolean isNear(double X, double Y)
     {
	  if (gMath.distance(x, y, X, Y) < clickRange)
	       return(true);
	  else
	       return(false);
     }

     public point coordOnShape(double X, double Y)
     {
	  return(new point(x, y));
     }

     public boolean translate(double dx, double dy)
     {
	  if (translated)
	       return(true);

	  translated = true;

	  x += dx;
	  y += dy;
	  
	  return(true);
     }

     public boolean mouseDown(double X, double Y)
     {
	  if (hidden)
	       return(false);

	  if (gMath.distance(x, y, X, Y) < clickRange)
	  {
	       dragging = true;
	       x = X;
	       y = Y;
	       return(true);
	  }
	  return(false);
     }

     public boolean mouseDrag(double X, double Y)
     {
	  if (dragging == true)
	  {
	       x = X;
	       y = Y;
	       return(true);
	  }
	  return(false);
     }

     public boolean mouseUp(double X, double Y)
     {
	  dragging = false;
	  return(false);
     }
};


