//
// This is sample for practice Java GUI Event Delegation Model(5).
// With 3 class to implement one event.
//
import java.applet.Applet;
import java.awt.event.*;
import java.awt.*;

public class AdaptedExample extends Applet{
	public void init() {
		String melBlank[]={"Bug", "Porky", "Daffy", "Cat"};
		setLayout(new GridLayout(2,2));
		for(int i=0; i<melBlank.length; i++)
			add(new DraggedText(melBlank[i]));
	}
}

class DraggedMotion extends MouseMotionAdapter {
	DraggedText dragged;
	DraggedMotion (DraggedText drag) { dragged=drag;}
	public void mouseDragged(MouseEvent evt) {
		dragged.setPosition(evt.getX(), evt.getY());
	}
}

class DraggedText extends Canvas {
	private int posX=25;
	private int posY=25;
	private String label;

	DraggedText(String txt) {
		label=txt;
		addMouseMotionListener(new DraggedMotion(this));
	}


	public void paint(Graphics g) {
		g.drawString(label, posX+25, posY+15);
		g.drawArc(posX, posY, 100, 25, 0, 360);
	}
	public void setPosition (int x, int y) {
		posX=x;
		posY=y;
		repaint();
	}
}
