package org.activiti.designer.property.extension.field.validator; import org.activiti.designer.integration.servicetask.validator.FieldValidator; import org.activiti.designer.integration.servicetask.validator.ValidationException; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Spinner; /** * {@link FieldValidator} that validates required period fields. Supports * {@link Composite} controls. * * @author Tiese Barrell * @since 0.6.1 * @version 1 * */ public class PeriodRequiredFieldValidator implements FieldValidator { public PeriodRequiredFieldValidator() { } /* * (non-Javadoc) * * @see org.activiti.designer.integration.servicetask.FieldValidator#validate * (java.lang.Object) */ @Override public void validate(Control control) throws ValidationException { Composite parent = null; if (control instanceof Composite) { parent = (Composite) control; } if (parent == null) { throw new ValidationException( "Unable to validate control because it is not a period's parent composite. This probably means the process node was incorrectly configured"); } boolean atLeastOneSpecified = false; for (final Control currentControl : parent.getChildren()) { if (currentControl instanceof Spinner) { final int elementValue = ((Spinner) currentControl).getSelection(); if (elementValue != 0) { atLeastOneSpecified = true; break; } } } if (!atLeastOneSpecified) { throw new ValidationException("This field is required"); } } }