public void onMouseDown(MouseDownEvent event) {
    startX = event.getClientX();
    startY = event.getClientY();
    if (isDisabled() || event.getNativeButton() != NativeEvent.BUTTON_LEFT) {
      return;
    }

    clickTarget = Element.as(event.getNativeEvent().getEventTarget());
    mouseMoveCanceled = false;

    if (weekGrid.getCalendar().isEventMoveAllowed() || clickTargetsResize()) {
      moveRegistration = addMouseMoveHandler(this);
      setFocus(true);
      try {
        startYrelative = (int) ((double) event.getRelativeY(caption) % slotHeight);
        startXrelative =
            (event.getRelativeX(weekGrid.getElement()) - weekGrid.timebar.getOffsetWidth())
                % getDateCellWidth();
      } catch (Exception e) {
        GWT.log("Exception calculating relative start position", e);
      }
      mouseMoveStarted = false;
      Style s = getElement().getStyle();
      s.setZIndex(1000);
      startDatetimeFrom = (Date) calendarEvent.getStartTime().clone();
      startDatetimeTo = (Date) calendarEvent.getEndTime().clone();
      Event.setCapture(getElement());
    }

    // make sure the right cursor is always displayed
    if (clickTargetsResize()) {
      addGlobalResizeStyle();
    }

    /*
     * We need to stop the event propagation or else the WeekGrid
     * range select will kick in
     */
    event.stopPropagation();
    event.preventDefault();
  }