So I'm correct that calling Node.startFullDrag() should result in the 
OnMouseDragOver method getting called? I wasn't sure I had that right - and I 
really need a OnMouseDragMoved notification anyway.

My Sample code is below. If you think it should result in a bunch of 
onMouseDragOver.Handler printlns, I'll file a bug.

jeff

public void start(Stage aStage)
{
    // Create Button with DragDetected.Handler to startFullDrag/startDragAndDrop
    final Button button = new Button("Hello World");
    button.setOnDragDetected(new EventHandler() {
        public void handle(Event anEvent) {
            button.startFullDrag();
            Dragboard db = button.startDragAndDrop(TransferMode.ANY);
            ClipboardContent cc = new ClipboardContent(); cc.putString("Hello 
World");
            db.setContent(cc); anEvent.consume();
        }
    });
    
    // Listen to DragSource events
    button.setOnMouseDragOver(new EventHandler<MouseDragEvent>() {
        public void handle(MouseDragEvent e) { System.out.println(e); }
    });
    
    // Add button to pane and stage and show
    Pane pane = new Pane(); pane.setPrefSize(400,400);
    pane.getChildren().add(button); button.resizeRelocate(100,100,100,100);
    aStage.setScene(new Scene(pane)); aStage.show();
}

On Apr 21, 2014, at 8:45 AM, Anthony Petrov <anthony.pet...@oracle.com> wrote:

> Hi Jeff,
> 
> On 4/18/2014 6:43 PM, Jeff Martin wrote:
>> I'm trying to figure out how to implement a version of 
>> Dragboard.setDragView() that works with JFXPanel (which isn't currently 
>> supported). Years ago I did this in Swing by creating a window that followed 
>> the mouse around (at an offset, so it wouldn't take all the DragOver events).
>> 
>> I created a Popup Window and added an ImageView, but I can't figure out how 
>> to get the equivalent of DragSource events. I thought I could just call 
>> source.startFullDrag() in my DragDetected method then I would get MouseDrag 
>> events on my source, but that isn't happening. Is this a bug or am I doing 
>> something wrong?
> 
> Please file a new JIRA and provide a small test case that demonstrates the 
> problem.
> 
>> Also, when I get my Popup moving, I'd really like it to be exactly under the 
>> mouse but have the Popup be MouseTransparent (or forward events to the 
>> window underneath).
> 
> You could use the TRANSPARENT style for your popup window and paint a 
> transparent hole (alpha == 0) in its center (or wherever you need it), and 
> keep the popup positioned so that the mouse pointer is located above the 
> hole. Mouse events always pass through transparent pixels. This way mouse 
> events will get delivered to a window below the popup window in the z-order, 
> while the popup window itself can float above it following the mouse cursor.
> 
> --
> best regards,
> Anthony

Reply via email to