@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; }
/** {@inheritDoc} */ public void allBindingsChanged(BindingProvider provider) { super.allBindingsChanged(provider); if (bindingsExist()) { activeService.activate(); } else { activeService.deactivate(); } }
/** {@inheritDoc} */ public void bindingChanged(BindingProvider provider, String itemName) { super.bindingChanged(provider, itemName); if (bindingsExist()) { activeService.activate(); } else { activeService.deactivate(); } }
/** * Removes <code>provider</code> from the list of providers. If there is no provider left the * refresh thread is getting interrupted. * * @param provider the {@link BindingProvider} to remove */ public void removeBindingProvider(P provider) { super.removeBindingProvider(provider); // if there are no binding providers there is no need to run this // refresh thread any longer ... if (this.providers.size() == 0) { activeService.deactivate(); } }
/** * Adds <code>provider</code> to the list of {@link BindingProvider}s and adds <code>this</code> * as {@link BindingChangeListener}. If <code>provider</code> contains any binding an the * refresh-Thread is stopped it will be started. * * @param provider the new {@link BindingProvider} to add */ public void addBindingProvider(P provider) { super.addBindingProvider(provider); activeService.activate(); }
/** {@inheritDoc} */ public void bindingChanged(BindingProvider provider, String itemName) { super.bindingChanged(provider, itemName); }