package org.simantics.plant3d.dialog; import org.eclipse.jface.viewers.LabelProvider; import org.simantics.plant3d.utils.Item; public class ComponentLabelProvider extends LabelProvider{ @Override public String getText(Object element) { Item item = (Item)element; 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(); } }