code: private void buildUI() {
  
  		// Attribute select:
  		attributeSelect = new SelectItem("attributeItem");
  		attributeSelect.setWidth(140);
  		attributeSelect.setShowTitle(false);
  		attributeSelect.setValueMap(getSearchableAttributes(layer));
  		attributeSelect.setHint(I18nProvider.getSearch().gridChooseAttribute());
  		attributeSelect.setShowHintInField(true);
  
  		attributeSelect.setValidateOnChange(true);
  		attributeSelect.setShowErrorStyle(true);
  		attributeSelect.setRequired(true);
  
  		// Operator select:
  		operatorSelect = new SelectItem("operatorItem");
  		operatorSelect.setDisabled(true);
  		operatorSelect.setWidth(140);
  		operatorSelect.setShowTitle(false);
  
  		operatorSelect.setValidateOnChange(true);
  		operatorSelect.setShowErrorStyle(true);
  		operatorSelect.setRequired(true);
  
  		// Value form item:
  		valueItem = new AttributeFormItem("valueItem");
  		valueItem.setShowTitle(false);
  		valueItem.setDisabled(true);
  		valueItem.setWidth(150);
  
  		// Mechanisms:
  		attributeSelect.addChangedHandler(new ChangedHandler() {
  
  			public void onChanged(ChangedEvent event) {
  				selectedAttribute = getSelectedAttribute();
  				if (selectedAttribute != null) {
  					// Adjust operator value map and enabled:
  					operatorSelect.setDisabled(false);
  					String[] operators = getOperatorsForAttributeType(selectedAttribute);
  					operatorSelect.setValueMap(operators);
  					operatorSelect.setValue(operators[0]);
  
  					// Adjust value form item and enable:
  					valueItem.setAttributeInfo(selectedAttribute);
  					valueItem.setDisabled(false);
  					valueItem.setWidth(form.getWidth() - 290);
  				}
  			}
  		});
  
  		// Finalize:
  		form = new DynamicForm();
  		form.setNumCols(6);
  		form.setHeight(26);
  		form.setWidth100();
  		form.setFields(attributeSelect, operatorSelect, valueItem);
  		addChild(form);
  	}
docs: -------------------------------------------------------------------------