X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fdialog%2FComponentLabelProvider.java;h=d680aeb04e7352c3794f891b1119f4654fddbbb1;hb=b402711239498596d7dfada0c66bc6627e37e7e6;hp=ab32c89450fd079b51c7833caa49f854b535fad5;hpb=22bb24d2a7e26c70b0dd4c57080f2c25ac3d40a8;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/dialog/ComponentLabelProvider.java b/org.simantics.plant3d/src/org/simantics/plant3d/dialog/ComponentLabelProvider.java index ab32c894..d680aeb0 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/dialog/ComponentLabelProvider.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/dialog/ComponentLabelProvider.java @@ -8,9 +8,34 @@ public class ComponentLabelProvider extends LabelProvider{ @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(); + } }