]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.interop/src/org/simantics/interop/utils/StringColumnComparator.java
Cleaning up compiler warnings
[simantics/interop.git] / org.simantics.interop / src / org / simantics / interop / utils / StringColumnComparator.java
1 package org.simantics.interop.utils;\r
2 \r
3 import org.eclipse.jface.viewers.CellLabelProvider;\r
4 import org.eclipse.jface.viewers.ContentViewer;\r
5 import org.eclipse.jface.viewers.IBaseLabelProvider;\r
6 import org.eclipse.jface.viewers.ILabelProvider;\r
7 import org.eclipse.jface.viewers.ITableLabelProvider;\r
8 import org.eclipse.jface.viewers.TableViewer;\r
9 import org.eclipse.jface.viewers.Viewer;\r
10 import org.eclipse.jface.viewers.ViewerComparator;\r
11 \r
12 public class StringColumnComparator extends ViewerComparator {\r
13         private int propertyIndex;\r
14         private static final int DESCENDING = 1;\r
15         private int direction = DESCENDING;\r
16         \r
17         public StringColumnComparator() {\r
18                 this.propertyIndex = 0;\r
19                 this.direction = DESCENDING;\r
20         }\r
21         \r
22         public void setColumnt(int column) {\r
23                 if (column == this.propertyIndex) {\r
24                         direction = 1-direction;\r
25                 } else {\r
26                         this.propertyIndex = column;\r
27                         direction = DESCENDING;\r
28                 }\r
29         }\r
30         \r
31         @SuppressWarnings("unchecked")\r
32         @Override\r
33         public int compare(Viewer viewer, Object e1, Object e2) {\r
34                 \r
35                 \r
36                 int cat1 = category(e1);\r
37         int cat2 = category(e2);\r
38 \r
39         if (cat1 != cat2) {\r
40                         return cat1 - cat2;\r
41                 }\r
42         \r
43         String name1 = null;\r
44         String name2 = null;\r
45         \r
46         \r
47         \r
48         if (viewer == null || !(viewer instanceof ContentViewer)) {\r
49             name1 = e1.toString();\r
50             name2 = e2.toString();\r
51         } else {\r
52             IBaseLabelProvider prov = ((ContentViewer) viewer).getLabelProvider();\r
53             if (viewer instanceof TableViewer && ((TableViewer)viewer).getLabelProvider(propertyIndex) != null) {\r
54                 CellLabelProvider clp = ((TableViewer)viewer).getLabelProvider(propertyIndex);\r
55                 if (clp instanceof ILabelProvider) {\r
56                         ILabelProvider ilb = (ILabelProvider)clp;\r
57                         name1 = ilb.getText(e1);\r
58                         name2 = ilb.getText(e2);\r
59                 }\r
60             }\r
61             if (name1 == null) {\r
62                     if (prov instanceof ITableLabelProvider) {\r
63                         ITableLabelProvider lprov = (ITableLabelProvider) prov;\r
64                         name1 = lprov.getColumnText(e1,propertyIndex);\r
65                         name2 = lprov.getColumnText(e2,propertyIndex);\r
66                     } else if (prov instanceof ILabelProvider) {\r
67                         ILabelProvider lprov = (ILabelProvider) prov;\r
68                         name1 = lprov.getText(e1);\r
69                         name2 = lprov.getText(e2);\r
70                     } else {\r
71                         name1 = e1.toString();\r
72                         name2 = e2.toString();\r
73                     }\r
74             }\r
75         }\r
76         if (name1 == null) {\r
77                         name1 = "";//$NON-NLS-1$\r
78                 }\r
79         if (name2 == null) {\r
80                         name2 = "";//$NON-NLS-1$\r
81                 }\r
82 \r
83         // use the comparator to compare the strings\r
84         int rc = getComparator().compare(name1, name2);\r
85                 if (direction != DESCENDING)\r
86                         rc = -rc;\r
87                 return rc;\r
88         }\r
89         \r
90 }\r
91 \r