+ private static final ViewerComparator comparator = new ViewerComparator() {
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2) {
+ if (e1 instanceof SymbolReference && e2 instanceof SymbolReference) {
+ SymbolReference r1 = (SymbolReference)e1;
+ SymbolReference r2 = (SymbolReference)e2;
+ int c = r1.referrer.toString().compareTo(r2.referrer.toString());
+ if (c != 0) {
+ return c;
+ } else {
+ return Integer.compare(Locations.beginOf(r1.referenceLocation), Locations.beginOf(r2.referenceLocation));
+ }
+ } else if (e1 instanceof SymbolReference && e2 instanceof SCLExpressionTableEntry) {
+ return 1;
+ } else if (e2 instanceof SymbolReference && e1 instanceof SCLExpressionTableEntry) {
+ return -1;
+ } else {
+ SCLExpressionTableEntry r1 = (SCLExpressionTableEntry)e1;
+ SCLExpressionTableEntry r2 = (SCLExpressionTableEntry)e2;
+ return r1.getContent().compareTo(r2.getContent());
+ }
+ }
+ };