protected void addTouchHandlers() {
    TouchStartHandler touchStartHandler =
        new TouchStartHandler() {

          @Override
          public void onTouchStart(TouchStartEvent event) {
            event.stopPropagation();
            event.preventDefault();
            mouseDown(event);
          }
        };
    canvas.addTouchStartHandler(touchStartHandler);

    TouchMoveHandler touchMoveHandler =
        new TouchMoveHandler() {

          @Override
          public void onTouchMove(TouchMoveEvent event) {
            if (isMouseDown) {
              event.stopPropagation();
              event.preventDefault();
              mouseMove(event);
            }
          }
        };
    canvas.addTouchMoveHandler(touchMoveHandler);

    TouchEndHandler touchEndHandler =
        new TouchEndHandler() {

          @Override
          public void onTouchEnd(TouchEndEvent event) {
            if (isMouseDown) {
              event.stopPropagation();
              event.preventDefault();
              mouseUp(event);
            }
          }
        };
    canvas.addTouchEndHandler(touchEndHandler);
  }