Update on the FullScreen ESC API proposal.

David Hill David.Hill at Oracle.com
Tue Jun 11 08:42:54 PDT 2013


Richard has proposed an API for the FullScreen/ESC/Overlay issue in

https://javafx-jira.kenai.com/browse/RT-15314

The proposal is pasted below, please consider watching/updating in the jira with comments.

Dave


/**

   * Specifies what KeyCombination will allow the user to exit full screen mode.

   * A value of KeyCombination.NO_MATCH will not match any KeyEvent and will make it so

   * the user is not able to escape from Full Screen mode. A value of null means that

   * the default platform specific key combination should be used.

   */

public final void setFullScreenExitKeyCombination(KeyCombination keyCombination);

public final KeyCombination getFullScreenExitKeyCombination();

public final ObjectProperty<KeyCombination> fullScreenExitKeyProperty();



/**

   * Specifies the text to show when a user enters full screen mode, usually used

   * to indicate the way a user should go about exiting out of full screen mode. A

   * value of null will result in the default per-locale message being displayed. If set

   * to the empty string, then no message will be displayed.

   */

public final void setFullScreenExitHint(String value);

public final String getFullScreenExitHint();

public final BooleanProperty fullScreenExitHintProperty();







We would also add (as the JavaDocs above indicate) a NO_MATCH public
static final KeyCombination to KeyCombination, which would be a
KeyCombination who's "match" always returns false, thereby never
matching anything. This API allows you to solve the following use cases
in, what I think, is a pretty minimally invasive manner:



  * I want to customize what key is used to exit *



stage.setFullScreenExitKeyCombination(new KeyCharacterCombination("w", KeyCombination.CONTROL_DOWN));



Note that this should also play into the default exit hint text, such that it should now say "CTRL+W" instead of "ESC"



* I want to customize the displayed hint *



stage.setFullScreenExitHint("Don't even think about leaving this game!");



* I want to show my own exit hint *



stage.setFullScreenExitHint("");

// then in your own code construct your own message



* I want to hide the exit hint but still allow the user to exit *



stage.setFullScreenExitHint("");



* I want to disallow the user from exiting full screen *



stage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);



* I want to restore the default exit hint *



stage.setFullScreenExitHint("Some hint");

stage.setFullScreenExitHint(null); // restore to default





Changing either property would result in a SecurityException when necessary by an installed SecurityManager.



Note that we could also have a command line property:
-Djavafx.fullScreenExitEnabled=false which would ignore these settings
and turn off exiting in all cases. I'm not sure that it is important to
have a system property for this with proper API also being available, so
  I would opt to just go with the API for now and add the system property
  later if we want? Alternatively we could go with
-Djavafx.stage.fullScreenDefault=disabled or some other way to specify
that the default behavior is disabled, but if a specific stage has
provided a different default key combination / hint then we'll use that
instead. Or we could add API to Application later which would be
applicable to all Stages. But for now I would start with just the API on
  Stage and see how far that takes us.
David Hill <David.Hill at Oracle.com>
Java Embedded Development

One of the keys to happiness is a bad memory.
-- Rita Mae Brown



More information about the openjfx-dev mailing list