API proposal: drag view

Pavel Safrata pavel.safrata at oracle.com
Sun Jan 13 23:59:05 PST 2013


Hello,
this is a proposal of an API allowing to specify the image floating with 
mouse cursor during a drag&drop operation.

Jira: http://javafx-jira.kenai.com/browse/RT-14730

I propose to add two methods to DragBoard:
setDragView(Image image, double offsetX, double offsetY)
setDragView(Node node, double offsetX, double offsetY)

The first one simply uses the given image for the drag view with the 
offsetX and offsetY specifying cursor position over the image. The 
second one renders the given node to an image and uses the result (the 
coordinates being in the node's local space).

The typical usage will look like this:
         sourceNode.setOnDragDetected(new EventHandler<MouseEvent>() {
             public void handle(MouseEvent event) {
                 Dragboard db = source.startDragAndDrop(TransferMode.ANY);
                 ClipboardContent content = ...
                 db.setContent(content);
                 db.setDragView(sourceNode, event.getX(), event.getY()); 
// that's it
                 event.consume();
             }
         });


This API is meant for telling the operating system what visual cues to 
provide, I don't think it is useful (and I'm not sure it is even 
possible) to provide getters.

There is a possibility to provide default drag view - if none of those 
methods is called, the default drag view would be an image of the drag 
gesture source. This should work nice most of the times. However, it may 
cause inconveniences to some existing apps - for instance a text editor 
node which puts the selected text on the DragBoard - after updating FX 
the application starts to show the entire editor in the drag view. For 
this reason I think the default behavior should remain unchanged.

Thanks,
Pavel


More information about the openjfx-dev mailing list