import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.Dragboard;
import javafx.scene.input.TransferMode;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.stage.Window;

public class DialogButtonsTest extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Rectangle rect1 = new Rectangle(50, 50, Color.BLUE);
        rect1.setOnDragDetected(event -> {
            Dragboard db = rect1.startDragAndDrop(TransferMode.ANY);
            ClipboardContent content = new ClipboardContent();
            content.putString("text");
            db.setContent(content);
        });
        rect1.setOnMouseDragged(event -> event.setDragDetect(true));

        Rectangle rect2 = new Rectangle(60, 60, Color.RED);
        rect2.setOnDragOver(event -> {
            if (event.getGestureSource() != rect2 && event.getDragboard().hasString()) {
                event.acceptTransferModes(TransferMode.COPY_OR_MOVE);
            }
            event.consume();
        });

        rect2.setOnDragDropped(event -> {
            Dragboard db = event.getDragboard();
            event.setDropCompleted(db.hasString());
            event.consume();
        });

        HBox root = new HBox(50, rect1, rect2);
        root.setPadding(new Insets(20));
        root.setAlignment(Pos.CENTER);
        final Scene scene = new Scene(root, 600, 400);
        stage.setOnCloseRequest(e -> {
            //e.consume();
            showDialog(stage);
        });
        stage.setTitle("Main Stage");
        stage.setScene(scene);
        stage.show();
    }

    private void showDialog(final Window owner) {
        final Dialog<ButtonType> dialog = new Alert(Alert.AlertType.CONFIRMATION);
        dialog.setTitle("Dialog");
        dialog.initOwner(owner);
        dialog.setContentText("Quit?");
        dialog.showAndWait();
    }

}
