private boolean dragStart(SComponent source, STransferHandler sourceTH, SComponent target, int action, SMouseEvent mouseEvent) { SCursor cursor = getSession().getCursor(); // clean transfersupport (in case a old dragging was aborted for any reason and didn't clean up) this.transferSupport = null; // Look for a CustomDragHandler if (sourceTH instanceof CustomDragHandler) { if(((CustomDragHandler) sourceTH).dragStart(source, target, action, mouseEvent)) { return true; } } // This call must and usually will set the TransferSupport sourceTH.exportAsDrag(source, mouseEvent, action); if (this.transferSupport == null) { // abort drag operation return false; } // Start drag operation // Get the Visual Representation Label and use it SLabel label = sourceTH.getVisualRepresentationLabel(getTransferSupport().getTransferable()); if (label != null) { cursor.setLabel(label); } // Show it cursor.setShowCursor(true); return true; }