On Sat, 16 Aug 2025 20:44:28 GMT, Nir Lisker <nlis...@openjdk.org> wrote:

> Adds `MOUSE_DRAG_DONE` event type to `MouseDragEvent` and appropriate 
> handlers.

Forgot to attach a small manual test application I used for testing full DPR 
and DnD. Might be helpful for reviewers.

package main;

import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.Dragboard;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class MouseTest extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(@SuppressWarnings("exports") Stage stage) throws 
Exception {
        var sourceMouse = createSourceMouse();
        var sourceDrag = createSourceDrag();
        var target = createTarget();

        var scene = createScene(sourceMouse, sourceDrag, target);
        stage.setScene(scene);
        stage.show();
    }

    private Rectangle createSourceMouse() {
        var sourceMouse = new Rectangle(50, 50);
        sourceMouse.setId("sourceMouse");
        sourceMouse.setFill(Color.RED);
        sourceMouse.setOnDragDetected(e -> {
            sourceMouse.startFullDrag();
            System.out.println(e.getEventType() + " " + sourceMouse.getId());
            e.consume();
        });
        addDragListeners(sourceMouse);
        return sourceMouse;
    }

    private Rectangle createSourceDrag() {
        var sourceDrag = new Rectangle(50, 50);
        sourceDrag.setId("sourceDrag");
        sourceDrag.setFill(Color.GREEN);
        sourceDrag.setOnDragDetected(e -> {
            Dragboard db = sourceDrag.startDragAndDrop(TransferMode.ANY);
            var content = new ClipboardContent();
            content.putString("");
            db.setContent(content);
            System.out.println(e.getEventType() + " " + sourceDrag.getId());
            e.consume();
        });
        addDragListeners(sourceDrag);
        return sourceDrag;
    }

    private Rectangle createTarget() {
        var target = new Rectangle(100, 50);
        target.setId("target");
        target.setFill(Color.BLUE);
        target.setOnDragDetected(MouseEvent::consume);
        addDragListeners(target);
        return target;
    }

    private Scene createScene(Rectangle sourceMouse, Rectangle sourceDrag, 
Rectangle target) {
        var scene = new Scene(new VBox(10, new HBox(sourceMouse, sourceDrag), 
target), 300, 200);
        scene.setOnDragDetected(e -> {
            scene.startFullDrag();
            System.out.println(e.getEventType() + " scene");
        });

        scene.setOnDragDone(e -> {
            e.acceptTransferModes(TransferMode.ANY);
            System.out.println(e.getEventType() + " scene");
        });
        scene.setOnMouseDragReleased(e -> System.out.println(e.getEventType() + 
" scene"));
        scene.setOnMouseDragDone(e -> System.out.println(e.getEventType() + " 
scene"));
        return scene;
    }

    private static void addDragListeners(Node node) {
        node.setOnDragOver(e -> {
            e.acceptTransferModes(TransferMode.ANY);
            System.out.println(e.getEventType() + " " + node.getId());
        });
        node.setOnMouseDragOver(e -> System.out.println(e.getEventType() + " " 
+ node.getId()));

        node.setOnDragDropped(e -> {
            e.acceptTransferModes(TransferMode.ANY);
            e.setDropCompleted(true);
            System.out.println(e.getEventType() + " " + node.getId());
        });
        node.setOnMouseDragReleased(e -> System.out.println(e.getEventType() + 
" " + node.getId()));

        node.setOnDragDone(e -> {
            e.acceptTransferModes(TransferMode.ANY);
            System.out.println(e.getEventType() + " " + node.getId());
        });
        node.setOnMouseDragDone(e -> System.out.println(e.getEventType() + " " 
+ node.getId()));
    }
}

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1873#issuecomment-3197980633

Reply via email to