Class ValidationSupport

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, 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 Details

  • Constructor Details

    • ValidationSupport

      public ValidationSupport()
      Creates validation support instance.
      If initial decoration is desired invoke initInitialDecoration().
  • Method Details

    • setRequired

      public static void setRequired(javafx.scene.control.Control c, boolean required)
      Set control's required flag
      Parameters:
      c - control
      required - 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()
      Returns:
      the errorDecorationEnabled property
      See Also:
    • setErrorDecorationEnabled

      public void setErrorDecorationEnabled(boolean enabled)
      Sets the value of the errorDecorationEnabled property.
      Property description:
      Parameters:
      enabled - the value for the errorDecorationEnabled property
      See Also:
    • 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.
      See Also:
    • 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
      See Also:
    • validationDecoratorProperty

      public javafx.beans.property.ObjectProperty<ValidationDecoration> validationDecoratorProperty()
      Returns:
      The Validation decorator property
      See Also:
    • 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)
      Registers Validator for specified control with additional possiblity to mark control as required or not.
      Parameters:
      c - control to validate
      required - true if controls should be required
      validator - Validator to be used
      Returns:
      true if registration is successful
    • registerValidator

      public <T> boolean registerValidator(javafx.scene.control.Control c, Validator<T> validator)
      Registers Validator for specified control and makes control required
      Parameters:
      c - control to validate
      validator - 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