package net.sourceforge.pmd.eclipse.ui.preferences.br; import java.lang.reflect.Method; import java.util.Date; import net.sourceforge.pmd.RulePriority; import net.sourceforge.pmd.eclipse.plugin.UISettings; import net.sourceforge.pmd.eclipse.ui.preferences.editors.MethodEditorFactory; import net.sourceforge.pmd.eclipse.ui.preferences.editors.MultiTypeEditorFactory; import net.sourceforge.pmd.eclipse.util.Util; import net.sourceforge.pmd.lang.Language; import net.sourceforge.pmd.lang.LanguageVersion; import net.sourceforge.pmd.util.ClassUtil; /** * * @author Brian Remedios */ public interface ValueFormatter { ValueFormatter StringFormatter = new BasicValueFormatter(null) { public void format(Object value, StringBuilder target) { target.append(value == null ? "" : value); } public String format(Object value) { return value == null ? "" : value.toString(); } }; ValueFormatter MultiStringFormatter = new BasicValueFormatter(null) { public void format(Object value, StringBuilder target) { target.append('['); Util.asString((Object[])value, ", ", target); target.append(']'); } }; ValueFormatter NumberFormatter = new BasicValueFormatter(null) { public void format(Object value, StringBuilder target) { target.append(value == null ? "?" : value); } }; ValueFormatter BooleanFormatter = new BasicValueFormatter(null) { public void format(Object value, StringBuilder target) { target.append(value == null ? "?" : value); } }; ValueFormatter TypeFormatter = new BasicValueFormatter(null) { public void format(Object value, StringBuilder target) { target.append(value == null ? "" : ClassUtil.asShortestName((Class<?>)value)); } }; ValueFormatter MultiTypeFormatter = new BasicValueFormatter(null) { public void format(Object value, StringBuilder target) { target.append('['); Util.asString(MultiTypeEditorFactory.shortNamesFor((Class<?>[])value), ", ", target); target.append(']'); } }; ValueFormatter MethodFormatter = new BasicValueFormatter(null) { public void format(Object value, StringBuilder target) { if (value == null) return; target.append( Util.signatureFor((Method) value, MethodEditorFactory.UnwantedPrefixes) ); } }; ValueFormatter MultiMethodFormatter = new BasicValueFormatter(null) { public void format(Object value, StringBuilder target) { target.append('['); Object[] methods = ((Object[])value); if (methods == null || methods.length == 0) { target.append(']'); return; } MethodFormatter.format(methods[0], target); for (int i=1; i<methods.length; i++) { target.append(','); MethodFormatter.format(methods[i], target); } target.append(']'); } }; ValueFormatter ObjectFormatter = new BasicValueFormatter(null) { public void format(Object value, StringBuilder target) { target.append(value == null ? "" : value); } }; ValueFormatter ObjectArrayFormatter = new BasicValueFormatter(null) { public void format(Object value, StringBuilder target) { target.append('['); Util.asString((Object[])value, ", ", target); target.append(']'); } }; // ================================================================= ValueFormatter PriorityFormatter = new BasicValueFormatter(null) { public String format(Object value) { return UISettings.labelFor((RulePriority)value); } }; ValueFormatter LanguageFormatter = new BasicValueFormatter(null) { public String format(Object value) { return ((Language)value).getName(); } }; ValueFormatter LanguageVersionFormatter = new BasicValueFormatter(null) { public String format(Object value) { return ((LanguageVersion)value).getName(); } }; ValueFormatter DateFromLongFormatter = new BasicValueFormatter("Date") { public String format(Object value) { return new Date((Long)value).toString(); } }; ValueFormatter TimeFromLongFormatter = new BasicValueFormatter("Time") { public String format(Object value) { return new Date((Long)value).toString(); } }; ValueFormatter[] TimeFormatters = new ValueFormatter[] { DateFromLongFormatter }; String format(Object value); void format(Object value, StringBuilder target); }