import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;

public class Sample4 extends ToyGraphics implements MouseListener {
    public Sample4() { super(640,480); }
    public void run() {
	addMouseListener(this);  // ウィンドウに対するMouseイベントを自分で受け取る
	g2d.setPaint(Color.white);
	g2d.fill(new Rectangle2D.Double(0, 0, width, height));  // ウィンドウ全体を黒で塗りつぶす
	repaint(0,0,width,height); // 範囲を指定して再描画する (これが無いと変更が反映されない)
    }
    public void mouseClicked(MouseEvent e) { System.err.println("mouseClicked"); }
    public void mousePressed(MouseEvent e) {
	int mx = e.getX(), my = e.getY();
	System.err.println("mousePressed " + mx + " " + my);
	int w=10, h=10, x=mx-w/2, y=my-h/2;
	g2d.setPaint(Color.blue);
	g2d.fill(new Rectangle2D.Double(x,y,w,h));  // (x,y)の回りを10x10の青色の四角で塗りつぶす
	repaint(x,y,w,h);
    }
    public void mouseReleased(MouseEvent e) {
	int mx = e.getX(), my = e.getY();
	System.err.println("mouseReleased " + mx + " " + my);
	int w=10, h=10, x=mx-w/2, y=my-h/2;
	g2d.setPaint(Color.red);
	g2d.fill(new Rectangle2D.Double(x,y,w,h));  // (x,y)の回りを10x10の赤色の四角で塗りつぶす
	repaint(x,y,w,h);
    }
    public void mouseEntered(MouseEvent e) { System.err.println("mouseEntered"); }
    public void mouseExited(MouseEvent e) { System.err.println("mouseExited"); }


    public static void main(String[] args) {
	Sample4 app = new Sample4();
	app.run();
    }
}
