/**
 * AI: Francisco Lara-Dammer 
 * A solution to Lab 11
*/

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

public class Dots extends java.applet.Applet 
    implements MouseListener{
    
    Vector positionColor = new Vector(); //Stores position-colors  
    
    public void init() {
        setBackground(Color.white);
        this.addMouseListener(this); 
    }
    
    void addDot(PointColor P) {
        positionColor.addElement(P);
        repaint();
    }
    
    public void paint(Graphics g) { 
	for (int cur = 0;  cur < positionColor.size(); ++cur) {
	    
	    g.setColor(((PointColor)(positionColor.elementAt(cur))).getColor());
	    g.fillOval((int) (((PointColor)(positionColor.elementAt(cur))).getX())-10, 
		       (int) (((PointColor)(positionColor.elementAt(cur))).getY())-10,
		       20,20);  
	    
	}
    }
    
    public void mouseClicked (MouseEvent e){ 
    
    } 

    public void mousePressed (MouseEvent e){ 
    
    } 
    
    public void mouseReleased(MouseEvent e){ 
	PointColor P = new PointColor(e.getX(), e.getY(), 
			    new Color((float)Math.random(), 
				      (float)Math.random(), 
				      (float)Math.random()));
    
        this.addDot(P);
	
    } 

    public void mouseEntered (MouseEvent e){ 
    } 

    public void mouseExited  (MouseEvent e){ 
    }     
}  
 
/**
 * Used to wrap a Point with a Color. 
 */
class PointColor extends Point{

    Color color;
    
    PointColor(double x, double y, Color color){
	super(x,y);
	this.color = color;
    }
    
    Color getColor(){
	return color;
    }
}