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.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
/**
* {@link FieldValidator} that validates required radio fields. Supports
* {@link Composite} controls.
*
* @author Tiese Barrell
* @since 0.7.0
* @version 1
*
*/
public class RadioRequiredFieldValidator implements FieldValidator {
public RadioRequiredFieldValidator() {
}
/*
* (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 radio's parent composite. This probably means the process node was incorrectly configured");
}
boolean selectionApplied = false;
for (final Control currentControl : parent.getChildren()) {
if (currentControl instanceof Button) {
if (((Button) currentControl).getSelection()) {
selectionApplied = true;
break;
}
}
}
if (!selectionApplied) {
throw new ValidationException("This field is required");
}
}
}