Author: tchemit Date: 2010-09-11 14:46:36 +0200 (Sat, 11 Sep 2010) New Revision: 2085 Url: http://nuiton.org/repositories/revision/jaxx/2085 Log: Anomalie #864: Validator fields are not refresh when validation changes his context name Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/validator/swing/SwingValidatorUtil.java Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/validator/swing/SwingValidatorUtil.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/validator/swing/SwingValidatorUtil.java 2010-09-11 12:24:18 UTC (rev 2084) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/validator/swing/SwingValidatorUtil.java 2010-09-11 12:46:36 UTC (rev 2085) @@ -24,14 +24,22 @@ */ package jaxx.runtime.validator.swing; +import jaxx.runtime.JAXXValidator; import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.BeanValidatorScope; import jaxx.runtime.validator.BeanValidatorUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.*; +import javax.swing.ImageIcon; +import javax.swing.JComponent; +import javax.swing.JList; +import javax.swing.JTable; +import javax.swing.RowSorter; +import javax.swing.SortOrder; import java.awt.event.MouseListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.Arrays; import static org.nuiton.i18n.I18n.n_; @@ -225,4 +233,27 @@ } return icon; } + + /** + * Method to listen the modification of the context name and at each time + * reload fields of the ui. + * + * @param validator validator to listen + * @param ui ui to refresh when context name has changed + * @since 2.2.1 + */ + public static void listenValidatorContextNameAndRefreshFields(SwingValidator<?> validator, final JAXXValidator ui) { + PropertyChangeListener listener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + SwingValidator<?> validator = (SwingValidator<?>) evt.getSource(); + log.info("Context name changed to [" + evt.getNewValue() + "] for validator " + validator.getBeanClass()); + ui.registerValidatorFields(); + } + }; + validator.addPropertyChangeListener( + SwingValidator.CONTEXT_NAME_PROPERTY, + listener + ); + } }