public void onMouseDown(MouseDownEvent event) {

        if ((event.getNativeButton() != NativeEvent.BUTTON_LEFT) || m_dragging || (m_currentAnimation != null)) {
            // only act on left button down, ignore right click
            // also ignore if the dragging flag is still true or an animation is still running
            return;
        }
        Object source = event.getSource();
        if (!(source instanceof I_DragHandle)) {
            // source is no drag handle, wrong DNDHandler assignment ignore
            return;
        }
        I_DragHandle dragHandle = (I_DragHandle)source;
        m_draggable = dragHandle.getDraggable();
        if (m_draggable == null) {
            // cancel dragging
            return;
        }
        m_clientX = event.getClientX();
        m_clientY = event.getClientY();
        m_cursorOffsetX = DomUtil.getRelativeX(m_clientX, m_draggable.getElement());
        m_cursorOffsetY = DomUtil.getRelativeY(m_clientY, m_draggable.getElement());
        m_startLeft = m_draggable.getElement().getAbsoluteLeft();
        m_startTop = m_draggable.getElement().getAbsoluteTop();
        m_currentTarget = m_draggable.getParentTarget();
        m_dragHelper = m_draggable.getDragHelper(m_currentTarget);
        m_placeholder = m_draggable.getPlaceholder(m_currentTarget);
        // notifying controller, if false is returned, dragging will be canceled
        if (!m_controller.onDragStart(m_draggable, m_currentTarget, this)) {
            cancel();
            return;
        }
        m_draggable.onStartDrag(m_currentTarget);
        m_dragging = true;
        // add marker css class to enable drag and drop dependent styles
        Document.get().getBody().addClassName(
            com.alkacon.geranium.client.ui.css.I_LayoutBundle.INSTANCE.dragdropCss().dragStarted());
        if (m_previewHandlerRegistration != null) {
            // this should never be the case
            DebugLog.getInstance().printLine("Preview handler already registered!!!");
            m_previewHandlerRegistration.removeHandler();

        }
        DebugLog.getInstance().printLine("Registering preview handler");
        m_previewHandlerRegistration = Event.addNativePreviewHandler(m_previewHandler);
        onMove((Event)event.getNativeEvent());
    }