/** * Removes all listeners from the bound fields and unbinds properties. */ public void unbind() { // wrap in array list to avoid CME for (Field<?> field : new ArrayList<>(getFields())) { field.removeValueChangeListener(this); if (field instanceof TextChangeNotifier) { final TextChangeNotifier abstractTextField = (TextChangeNotifier) field; abstractTextField.removeTextChangeListener(this); } unbind(field); } fieldsWithInitiallyDisabledValidation.clear(); }
/** * Makes all fields "immediate" to trigger eager validation * * @param listener a listener that will be notified when a field in the * group has been modified * @return the MBeanFieldGroup that can be used for further modifications or * e.g. commit if buffered */ public MBeanFieldGroup<T> withEagerValidation(FieldGroupListener<T> listener) { this.listener = listener; for (Field<?> field : getFields()) { // ((AbstractComponent) field).setImmediate(true); field.addValueChangeListener(this); if (field instanceof EagerValidateable) { EagerValidateable ev = (EagerValidateable) field; ev.setEagerValidation(true); } if (field instanceof TextChangeNotifier) { final TextChangeNotifier abstractTextField = (TextChangeNotifier) field; abstractTextField.addTextChangeListener(this); } } return this; }
/** * Adds a <code>TextChangeListener</code> to the Component which gets * fired when the text of the <code>Field</code> changes. * * @param listener The text change listener to add * @return this (for method chaining) * @see * #addTextChangeListener(FieldEvents.TextChangeListener) */ public default S withTextChangeListener(TextChangeListener listener) { ((TextChangeNotifier) this).addTextChangeListener(listener); return (S) this; }