From: Joonas Lehtinen Date: Fri, 24 Oct 2008 18:45:02 +0000 (+0000) Subject: Teached the base field factory to understand method naming conventions and thus to... X-Git-Tag: 6.7.0.beta1~3926 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=6ed1879a931f12218f759b880fddf37fae778f72;p=vaadin-framework.git Teached the base field factory to understand method naming conventions and thus to give sane defaults for captions from properties. For example it now uses "First Name" as a caption for "firstName" -property. svn changeset:5725/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/ui/BaseFieldFactory.java b/src/com/itmill/toolkit/ui/BaseFieldFactory.java index 3e9e3666f2..aa46480261 100644 --- a/src/com/itmill/toolkit/ui/BaseFieldFactory.java +++ b/src/com/itmill/toolkit/ui/BaseFieldFactory.java @@ -91,7 +91,44 @@ public class BaseFieldFactory implements FieldFactory { final Field f = createField(item.getItemProperty(propertyId), uiContext); if (f instanceof AbstractComponent) { - ((AbstractComponent) f).setCaption(propertyId.toString()); + String name = propertyId.toString(); + if (name.length() > 0) { + + // If name follows method naming conventions, convert the + // name to spaced uppercased text. For example, convert + // "firstName" to "First Name" + if (name.indexOf(' ') < 0 + && name.charAt(0) == Character.toLowerCase(name + .charAt(0)) + && name.charAt(0) != Character.toUpperCase(name + .charAt(0))) { + StringBuffer out = new StringBuffer(); + out.append(Character.toUpperCase(name.charAt(0))); + int i = 1; + + while (i < name.length()) { + int j = i; + for (; j < name.length(); j++) { + char c = name.charAt(j); + if (Character.toLowerCase(c) != c + && Character.toUpperCase(c) == c) { + break; + } + } + if (j == name.length()) { + out.append(name.substring(i)); + } else { + out.append(name.substring(i, j)); + out.append(" " + name.charAt(j)); + } + i = j + 1; + } + + name = out.toString(); + } + + ((AbstractComponent) f).setCaption(name); + } } return f; } else {