import java.awt.*;

class DrawWindow extends Frame {

  final int C = 4;
  private PointSet points[] = new PointSet[C];
  private PointSet lines[][] = new PointSet[C][2];
  private Color colors[] = new Color[C];

  public DrawWindow(String name, int w, int h) {
    super(name);
    // setSize(w, h);
    pack();
    show();

    for(int i=0; i < C; i++) {
      points[i] = new PointSet(1000);
      lines[i][0] = new PointSet(1000);
      lines[i][1] = new PointSet(1000);
    }
    
    colors[0] = new Color(0,0,0);
    colors[1] = new Color(0,0,255);
    colors[2] = new Color(0,255,0);
    colors[3] = new Color(255,255,0);
  }

  public void add(Point point, int pClass) {
    points[pClass].add(point);
    repaint();
  }
  public void add(Point point1, Point point2, int pClass) {
    lines[pClass][0].add(point1);
    lines[pClass][1].add(point2);
    repaint();
  }

  public void paint(Graphics g) {
    int w = size().width - 40;
    int h = size().height - 60;

    g.setColor(new Color(255,255,255));
    g.fillRect(0,0, w+40,h+60);

    g.setColor(new Color(0,0,0));
    g.drawRect(20,40, w, h);
    
    double r = size().width * 0.005;

    for(int k=0; k < C; k++) {
      g.setColor(colors[k]);

      for(int i=0; i < points[k].k; i++) {
	g.fillOval(20 + (int)(points[k].p[i].x * w - r),
		   40 + (int)((1.0-points[k].p[i].y) * h - r),
		   (int)(2*r), (int)(2*r));
      }

      for(int i=0; i < lines[k][0].k; i++) {
	g.drawLine(20 + (int)(lines[k][0].p[i].x * w),
		   40 + (int)((1.0-lines[k][0].p[i].y) * h),
		   
		   20 + (int)(lines[k][1].p[i].x * w),
		   40 + (int)((1.0-lines[k][1].p[i].y) * h) );
      }
    }
  }

}

