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