001    package org.gwtbootstrap3.client.ui.form.validator;
002    
003    /*
004     * #%L
005     * GwtBootstrap3
006     * %%
007     * Copyright (C) 2015 GwtBootstrap3
008     * %%
009     * Licensed under the Apache License, Version 2.0 (the "License");
010     * you may not use this file except in compliance with the License.
011     * You may obtain a copy of the License at
012     * 
013     *      http://www.apache.org/licenses/LICENSE-2.0
014     * 
015     * Unless required by applicable law or agreed to in writing, software
016     * distributed under the License is distributed on an "AS IS" BASIS,
017     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018     * See the License for the specific language governing permissions and
019     * limitations under the License.
020     * #L%
021     */
022    
023    /**
024     * Should use when implementing classes with {@link Validator}s.
025     * 
026     * @param <T> the generic type
027     * @author Steven Jardine
028     */
029    public interface HasValidators<T> {
030    
031        /**
032         * Adds the validator.
033         *
034         * @param validator the validator
035         */
036        void addValidator(Validator<T> validator);
037    
038        /**
039         * Gets the validate on blur.
040         *
041         * @return the validate on blur
042         */
043        boolean getValidateOnBlur();
044    
045        /**
046         * Reset the form element to blank and clear error messages.
047         */
048        void reset();
049    
050        /**
051         * Sets the validate on blur.
052         *
053         * @param validateOnBlur the new validate on blur
054         */
055        void setValidateOnBlur(boolean validateOnBlur);
056    
057        /**
058         * The validators used to validate this object.
059         *
060         * @param validators the new validators
061         */
062        void setValidators(Validator<T>... validators);
063    
064        /**
065         * Validate the field's value using the supplied validators.
066         *
067         * @return true, if valid
068         */
069        boolean validate();
070    
071        /**
072         * Validate the field's value using the supplied validators.
073         *
074         * @param show the error to the user.
075         * @return true, if valid
076         */
077        boolean validate(boolean show);
078    
079    }