/*
  Un applet che disegna un quadrato bianco di lato 30 nel punto in cui
  viene premuto il mouse. L'applet contiene una classe interna per 
  gestire gli eventi generati dal mouse.
*/


import java.applet.Applet;
import java.awt.Color;
import java.awt.event.MouseListener; 
import java.awt.event.MouseEvent;
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Rectangle;

public class AppletMouse3 extends Applet {

    private RicevitoreMouse ricevitore; 
    private Rectangle quadrato;
    private final static int LATO = 30;  // lato del quadrato

    public void init() {
	ricevitore = new RicevitoreMouse();  
	// costruisco il quadrato e lo pongo in (0, 0):
	quadrato = new Rectangle(0, 0, LATO, LATO);
	// installo il ricevitore di eventi:
	addMouseListener(ricevitore);  
	setBackground(Color.blue);
    }

    public void paint(Graphics g) {
	Graphics2D g2 = (Graphics2D)g;
	g2.setColor(Color.white);
	g2.fill(quadrato);
    }

    // classe interna:
    class RicevitoreMouse implements MouseListener {
	public void mousePressed(MouseEvent evt) {
	    // prendo nota del punto in cui si trova il quadrato:
	    int a = (int)quadrato.getX();
	    int b = (int)quadrato.getY();
	    // catturo le coordinate del punto in cui e' stato 
	    // premuto il mouse:
	    int xCoord = evt.getX();
	    int yCoord = evt.getY();
	    // traslo il quadrato in modo da posizionarlo nel punto
	    // in cui e' stato premuto il mouse:
	    quadrato.translate(xCoord - a, yCoord - b);
	    // ridisegno l'applet:
	    repaint();
	}
	// i seguenti metodi non fanno nulla, ma devono essere inseriti,
	// poiche' la classe implementa l'interfaccia MouseListener:
       
	public void mouseReleased(MouseEvent evt) {}

	public void mouseEntered(MouseEvent evt) {}

	public void mouseExited(MouseEvent evt) {}

	public void mouseClicked(MouseEvent evt) {}

    } // fine classe interna.

}

