Package com.eviware.x.form

Source Code of com.eviware.x.form.AbstractXFormField

/*
* Copyright 2004-2014 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/

package com.eviware.x.form;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.eviware.x.form.validators.RequiredValidator;

public abstract class AbstractXFormField<T> implements XFormField {
    private Set<XFormFieldListener> listeners;
    private List<XFormFieldValidator> validators;
    private RequiredValidator requiredValidator;
    private ComponentEnabler enabler = null;

    public AbstractXFormField() {
    }

    @Override
    public boolean isVisible() {
        return true;
    }

    public abstract T getComponent();

    public void addFormFieldListener(XFormFieldListener listener) {
        if (listeners == null) {
            listeners = new HashSet<XFormFieldListener>();
        }

        listeners.add(listener);
    }

    public void addFormFieldValidator(XFormFieldValidator validator) {
        if (validators == null) {
            validators = new ArrayList<XFormFieldValidator>();
        }

        validators.add(validator);
    }

    public void addComponentEnabler(XFormField tf, String value) {
        if (enabler == null) {
            enabler = new ComponentEnabler(this);
        }
        enabler.add(tf, value);
    }

    public boolean isRequired() {
        return requiredValidator != null;
    }

    public void removeFieldListener(XFormFieldListener listener) {
        if (listeners != null) {
            listeners.remove(listener);
        }
    }

    public void removeFormFieldValidator(XFormFieldValidator validator) {
        if (validators != null) {
            validators.remove(validator);
        }
    }

    public void setRequired(boolean required, String message) {
        if (requiredValidator != null) {
            removeFormFieldValidator(requiredValidator);
        }

        if (required) {
            requiredValidator = new RequiredValidator(message);
            addFormFieldValidator(requiredValidator);
        }
    }

    public ValidationMessage[] validate() {
        if (validators == null || validators.isEmpty()) {
            return null;
        }

        ArrayList<ValidationMessage> messages = new ArrayList<ValidationMessage>();

        for (XFormFieldValidator validator : validators) {
            ValidationMessage[] validateField = validator.validateField(this);
            if (validateField != null && validateField.length > 0) {
                messages.addAll(Arrays.asList(validateField));
            }
        }

        return messages.toArray(new ValidationMessage[messages.size()]);
    }

    protected void fireValueChanged(String newValue, String oldValue) {
        if (listeners == null) {
            return;
        }

        for (XFormFieldListener listener : listeners) {
            listener.valueChanged(this, newValue, oldValue);
        }
    }

    public Object getProperty(String name) {
        return null;
    }

    public abstract void setProperty(String name, Object value);

    public boolean isMultiRow() {
        return false;
    }
}
TOP

Related Classes of com.eviware.x.form.AbstractXFormField

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.