/*
 * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package javafx.application;

Defines a set of conditional (optional) features. These features may not be available on all platforms. An application that wants to know whether a particular feature is available may query this using the Platform.isSupported() function. Using a conditional feature on a platform that does not support it will not cause an exception. In general, the conditional feature will just be ignored. See the documentation for each feature for more detail.
Since:JavaFX 2.0
/** * Defines a set of conditional (optional) features. These features * may not be available on all platforms. An application that wants to * know whether a particular feature is available may query this using * the {@link javafx.application.Platform#isSupported(javafx.application.ConditionalFeature) * Platform.isSupported()} function. Using a conditional feature * on a platform that does not support it will not cause an exception. In * general, the conditional feature will just be ignored. See the documentation * for each feature for more detail. * @since JavaFX 2.0 */
public enum ConditionalFeature {
Indicates that JavaFX classes providing graphics capabilities are available on this platform.
Since:JavaFX 8.0
/** * Indicates that JavaFX classes providing graphics capabilities are * available on this platform. * @since JavaFX 8.0 */
GRAPHICS,
Indicates that JavaFX classes providing UI controls are available on this platform.
Since:JavaFX 8.0
/** * Indicates that JavaFX classes providing UI controls are available on * this platform. * @since JavaFX 8.0 */
CONTROLS,
Indicates that the javafx.scene.media package is available on this platform.
Since:JavaFX 8.0
/** * Indicates that the javafx.scene.media package is available on this * platform. * @since JavaFX 8.0 */
MEDIA,
Indicates that the javafx.scene.web packages is available on this platform.
Since:JavaFX 8.0
/** * Indicates that the javafx.scene.web packages is available on this * platform. * @since JavaFX 8.0 */
WEB,
Indicates that SWT integration is available on the platform. This tests for SWT integration with JavaFX, but does not test for the presence of the full SWT library.
Since:JavaFX 8.0
/** * Indicates that SWT integration is available on the platform. This tests * for SWT integration with JavaFX, but does not test for the presence of * the full SWT library. * @since JavaFX 8.0 */
SWT,
Indicates that the Swing library is present in the Java Runtime Environment and that Swing integration with JavaFX is available on the platform.
Since:JavaFX 8.0
/** * Indicates that the Swing library is present in the Java Runtime * Environment and that Swing integration with JavaFX is available on the * platform. * @since JavaFX 8.0 */
SWING,
Indicates that XML libraries are present in the JRE and that the FXML API is available on the platform. Note that it is possible for FXML APIs to be present but unusable if the underlying Java Runtime Environment does not have XML support. In this case Platform.isSupported(ConditionalFeature.FXML) wll return false.
Since:JavaFX 8.0
/** * Indicates that XML libraries are present in the JRE and that the FXML * API is available on the platform. Note that it is possible for FXML APIs * to be present but unusable if the underlying Java Runtime Environment * does not have XML support. In this case * Platform.isSupported(ConditionalFeature.FXML) wll return false. * @since JavaFX 8.0 */
FXML,
Indicates that 3D is available on the platform. If an application attempts to use 3D transforms or a 3D camera on a platform that does not support 3D, then the transform or camera is ignored; it effectively becomes the identity transform.
/** * Indicates that 3D is available on the platform. * If an application attempts to use 3D transforms or a 3D camera on a * platform that does not support 3D, then the transform or camera is * ignored; it effectively becomes the identity transform. */
SCENE3D,
Indicates that filter effects are available on the platform. If an application uses an effect on a platform that does not support it, the effect will be ignored.
/** * Indicates that filter effects are available on the platform. * If an application uses an effect on a platform that does * not support it, the effect will be ignored. */
EFFECT,
Indicates that clipping against an arbitrary shape is available on the platform. If an application specifies a clip node on a platform that does not support clipping against an arbitrary shape, the node will be clipped to the bounds of the specified clip node rather than its geometric shape.
/** * Indicates that clipping against an arbitrary shape is available * on the platform. If an application specifies a clip node on a * platform that does not support clipping against an arbitrary shape, * the node will be clipped to the bounds of the specified clip node * rather than its geometric shape. */
SHAPE_CLIP,
Indicates that text input method is available on the platform. If an application specifies an input method on a platform that does not support it, the input method will be ignored.
/** * Indicates that text input method is available on the platform. * If an application specifies an input method on a platform that does * not support it, the input method will be ignored. */
INPUT_METHOD,
Indicates that the system supports full window transparency. Transparent windows will have only limited or no functionality on a platform that doesn't support it.

Currently, this support is available on all desktop platforms except Linux systems without the XComposite extension. The XShape extension is used in that case, so the window edges are aliased.

If a security manager is present, the application must have the FXPermission "createTransparentWindow" in order to create a transparent window. If the application doesn't have the required permission, it won't be able to use this feature; it will appear as if the the platform doesn't support transparent windows, and Platform.isSupported(TRANSPARENT_WINDOW) will return false.

Since:JavaFX 2.2
/** * Indicates that the system supports full window transparency. * Transparent windows will have only limited or no functionality on a platform that * doesn't support it. * <p> * Currently, this support is available on all desktop platforms * except Linux systems without the XComposite extension. The * XShape extension is used in that case, so the window edges are aliased. * </p> * <p> * If a security manager is present, the application must have * the {@link javafx.util.FXPermission} "createTransparentWindow" * in order to create a transparent window. * If the application doesn't have the required permission, it * won't be able to use this feature; it will appear as if the the platform * doesn't support transparent windows, and * {@code Platform.isSupported(TRANSPARENT_WINDOW)} will return {@code false}. * </p> * * @since JavaFX 2.2 */
TRANSPARENT_WINDOW,
Indicates that a system supports StageStyle.UNIFIED

NOTE: Currently, supported on:

  • Windows Vista+: a window is completely filled with the frozen glass effect
  • Mac OS X: a window has the brushed-metal textured background
Since:JavaFX 8.0
/** * Indicates that a system supports {@link javafx.stage.StageStyle#UNIFIED} * <p> * NOTE: Currently, supported on: * <ul> * <li>Windows Vista+: a window is completely filled with the frozen glass effect</li> * <li>Mac OS X: a window has the brushed-metal textured background</li> * </ul> * @since JavaFX 8.0 */
UNIFIED_WINDOW,
Indicates whether or not controls should use two-level focus. Two-level focus is when separate operations are needed in some controls to first enter a control and then to perform operations on the control. Two-level focus is needed on devices that provide directional arrow keys and a select key but do not provide keys for navigating between one control and another. On these devices a focused control may be either internally focused - in which case arrow keys operate on the control - or externally focused, in which case arrow keys are used to navigate focus to other controls.

On embedded platforms JavaFX makes an attempt to initialize this ConditionalFeature based on what input peripherals are attached. On desktop platforms this ConditionalFeature will typically default to false.

Since:JavaFX 8.0
/** * Indicates whether or not controls should use two-level focus. Two-level * focus is when separate operations are needed in some controls to first * enter a control and then to perform operations on the control. Two-level * focus is needed on devices that provide directional arrow keys and a * select key but do not provide keys for navigating between one control * and another. On these devices a focused control may be either internally * focused - in which case arrow keys operate on the control - or * externally focused, in which case arrow keys are used to navigate focus * to other controls. * <p> * On embedded platforms JavaFX makes an attempt to initialize this * ConditionalFeature based on what input peripherals are attached. On * desktop platforms this ConditionalFeature will typically default to * false. * @since JavaFX 8.0 */
TWO_LEVEL_FOCUS,
Indicates whether an on-screen virtual keyboard is used for text input.

On embedded platforms JavaFX makes an attempt to initialize this ConditionalFeature based on what input peripherals are attached. On desktop platforms this ConditionalFeature will typically default to false.

Since:JavaFX 8.0
/** * Indicates whether an on-screen virtual keyboard is used for text input. * <p> * On embedded platforms JavaFX makes an attempt to initialize this * ConditionalFeature based on what input peripherals are attached. On * desktop platforms this ConditionalFeature will typically default to * false. * @since JavaFX 8.0 */
VIRTUAL_KEYBOARD,
Indicates whether or not a touch screen is attached to the device on which JavaFX in running.

On embedded platforms JavaFX makes an attempt to initialize this ConditionalFeature based on what input peripherals are attached. On desktop platforms this ConditionalFeature will typically default to false.

Since:JavaFX 8.0
/** * Indicates whether or not a touch screen is attached to the device on * which JavaFX in running. * <p> * On embedded platforms JavaFX makes an attempt to initialize this * ConditionalFeature based on what input peripherals are attached. On * desktop platforms this ConditionalFeature will typically default to * false. * @since JavaFX 8.0 */
INPUT_TOUCH,
Indicates whether or not a touch screen providing multi-touch input is attached to the device on which JavaFX in running.

On embedded platforms JavaFX makes an attempt to initialize this ConditionalFeature based on what input peripherals are attached. On desktop platforms this ConditionalFeature will typically default to false.

If INPUT_MULTITOUCH is available then INPUT_TOUCH is also available.

Since:JavaFX 8.0
/** * Indicates whether or not a touch screen providing multi-touch input is * attached to the device on which JavaFX in running. * <p> * On embedded platforms JavaFX makes an attempt to initialize this * ConditionalFeature based on what input peripherals are attached. On * desktop platforms this ConditionalFeature will typically default to * false. * <p> * If INPUT_MULTITOUCH is available then INPUT_TOUCH is also available. * @since JavaFX 8.0 */
INPUT_MULTITOUCH,
Indicates whether or not a relative motion pointer device such as a mouse, trackpad or trackball is attached.

On embedded platforms JavaFX makes an attempt to initialize this ConditionalFeature based on what input peripherals are attached. On desktop platforms this ConditionalFeature will typically default to true.

Since:JavaFX 8.0
/** * Indicates whether or not a relative motion pointer device such as a * mouse, trackpad or trackball is attached. * <p> * On embedded platforms JavaFX makes an attempt to initialize this * ConditionalFeature based on what input peripherals are attached. On * desktop platforms this ConditionalFeature will typically default to * true. * @since JavaFX 8.0 */
INPUT_POINTER }