- java.lang.Object
-
- org.controlsfx.validation.ValidationSupport
-
public class ValidationSupport extends Object
Provides validation support for UI components. The idea is create an instance of this class the component group, usually a panel.
Once created,Validator
s 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: aPredicate
to check the applicability of the control and aCallback
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());
-
-
Constructor Summary
Constructors Constructor Description ValidationSupport()
Creates validation support instance.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description javafx.beans.property.BooleanProperty
errorDecorationEnabledProperty()
Optional<ValidationMessage>
getHighestMessage(javafx.scene.control.Control target)
Returns optional highest severity message for a controlSet<javafx.scene.control.Control>
getRegisteredControls()
Returns currently registered controlsValidationDecoration
getValidationDecorator()
Returns current validation decoratorValidationResult
getValidationResult()
Retrieves current validation resultvoid
initInitialDecoration()
Activates the initial decoration of validated controls.javafx.beans.property.ReadOnlyBooleanProperty
invalidProperty()
Validation state propertyBoolean
isInvalid()
Returns current validation state.static boolean
isRequired(javafx.scene.control.Control c)
Check control's required flagvoid
redecorate()
Redecorates all known components Only decorations related to validation are affected<T> boolean
registerValidator(javafx.scene.control.Control c, boolean required, Validator<T> validator)
RegistersValidator
for specified control with additional possiblity to mark control as required or not.<T> boolean
registerValidator(javafx.scene.control.Control c, Validator<T> validator)
RegistersValidator
for specified control and makes control requiredvoid
revalidate()
Triggers validation for all known components.void
revalidate(javafx.scene.control.Control c)
Triggers validation for the given component.void
setErrorDecorationEnabled(boolean enabled)
static void
setRequired(javafx.scene.control.Control c, boolean required)
Set control's required flagvoid
setValidationDecorator(ValidationDecoration decorator)
Sets new validation decoratorjavafx.beans.property.ObjectProperty<ValidationDecoration>
validationDecoratorProperty()
javafx.beans.property.ReadOnlyObjectProperty<ValidationResult>
validationResultProperty()
Can be used to track validation result changes
-
-
-
Constructor Detail
-
ValidationSupport
public ValidationSupport()
Creates validation support instance.
If initial decoration is desired invokeinitInitialDecoration()
.
-
-
Method Detail
-
setRequired
public static void setRequired(javafx.scene.control.Control c, boolean required)
Set control's required flag- Parameters:
c
- controlrequired
- flag
-
isRequired
public static boolean isRequired(javafx.scene.control.Control c)
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
public void revalidate(javafx.scene.control.Control c)
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
public javafx.beans.property.BooleanProperty errorDecorationEnabledProperty()
-
setErrorDecorationEnabled
public void setErrorDecorationEnabled(boolean enabled)
-
getValidationResult
public ValidationResult getValidationResult()
Retrieves current validation result- Returns:
- validation result
-
validationResultProperty
public javafx.beans.property.ReadOnlyObjectProperty<ValidationResult> validationResultProperty()
Can be used to track validation result changes- Returns:
- The Validation result property.
-
isInvalid
public Boolean isInvalid()
Returns current validation state.- Returns:
- true if there is at least one error
-
invalidProperty
public javafx.beans.property.ReadOnlyBooleanProperty invalidProperty()
Validation state property- Returns:
- validation state property
-
validationDecoratorProperty
public javafx.beans.property.ObjectProperty<ValidationDecoration> validationDecoratorProperty()
- Returns:
- The Validation decorator property
-
getValidationDecorator
public ValidationDecoration getValidationDecorator()
Returns current validation decorator- Returns:
- current validation decorator or null if none
-
setValidationDecorator
public void setValidationDecorator(ValidationDecoration decorator)
Sets new validation decorator- Parameters:
decorator
- new validation decorator. Null value is valid - no decoration will occur
-
registerValidator
public <T> boolean registerValidator(javafx.scene.control.Control c, boolean required, Validator<T> validator)
RegistersValidator
for specified control with additional possiblity to mark control as required or not.- Parameters:
c
- control to validaterequired
- true if controls should be requiredvalidator
-Validator
to be used- Returns:
- true if registration is successful
-
registerValidator
public <T> boolean registerValidator(javafx.scene.control.Control c, Validator<T> validator)
RegistersValidator
for specified control and makes control required- Parameters:
c
- control to validatevalidator
-Validator
to be used- Returns:
- true if registration is successful
-
getRegisteredControls
public Set<javafx.scene.control.Control> getRegisteredControls()
Returns currently registered controls- Returns:
- set of currently registered controls
-
getHighestMessage
public Optional<ValidationMessage> getHighestMessage(javafx.scene.control.Control target)
Returns optional highest severity message for a control- Parameters:
target
- control- Returns:
- Optional highest severity message for a control
-
-