Author: tchemit Date: 2013-03-15 01:18:16 +0100 (Fri, 15 Mar 2013) New Revision: 2625 Url: http://nuiton.org/projects/jaxx/repository/revisions/2625 Log: fixes #2596: [ConfigUI] Deal with application config array type options Modified: trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/ConfigUIModel.java trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/OptionModel.java Modified: trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/ConfigUIModel.java =================================================================== --- trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/ConfigUIModel.java 2013-03-15 00:17:27 UTC (rev 2624) +++ trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/ConfigUIModel.java 2013-03-15 00:18:16 UTC (rev 2625) @@ -24,7 +24,9 @@ * #L% */ +import com.google.common.base.Joiner; import com.google.common.base.Supplier; +import com.google.common.collect.Lists; import jaxx.runtime.JAXXUtil; import org.apache.commons.beanutils.PropertyUtils; import org.nuiton.util.config.ApplicationConfig; @@ -32,6 +34,7 @@ import javax.swing.Icon; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; @@ -46,7 +49,7 @@ * Ce modele contient les catégories des options. * * @author tchemit <chemit@codelutin.com> - * @since 2.5.11 + * @since 2.5.11 */ public class ConfigUIModel implements Iterable<CategoryModel> { @@ -251,9 +254,25 @@ // simple option with no javabeans, just push the option // value - applicationConfig.setOption(option.getKey(), - value == null ? - null : value.toString()); + + String toSave; + if (value == null) { + toSave = null; + } else { + + if (option.getType().isArray()) { + int length = Array.getLength(value); + List<Object> values = Lists.newArrayListWithCapacity(length); + for (int i = 0; i < length; i++) { + values.add(Array.get(value, i)); + } + toSave = Joiner.on(",").join(values); + } else { + toSave = value.toString(); + } + } + applicationConfig.setOption(option.getKey(), toSave); + } // l'option a été sauvegardée, on la marque option.setSaved(true); Modified: trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/OptionModel.java =================================================================== --- trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/OptionModel.java 2013-03-15 00:17:27 UTC (rev 2624) +++ trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/OptionModel.java 2013-03-15 00:18:16 UTC (rev 2625) @@ -24,6 +24,7 @@ * #L% */ +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ObjectUtils; import org.nuiton.util.config.ConfigOptionDef; @@ -127,7 +128,13 @@ } public boolean isModified() { - return ObjectUtils.notEqual(originalValue, value); + boolean result; + if (getType().isArray()) { + result = !ArrayUtils.isEquals(originalValue, value); + } else { + result = ObjectUtils.notEqual(originalValue, value); + } + return result; } public boolean isValid() {
participants (1)
-
tchemit@users.nuiton.org