API REVIEW request for RT-19783: Provide an option to allow modal windows to be blocking

Kevin Rushforth kevin.rushforth at oracle.com
Tue Apr 10 16:21:59 PDT 2012


The problem with showAsModal is that this method is independent of the 
modality attribute on Stage, so the name would be confusing.

You can have a modal window (a window whose modality is 
Modality.WINDOW_MODAL or Modality.APPLICATION_MODAL), without having it 
block the caller. Conversely, you can have a non-modal window 
(Modality.NONE) that blocks if you call this method.

I am open to a better name for this method, but I don't think it should 
have modal in the name.

-- Kevin


Jeff McDonald wrote:
> Just my 2 cents ... showAsModal or showModal sounds better. When I see 
> showAndWait my first question before I read the docs is "what am I 
> waiting for?"  showAsModal or showModal  seem more self-documenting 
> than showAndWait.
>
> Cheers,
> Jeff
>
> On Tue, Apr 10, 2012 at 2:45 PM, Richard Bair <richard.bair at oracle.com 
> <mailto:richard.bair at oracle.com>> wrote:
>
>     Looks good to me, if nobody objects by tomorrow I'll mark this as
>     approved.
>
>     Richard
>
>     On Apr 10, 2012, at 1:43 PM, Kevin Rushforth wrote:
>
>     > JIRA:  http://javafx-jira.kenai.com/browse/RT-19783
>     >
>     > We have had several requests for a way to block the caller while
>     a (modal) dialog is shown. The show() method on a Stage is
>     specified to return to the caller immediately regardless of the
>     modality of a stage. This is a good semantic for many
>     applications, but complicates the logic for other applications
>     which don't want to proceed until the dialog is dismissed. It is
>     also needed internally to implement an Alert class (see RT-12643
>     for example). Swing dialog, for example, JOptionPane, work by
>     blocking the caller until the dialog is dismissed meaning that
>     Swing application programmers are already familiar with that model.
>     >
>     > Our proposal for JavaFX 2.2 is to add a new method on Stage,
>     showAndWait(), which will block the caller until the stage is
>     hidden. Note that while this is primarily useful for modal Stages,
>     there is nothing in the API that restricts it to such.
>     >
>     > The proposed method and javadoc are described in the JIRA, but
>     since it is so short, I will also list it here:
>     >
>     >     /**
>     >      * Show the stage and wait for it to be closed before
>     returning to the
>     >      * caller. This must be called on the FX Application thread.
>     The stage
>     >      * must not already be visible prior to calling this method.
>     This must not
>     >      * be called on the primary stage.
>     >      *
>     >      * @throws IllegalStateException if this method is called on
>     a thread
>     >      *     other than the JavaFX Application Thread.
>     >      * @throws IllegalStateException if this method is called on the
>     >      *     primary stage.
>     >      * @throws IllegalStateException if this stage is already
>     showing.
>     >      */
>     >     public void showAndWait();
>     >
>     > -- Kevin
>     >
>
>


More information about the openjfx-dev mailing list