GWTCanvasでイベントの取得

GWTCanvasを使うには、IncuvatorのGWTCanvasを使う。
http://code.google.com/p/google-web-toolkit-incubator/


で、まあ描画はHTML5Canvasそのままなので、そんなに悩むことはないのだけど、GWTCanvasを使ってお絵かきをしたりしようとするとイベントの取得の必要があるのに、イベントのサンプルがないので結構悩む。
GWTCanvasを継承して、addDomHandlerを呼び出してやる必要がある。


ということで、GWTCanvasでイベントを取得するサンプル。

public class MainEntryPoint implements EntryPoint {

    public MainEntryPoint() {
    }

    public void onModuleLoad() {
        GWTCanvas cv = new MyCanvas(600, 400);
        cv.setFillStyle(Color.WHITE);
        cv.fillRect(0, 0, 600, 400);
        RootPanel.get().add(cv);
    }

    static class MyCanvas extends GWTCanvas{
        public MyCanvas(int w, int h) {
            super(w, h);
            addDomHandler(new MouseMoveHandler() {
                public void onMouseMove(MouseMoveEvent event) {
                    mouseMove(event);
                }
            }, MouseMoveEvent.getType());
        }
        void mouseMove(MouseMoveEvent ev){
            setFillStyle(Color.RED);
            fillRect(ev.getX(), ev.getY(), 10, 10);
        }
    }
}