java.lang.Object
org.controlsfx.validation.ValidationSupport
Provides validation support for UI components. The idea is create an instance of this class the component group, usually a panel.
Once created,
Once created,
Validators can be registered for components, to provide the validation:
ValidationSupport validationSupport = new ValidationSupport();
validationSupport.registerValidator(textField, Validator.createEmptyValidator("Text is required"));
validationSupport.registerValidator(combobox, Validator.createEmptyValidator( "ComboBox Selection required"));
validationSupport.registerValidator(checkBox, (Control c, Boolean newValue) ->
ValidationResult.fromErrorIf( c, "Checkbox should be checked", !newValue)
);
validationResultProperty provides an ability to react on overall validation result changes:
validationSupport.validationResultProperty().addListener( (o, oldValue, newValue) ->
messageList.getItems().setAll(newValue.getMessages()));
Standard JavaFX UI controls are supported out of the box. There is also an ability to add support for custom controls.
To do that "observable value extractor" should be added for specific controls. Such "extractor" consists of two functional interfaces:
a Predicate to check the applicability of the control and a Callback to extract control's observable value.
Here is an sample of internal registration of such "extractor" for a few controls :
ValueExtractor.addObservableValueExtractor( c -> c instanceof TextInputControl, c -> ((TextInputControl)c).textProperty());
ValueExtractor.addObservableValueExtractor( c -> c instanceof ComboBox, c -> ((ComboBox<?>)c).getValue());
-
Property Summary
PropertiesTypePropertyDescriptionValidation state propertyCan be used to track validation result changes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetHighestMessage(Control target) Returns optional highest severity message for a controlReturns currently registered controlsReturns current validation decoratorRetrieves current validation resultvoidActivates the initial decoration of validated controls.Validation state propertyReturns current validation state.static booleanCheck control's required flagvoidRedecorates all known components Only decorations related to validation are affected<T> booleanregisterValidator(Control c, boolean required, Validator<T> validator) RegistersValidatorfor specified control with additional possiblity to mark control as required or not.<T> booleanregisterValidator(Control c, Validator<T> validator) RegistersValidatorfor specified control and makes control requiredvoidTriggers validation for all known components.voidTriggers validation for the given component.voidsetErrorDecorationEnabled(boolean enabled) Sets the value of the property errorDecorationEnabled.static voidsetRequired(Control c, boolean required) Set control's required flagvoidsetValidationDecorator(ValidationDecoration decorator) Sets new validation decoratorCan be used to track validation result changes
-
Property Details
-
errorDecorationEnabled
- See Also:
-
validationResult
Can be used to track validation result changes- See Also:
-
invalid
Validation state property- See Also:
-
validationDecorator
-
-
Constructor Details
-
ValidationSupport
public ValidationSupport()Creates validation support instance.
If initial decoration is desired invokeinitInitialDecoration().
-
-
Method Details
-
setRequired
Set control's required flag- Parameters:
c- controlrequired- flag
-
isRequired
Check control's required flag- Parameters:
c- control- Returns:
- true if required
-
initInitialDecoration
public void initInitialDecoration()Activates the initial decoration of validated controls.
By default the decoration will only be applied after the first change of one validated controls value. -
redecorate
public void redecorate()Redecorates all known components Only decorations related to validation are affected -
revalidate
public void revalidate()Triggers validation for all known components. It is only necessary to call this if it is needed to revalidate even if the value of the control has not changed. -
revalidate
Triggers validation for the given component. It is only necessary to call this if it is needed to revalidate even if the value of the control has not changed. -
errorDecorationEnabledProperty
- See Also:
-
setErrorDecorationEnabled
public void setErrorDecorationEnabled(boolean enabled) Sets the value of the property errorDecorationEnabled.- Property description:
-
getValidationResult
Retrieves current validation result- Returns:
- validation result
-
validationResultProperty
Can be used to track validation result changes- See Also:
-
isInvalid
Returns current validation state.- Returns:
- true if there is at least one error
-
invalidProperty
Validation state property- See Also:
-
validationDecoratorProperty
-
getValidationDecorator
Returns current validation decorator- Returns:
- current validation decorator or null if none
-
setValidationDecorator
Sets new validation decorator- Parameters:
decorator- new validation decorator. Null value is valid - no decoration will occur
-
registerValidator
RegistersValidatorfor specified control with additional possiblity to mark control as required or not.- Parameters:
c- control to validaterequired- true if controls should be requiredvalidator-Validatorto be used- Returns:
- true if registration is successful
-
registerValidator
RegistersValidatorfor specified control and makes control required- Parameters:
c- control to validatevalidator-Validatorto be used- Returns:
- true if registration is successful
-
getRegisteredControls
Returns currently registered controls- Returns:
- set of currently registered controls
-
getHighestMessage
Returns optional highest severity message for a control- Parameters:
target- control- Returns:
- Optional highest severity message for a control
-