@Override public ValidationIssue<RequiredBindingValidationRule<T>, T> applyValidation(final T object) { final FlexoModelObject validatedObject = object; BindingDefinition bd = (BindingDefinition) validatedObject.objectForKey(bindingDefinition); AbstractBinding bv = (AbstractBinding) validatedObject.objectForKey(bindingName); if (bd == null) { logger.warning( "Object of type " + object.getClass().getName() + " does not define any '" + bindingDefinition + "' binding definition"); return null; } else if (bd.getIsMandatory()) { if ((bv == null) || (!bv.isBindingValid())) { ValidationError<RequiredBindingValidationRule<T>, T> error; if (bv == null) { error = new ValidationError<RequiredBindingValidationRule<T>, T>(this, object, null) { @Override public String getLocalizedMessage() { return getLocalizedErrorMessageForUndefinedValue(); } }; } else { // !bv.isBindingValid() error = new ValidationError<RequiredBindingValidationRule<T>, T>(this, object, null) { @Override public String getLocalizedMessage() { return getLocalizedErrorMessageForInvalidValue(); } }; } if (object instanceof IEWidget) { error.addToFixProposals(new AddEntryToComponentAndSetBinding(bindingName, bd)); } Vector allAvailableBV = bd.searchMatchingBindingValue((Bindable) validatedObject, 2); for (int i = 0; i < allAvailableBV.size(); i++) { BindingValue proposal = (BindingValue) allAvailableBV.elementAt(i); error.addToFixProposals(new SetBinding(proposal)); } return error; } return null; } return null; }
protected static ParameterDefinition[] buildParameters(BindingDefinition bd) { ParameterDefinition[] returned = new ParameterDefinition[3]; returned[0] = new TextFieldParameter("variableName", "variable_name", ""); returned[1] = new DMEntityParameter("variableType", "variable_type", bd.getType().getBaseEntity()); returned[2] = new ChoiceListParameter<DMPropertyImplementationType>( "implementationType", "implementation_type", DMPropertyImplementationType.PUBLIC_FIELD); returned[2].addParameter("format", "localizedName"); return returned; }