import java.awt.*;
import java.applet.Applet;

class figuraevento extends Canvas {
    static public final int LINE = 0;
    static public final int RECT = 1;
    static public final int FILLRECT = 2;
    static public final int CLEARRECT = 3;
    static public final int THREEDRECT = 4;
    static public final int FILLTHREEDRECT = 5;
    static public final int ROUNDRECT = 6;
    static public final int FILLROUNDRECT = 7;
    static public final int OVAL = 8;
    static public final int FILLOVAL = 9;
    static public final int ARC = 10;
    static public final int FILLARC = 11;
    static public final int POLIGON = 12;
    static public final int FILLPOLIGON = 13;

    private int shape;

    figuraevento (int quale) {
	shape = quale;
	setForeground (Color.white);
	setBackground (Color.lightGray);
    }

    public void paint (Graphics g) {
	Rectangle size = bounds ();
	g.setColor (Color.black);
	switch (shape) {
	    case LINE :
		g.drawLine (1,1,size.width - 2 ,size.height - 2);
		break;
	    case RECT :
		g.drawRect (1,1,size.width - 3 ,size.height - 3);
		break;
	    case  FILLRECT :
		g.fillRect (1,1,size.width - 3 ,size.height - 3);
		break;
	    case  CLEARRECT :
		g.fillRect (0,0,size.width ,size.height);
		g.clearRect (size.width / 4 , size.height / 4 ,
		    size.width / 2  ,size.height / 2);
		break;
	    case  THREEDRECT :
		g.draw3DRect (1,1,size.width - 3 ,size.height - 3, false);
		break;
	    case  FILLTHREEDRECT :
		g.fill3DRect (1,1,size.width - 3 ,size.height - 3, true);
		break;
	    case  ROUNDRECT :
		g.drawRoundRect (1,1,size.width - 3 ,size.height - 3, 10, 10);
		break;
	    case  FILLROUNDRECT :
		g.fillRoundRect (1,1,size.width - 3 ,size.height - 3, 10, 10);
		break;
	    case  OVAL :
		g.drawOval (1,1,size.width - 3 ,size.height - 3);
		break;
	    case  FILLOVAL :
		g.fillOval (1,1,size.width - 3 ,size.height - 3);
		break;
	    case  ARC :
		g.drawArc (1,1,size.width - 3 ,size.height - 3, 90,270);
		break;
	    case  FILLARC :
		g.fillArc (1,1,size.width - 3 ,size.height - 3, 90,270);
		break;
	    case  POLIGON :
		Polygon p = new Polygon ();
		p.addPoint ((size.width - 1) / 2, 1);
		p.addPoint ((size.width - 1) / 5 , size.height - 1);
		p.addPoint ((size.width - 1), (size.height - 1) / 3);
		p.addPoint (1 , (size.height - 1) / 3);
		p.addPoint ((size.width - 1) * 4 / 5, size.height - 1);
		g.drawPolygon (p);
		break;
	    case  FILLPOLIGON :
		p = new Polygon ();
		p.addPoint ((size.width - 1) / 2, 1);
		p.addPoint ((size.width - 1) / 5 , size.height - 1);
		p.addPoint ((size.width - 1), (size.height - 1) / 3);
		p.addPoint (1 , (size.height - 1) / 3);
		p.addPoint ((size.width - 1) * 4 / 5, size.height - 1);
		g.fillPolygon (p);
		break;
	}
    }

    public boolean mouseEnter(Event evt, int x, int y) {
	setForeground (Color.lightGray);
	setBackground (Color.white);
	repaint ();
	return true;
    }

    public boolean mouseDown(Event evt, int x, int y) {
	setForeground (Color.lightGray);
	setBackground (Color.red);
	repaint ();
	return true;
    }

    public boolean mouseExit(Event evt, int x, int y) {
	setForeground (Color.white);
	setBackground (Color.lightGray);
	repaint ();
	return true;
    }
}

public class eventi extends Applet {

	public void init () {
	    setLayout (new GridLayout (2,7));

	    for (int i = figuraevento.LINE; i <= figuraevento.FILLPOLIGON; i ++) {
		figuraevento f = new figuraevento (i);
		add (f);
	    }	
    }
}
