X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FAnnotationSorter.java;fp=src%2Fjalview%2Fanalysis%2FAnnotationSorter.java;h=0f0cf6849eedc9e60c3cbe29d02a3cb3c2fa3fb8;hb=7340ceba8e1dafe0a3c9ce14ca4c1b1c29a25e0d;hp=92ed9bec374645afb0f6099c73e4688e7f6f852a;hpb=f83b6877ab7ff3fc5db5c946e16c74e016437311;p=jalview.git diff --git a/src/jalview/analysis/AnnotationSorter.java b/src/jalview/analysis/AnnotationSorter.java index 92ed9be..0f0cf68 100644 --- a/src/jalview/analysis/AnnotationSorter.java +++ b/src/jalview/analysis/AnnotationSorter.java @@ -156,8 +156,15 @@ public class AnnotationSorter { return showAutocalcAbove ? 1 : -1; } - int sequenceOrder = compareSequences(o1, o2); - return sequenceOrder == 0 ? compareLabels(o1, o2) : sequenceOrder; + int computedOrder = compareSequences(o1, o2); + if (computedOrder==0) { + computedOrder = compareLabels(o1, o2); + } + if (computedOrder==0) + { + computedOrder = compareDescriptions(o1,o2); + } + return computedOrder; } @Override @@ -358,6 +365,29 @@ public class AnnotationSorter } String label1 = o1.label; String label2 = o2.label; + return compareString(label1,label2); + } + + /** + * Non-case-sensitive comparison of annotation descriptions. Returns zero if either + * argument is null. + * + * @param o1 + * @param o2 + * @return + */ + private int compareDescriptions(AlignmentAnnotation o1, AlignmentAnnotation o2) + { + if (o1 == null || o2 == null) + { + return 0; + } + String label1 = o1.description; + String label2 = o2.description; + return compareString(label1,label2); + } + private int compareString(String label1, String label2) + { if (label1 == null && label2 == null) { return 0;