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    import java.util.List;
024    
025    import com.google.gwt.editor.client.Editor;
026    import com.google.gwt.editor.client.EditorError;
027    
028    /**
029     * An input validator.
030     *
031     * @param <T> the type.
032     * @author Steven Jardine
033     */
034    public interface Validator<T> {
035    
036        /**
037         * Represents the priority of a validator.
038         */
039        public static class Priority {
040            
041            /** HIGHEST priority */
042            public static final int HIGHEST = 0;
043    
044            /** HIGH priority */
045            public static final int HIGH = 25;
046    
047            /** MEDIUM priority */
048            public static final int MEDIUM = 50;
049    
050            /** LOW priority */
051            public static final int LOW = 75;
052    
053            /** LOWEST priority */
054            public static final int LOWEST = 100;
055            
056        }
057    
058        /**
059         * Priority value for this validator. Lower the number, higher the priority.
060         * @return the priority.
061         */
062        int getPriority();
063    
064        /**
065         * Validate the field.
066         *
067         * @param editor the {@link Editor}.
068         * @param value the value
069         * @return the list
070         */
071        List<EditorError> validate(Editor<T> editor, T value);
072    
073    }