@Override
public String getText(Object element) {
Item item = (Item)element;
- return item.getName();
+ String label = item.getLabel();
+ return label != null ? label : fromCamelCase(item.getName());
}
-
-
+ private static String fromCamelCase(String name) {
+ StringBuilder b = new StringBuilder(name);
+ for (int i = 0; i < b.length(); i++) {
+ char ch = b.charAt(i);
+ if (i == 0 && Character.isLowerCase(ch)) {
+ b.setCharAt(i, Character.toUpperCase(ch));
+ }
+ else if (ch == '_') {
+ if (i == 0 || b.charAt(i-1) == ' ') {
+ b.deleteCharAt(i);
+ i--;
+ }
+ else {
+ b.setCharAt(i, ' ');
+ }
+ }
+ else if (i >= 2 && Character.isLowerCase(ch) &&
+ Character.isUpperCase(b.charAt(i-1)) &&
+ b.charAt(i-2) != ' ') {
+ b.insert(i-1, ' ');
+ i++;
+ }
+ }
+
+ return b.toString();
+ }
}