[Buix-commits] r1212 - jaxx/trunk/jaxx-runtime-validator-swing/src/main/java/jaxx/runtime/validator/swing
Author: tchemit Date: 2009-02-04 22:46:50 +0000 (Wed, 04 Feb 2009) New Revision: 1212 Modified: jaxx/trunk/jaxx-runtime-validator-swing/src/main/java/jaxx/runtime/validator/swing/SwingValidator.java Log: when changing contextname, must after all reinject none ui listeners Modified: jaxx/trunk/jaxx-runtime-validator-swing/src/main/java/jaxx/runtime/validator/swing/SwingValidator.java =================================================================== --- jaxx/trunk/jaxx-runtime-validator-swing/src/main/java/jaxx/runtime/validator/swing/SwingValidator.java 2009-02-04 22:45:36 UTC (rev 1211) +++ jaxx/trunk/jaxx-runtime-validator-swing/src/main/java/jaxx/runtime/validator/swing/SwingValidator.java 2009-02-04 22:46:50 UTC (rev 1212) @@ -1,6 +1,7 @@ package jaxx.runtime.validator.swing; import jaxx.runtime.validator.BeanValidator; +import jaxx.runtime.validator.ValidatorErrorListener; import jaxx.runtime.validator.ValidatorField; import jaxx.runtime.validator.swing.ui.AbstractBeanValidatorUI; import jaxx.runtime.validator.swing.ui.IconValidationUI; @@ -13,7 +14,9 @@ import java.awt.Container; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -151,9 +154,32 @@ @Override public void setContextName(String contextName) { + Map<ValidatorField<B>, List<ValidatorErrorListener>> oldListeners = new HashMap<ValidatorField<B>, List<ValidatorErrorListener>>(); + + + for (ValidatorField<B> field : fields) { + ValidatorErrorListener[] listeners = field.getValidatorErrorListeners(); + List<ValidatorErrorListener> toReinject = new ArrayList<ValidatorErrorListener>(); + for (ValidatorErrorListener listener : listeners) { + if (listener instanceof AbstractBeanValidatorUI) { + // this listener will be reinject via installUIs method + continue; + } + toReinject.add(listener); + } + oldListeners.put(field, toReinject); + } super.setContextName(contextName); // must reinstall ui installUIs(); + // reinject none ui listeners + for (Entry<ValidatorField<B>, List<ValidatorErrorListener>> entry : oldListeners.entrySet()) { + ValidatorField<B> field = getField(entry.getKey().getName()); + for (ValidatorErrorListener listener : entry.getValue()) { + field.addValidatorErrorListener(listener); + } + } + oldListeners.clear(); } /**
participants (1)
-
tchemit@users.labs.libre-entreprise.org