]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/dialog/ComponentLabelProvider.java
Added labels to piping component types
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / dialog / ComponentLabelProvider.java
index ab32c89450fd079b51c7833caa49f854b535fad5..d680aeb04e7352c3794f891b1119f4654fddbbb1 100644 (file)
@@ -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();
+       }
 }