Author: tchemit Date: 2013-03-15 07:53:40 +0100 (Fri, 15 Mar 2013) New Revision: 2627 Url: http://nuiton.org/projects/jaxx/repository/revisions/2627 Log: refs #2596: [ConfigUI] Deal with application config array type options (improve i18n) Modified: trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigCategoryUIHandler.java trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableRenderer.java 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/ConfigCategoryUIHandler.java =================================================================== --- trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigCategoryUIHandler.java 2013-03-15 00:18:32 UTC (rev 2626) +++ trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigCategoryUIHandler.java 2013-03-15 06:53:40 UTC (rev 2627) @@ -29,6 +29,7 @@ import jaxx.runtime.swing.config.model.OptionModel; import jaxx.runtime.swing.renderer.ClassTableCellRenderer; import jaxx.runtime.swing.renderer.ColorCellRenderer; +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -107,7 +108,9 @@ } else { buffer.append(_("config.option.label", option.getKey(), _(option.getDescription()))).append('\n'); if (option.isModified()) { - buffer.append(_("config.option.modified", option.getOriginalValue(), option.getValue())).append('\n'); + String oValue = option.toString(option.getOriginalValue()); + String mValue = option.toString(option.getValue()); + buffer.append(_("config.option.modified", oValue, mValue)).append('\n'); } if (option.isFinal()) { buffer.append(_("config.option.final")).append('\n'); @@ -115,4 +118,5 @@ } description.setText(buffer.toString()); } + } Modified: trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableRenderer.java =================================================================== --- trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableRenderer.java 2013-03-15 00:18:32 UTC (rev 2626) +++ trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/ConfigTableRenderer.java 2013-03-15 06:53:40 UTC (rev 2627) @@ -88,7 +88,7 @@ protected Component getKeyCellRenderer(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column, OptionModel key, boolean isValid, boolean isModified) { String tooltip = _(key.getDescription()); - Object originalValue = key.getOriginalValue(); + String originalValue = key.toString(key.getOriginalValue()); boolean isFinal = key.isFinal(); if (isFinal) { tooltip += " [" + _("config.unmodifiable") + ']'; 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:18:32 UTC (rev 2626) +++ trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/ConfigUIModel.java 2013-03-15 06:53:40 UTC (rev 2627) @@ -260,7 +260,7 @@ toSave = null; } else { - if (option.getType().isArray()) { + if (option.isArrayType()) { int length = Array.getLength(value); List<Object> values = Lists.newArrayListWithCapacity(length); for (int i = 0; i < length; i++) { 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:18:32 UTC (rev 2626) +++ trunk/jaxx-config/src/main/java/jaxx/runtime/swing/config/model/OptionModel.java 2013-03-15 06:53:40 UTC (rev 2627) @@ -80,6 +80,10 @@ return def.getType(); } + public boolean isArrayType() { + return getType().isArray(); + } + @Override public String getDescription() { return def.getDescription(); @@ -129,7 +133,7 @@ public boolean isModified() { boolean result; - if (getType().isArray()) { + if (isArrayType()) { result = !ArrayUtils.isEquals(originalValue, value); } else { result = ObjectUtils.notEqual(originalValue, value); @@ -181,4 +185,27 @@ protected void setPropertyName(String propertyName) { this.propertyName = propertyName; } + + /** + * Get a string value of the given {@code value} considered as a value of + * this option, means if option is array type, then we will decorate the + * value as a array. + * + * @param value value to decorate + * @return decorated value + * @since 2.5.14 + */ + public String toString( Object value) { + String result; + if (value == null) { + result = null; + } else { + if (isArrayType()) { + result = ArrayUtils.toString(value); + } else { + result = String.valueOf(value); + } + } + return result; + } }