package com.smartgwt.client.widgets.form.validator; /** * <br>RequiredIf type validators should be specified with an <code>expression</code> which takes three parameters: <ul> * <li>item - the DynamicForm item on which the error occurred (may be null)</li> <li>validator - a pointer to the * validator object</li> <li>value - the value of the field in question</li> </ul> * <p/> * When validation is perfomed, the expression will be evaluated - if it returns <code>true</code>, the field will be * treated as a required field, so validation will fail if the field has no value. */ public class RequiredIfValidator extends Validator { public RequiredIfValidator() { setAttribute("type", "requiredIf"); } public RequiredIfValidator(RequiredIfFunction expression) { this(); setExpression(expression); } /** * Set the expression. * * @param expression the expression */ public native void setExpression(RequiredIfFunction expression) /*-{ var self = this.@com.smartgwt.client.core.DataClass::getJsObj()(); self.expression = function(item, validator, value) { var itemJ = @com.smartgwt.client.core.RefDataClass::getRef(Lcom/google/gwt/core/client/JavaScriptObject;)(item); if(itemJ == null) { itemJ = @com.smartgwt.client.widgets.form.fields.FormItem::new(Lcom/google/gwt/core/client/JavaScriptObject;)(item); } var valueJ = $wnd.SmartGWT.convertToJavaType(value); return expression.@com.smartgwt.client.widgets.form.validator.RequiredIfFunction::execute(Lcom/smartgwt/client/widgets/form/fields/FormItem;Ljava/lang/Object;)(itemJ, valueJ); }; }-*/; }