public int compare(Object o1, Object o2) {
IProgramElement sv1 = ((IStructureViewNode)o1).getStructureNode();
IProgramElement sv2 = ((IStructureViewNode)o2).getStructureNode();
- if (sv1.getKind() == IProgramElement.Kind.IMPORT_REFERENCE) return 1;
- if (sv2.getKind() == IProgramElement.Kind.IMPORT_REFERENCE) return -1;
- return sv1.getName().compareTo(sv2.getName());
+
+ if (sv1 instanceof IProgramElement && sv2 instanceof IProgramElement) {
+
+ IProgramElement p1 = (IProgramElement)sv1;
+ IProgramElement p2 = (IProgramElement)sv2;
+
+ if (p2.getKind() == IProgramElement.Kind.IMPORT_REFERENCE) return 1;
+ if (p1.getKind() == IProgramElement.Kind.IMPORT_REFERENCE) return -1;
+
+ return p1.getName().compareTo(p2.getName());
+ } else {
+ return 0;
+ }
}
};
private static final Comparator DECLARATIONAL_COMPARATOR = new Comparator() {
public int compare(Object o1, Object o2) {
- IProgramElement p1 = ((IStructureViewNode)o1).getStructureNode();
- IProgramElement p2 = ((IStructureViewNode)o2).getStructureNode();
-
- if (p2.getKind() == IProgramElement.Kind.IMPORT_REFERENCE) return 1;
- if (p1.getKind() == IProgramElement.Kind.IMPORT_REFERENCE) return -1;
- if (p1.getSourceLocation() == null || p2.getSourceLocation() == null) {
- return 0;
- } else if (p1.getSourceLocation().getLine() < p2.getSourceLocation().getLine()) {
- return -1;
- } else {
- return 1;
- }
+ IProgramElement sv1 = ((IStructureViewNode)o1).getStructureNode();
+ IProgramElement sv2 = ((IStructureViewNode)o2).getStructureNode();
+ if (sv1 instanceof IProgramElement && sv2 instanceof IProgramElement) {
+ IProgramElement p1 = (IProgramElement)sv1;
+ IProgramElement p2 = (IProgramElement)sv2;
+ if (p2.getKind() == IProgramElement.Kind.IMPORT_REFERENCE) return 1;
+ if (p1.getKind() == IProgramElement.Kind.IMPORT_REFERENCE) return -1;
+ if (p1.getSourceLocation() == null || p2.getSourceLocation() == null) {
+ return 0;
+ } else if (p1.getSourceLocation().getLine() < p2.getSourceLocation().getLine()) {
+ return -1;
+ } else {
+ return 1;
+ }
+ } else {
+ return 0;
+ }
}
};
}