]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.plant3d/src/org/simantics/plant3d/dialog/ComponentLabelProvider.java
Add units to ComponentSelectionDialog
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / dialog / ComponentLabelProvider.java
1 package org.simantics.plant3d.dialog;
2
3 import org.eclipse.jface.viewers.LabelProvider;
4 import org.simantics.plant3d.utils.Item;
5
6 public class ComponentLabelProvider extends LabelProvider{
7         
8         @Override
9         public String getText(Object element) {
10                 Item item = (Item)element;
11                 String label = item.getLabel();
12                 return label != null ? label : fromCamelCase(item.getName());
13         }
14
15         private static String fromCamelCase(String name) {
16                 StringBuilder b = new StringBuilder(name);
17                 for (int i = 0; i < b.length(); i++) {
18                         char ch = b.charAt(i);
19                         if (i == 0 && Character.isLowerCase(ch)) {
20                                 b.setCharAt(i, Character.toUpperCase(ch));
21                         }
22                         else if (ch == '_') {
23                                 if (i == 0 || b.charAt(i-1) == ' ') {
24                                         b.deleteCharAt(i);
25                                         i--;
26                                 }
27                                 else {
28                                         b.setCharAt(i, ' ');
29                                 }
30                         }
31                         else if (i >= 2 && Character.isLowerCase(ch) &&
32                                         Character.isUpperCase(b.charAt(i-1)) &&
33                                         b.charAt(i-2) != ' ') {
34                                 b.insert(i-1, ' ');
35                                 i++;
36                         }
37                 }
38                 
39                 return b.toString();
40         }
41 }