/*
  Un applet che disegna le curve tracciate dall'utente quando trascina 
  il mouse.
*/


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

public class AppletDisegno extends Applet {

    private RicevitoreMovimenti ricevitore; 
    // le coordinate del punto in cui si trova il mouse 
    private int xIniz, yIniz, xFin, yFin;  
    private boolean mouseTrascinato;

    public void init() {
	ricevitore = new RicevitoreMovimenti();  
	addMouseMotionListener(ricevitore);
	addMouseListener(ricevitore);
	mouseTrascinato = false; 
	setBackground(Color.black);
	setForeground(Color.white);
    }

    public void paint(Graphics g) {
	Graphics2D g2 = (Graphics2D)g;
	g2.setStroke(new BasicStroke(3));
	if (mouseTrascinato) 
	    g2.drawLine(xIniz, yIniz, xFin, yFin);
    }

    // classe interna:
    class RicevitoreMovimenti implements MouseListener, MouseMotionListener {

	public void mouseMoved(MouseEvent evt) { 
	    mouseTrascinato = false;
	}

	public void mouseDragged(MouseEvent evt) {
	    mouseTrascinato = true;
	    xFin = evt.getX();
	    yFin = evt.getY();
	    repaint();
	}

	public void mousePressed(MouseEvent e) {
	    mouseTrascinato = false; 
	    xIniz = e.getX();
	    yIniz = e.getY();
	    repaint();
	}

	public void mouseReleased(MouseEvent e) {
	    mouseTrascinato = false;
	}

	public void mouseClicked(MouseEvent e) {}

	public void mouseEntered(MouseEvent e) {}

	public void mouseExited(MouseEvent e) {}

    } // fine classe interna.

}

