// Path: gwtbootstrap3/src/main/java/org/gwtbootstrap3/client/ui/form/validator/HasValidators.java
// public interface HasValidators<T> extends HasValidationChangedHandlers {
// 
//     /**
//      * Adds the validator.
//      *
//      * @param validator the validator
//      */
//     void addValidator(Validator<T> validator);
//     
//     /**
//      * Gets the validate on blur.
//      *
//      * @return the validate on blur
//      */
//     boolean getValidateOnBlur();
//     
// 
//     /**
//      * Removes the validator.
//      *
//      * @param validator the validator
//      * @return true, if successful
//      */
//     boolean removeValidator(Validator<T> validator);
// 
//     /**
//      * Reset the form element to blank and clear error messages.
//      */
//     void reset();
// 
//     /**
//      * Sets the validate on blur.
//      *
//      * @param validateOnBlur the new validate on blur
//      */
//     void setValidateOnBlur(boolean validateOnBlur);
// 
//     /**
//      * The validators used to validate this object.
//      *
//      * @param validators the new validators
//      */
//     void setValidators(@SuppressWarnings("unchecked") Validator<T>... validators);
// 
//     /**
//      * Validate the field's value using the supplied validators.
//      *
//      * @return true, if valid
//      */
//     boolean validate();
// 
//     /**
//      * Validate the field's value using the supplied validators.
//      *
//      * @param show the error to the user.
//      * @return true, if valid
//      */
//     boolean validate(boolean show);
// 
// }


import java.util.ArrayList;
import java.util.List;
import org.gwtbootstrap3.client.ui.constants.Attributes;
import org.gwtbootstrap3.client.ui.form.validator.HasValidators;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.FormElement;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.safehtml.client.SafeHtmlTemplates;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeUri;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.HasOneWidget;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.NamedFrame;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.impl.FormPanelImpl;
import com.google.gwt.user.client.ui.impl.FormPanelImplHost;
        getFormElement().setTarget(target);
    }

    /**
     * @return true if the child input elements are all valid.
     */
    public boolean validate() {
        return validate(true);
    }

    /**
     * @return true if the child input elements are all valid.
     */
    public boolean validate(boolean show) {
        boolean result = true;
        for (HasValidators<?> child : getChildrenWithValidators(this)) {
            result &= child.validate(show);
        }
        return result;
    }

    /**
     * Get this forms child input elements with validators.
     *
     * @param widget the widget
     * @return the children with validators
     */
    protected List<HasValidators<?>> getChildrenWithValidators(Widget widget) {
        List<HasValidators<?>> result = new ArrayList<HasValidators<?>>();
        if (widget != null) {
// Path: gwtbootstrap3/src/main/java/org/gwtbootstrap3/client/ui/form/validator/HasValidators.java
// public interface HasValidators<T> extends HasValidationChangedHandlers {
// 
//     /**
//      * Adds the validator.
//      *
//      * @param validator the validator
//      */
//     void addValidator(Validator<T> validator);
//     
//     /**
//      * Gets the validate on blur.
//      *
//      * @return the validate on blur
//      */
//     boolean getValidateOnBlur();
//     
// 
//     /**
//      * Removes the validator.
//      *
//      * @param validator the validator
//      * @return true, if successful
//      */
//     boolean removeValidator(Validator<T> validator);
// 
//     /**
//      * Reset the form element to blank and clear error messages.
//      */
//     void reset();
// 
//     /**
//      * Sets the validate on blur.
//      *
//      * @param validateOnBlur the new validate on blur
//      */
//     void setValidateOnBlur(boolean validateOnBlur);
// 
//     /**
//      * The validators used to validate this object.
//      *
//      * @param validators the new validators
//      */
//     void setValidators(@SuppressWarnings("unchecked") Validator<T>... validators);
// 
//     /**
//      * Validate the field's value using the supplied validators.
//      *
//      * @return true, if valid
//      */
//     boolean validate();
// 
//     /**
//      * Validate the field's value using the supplied validators.
//      *
//      * @param show the error to the user.
//      * @return true, if valid
//      */
//     boolean validate(boolean show);
// 
// }


// Path: gwtbootstrap3/src/main/java/org/gwtbootstrap3/client/ui/base/form/AbstractForm.java
import java.util.ArrayList;
import java.util.List;
import org.gwtbootstrap3.client.ui.constants.Attributes;
import org.gwtbootstrap3.client.ui.form.validator.HasValidators;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.FormElement;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.safehtml.client.SafeHtmlTemplates;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeUri;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.HasOneWidget;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.NamedFrame;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.impl.FormPanelImpl;
import com.google.gwt.user.client.ui.impl.FormPanelImplHost;

        getFormElement().setTarget(target);
    }

    /**
     * @return true if the child input elements are all valid.
     */
    public boolean validate() {
        return validate(true);
    }

    /**
     * @return true if the child input elements are all valid.
     */
    public boolean validate(boolean show) {
        boolean result = true;
        for (HasValidators<?> child : getChildrenWithValidators(this)) {
            result &= child.validate(show);
        }
        return result;
    }

    /**
     * Get this forms child input elements with validators.
     *
     * @param widget the widget
     * @return the children with validators
     */
    protected List<HasValidators<?>> getChildrenWithValidators(Widget widget) {
        List<HasValidators<?>> result = new ArrayList<HasValidators<?>>();
        if (widget != null) {
            if (widget instanceof HasValidators<?>) {