/* * SoapUI, Copyright (C) 2004-2016 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 com.eviware.x.form.validators.RequiredValidator; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; 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; } }