javafx-8gluongluon-desktop

Where is the message for the defaut ParticleApplication?


I am creating a Gluon ParticleApplication and i need to change the exit message and/or exit procedure, where is it or what should i override? Thanks for the answer.


Solution

  • The current implementation uses an Alert dialog to display a message whenever there's an exit event (from toolbar or menu actions) or from a close request event.

    While this dialog is not customizable, there is a showCloseConfirmation property that allows you cancelling that dialog, so you can silently quit the application or you can provide your own dialog.

    For instance, based on the default single desktop project created with the Gluon Plugin, we could modify the exit action under MenuActions:

    @Inject
    ParticleApplication app;
    
    @ActionProxy(text="Exit", accelerator="alt+F4")
    private void exit() {
        // disable built-in dialog
        app.setShowCloseConfirmation(false);
        // create a custom dialog
        Alert dialog = new Alert(Alert.AlertType.CONFIRMATION, "Custom exit Message");
        Optional<ButtonType> result = dialog.showAndWait();
        if(result.isPresent() && result.get().equals(ButtonType.OK)) {
            app.exit();
        }
    }
    

    Also, you will need to process close request events, in the main class, consuming those events and calling your exit action:

    @Override
    public void postInit(Scene scene) {
        ...
        scene.windowProperty().addListener(new InvalidationListener() {
            @Override
            public void invalidated(Observable observable) {
                scene.getWindow().setOnCloseRequest(e -> {
                    e.consume();
                    action("exit").handle(new ActionEvent());
                });
    
                scene.windowProperty().removeListener(this);
            }
        });
    }