Merge remote-tracking branch 'origin/bug/JAL-3049colourCellTooltip' into
[jalview.git] / src / jalview / datamodel / SequenceFeature.java
index 8a6cb61..7052f34 100755 (executable)
@@ -27,9 +27,11 @@ import jalview.datamodel.features.FeatureSourceI;
 import jalview.datamodel.features.FeatureSources;
 import jalview.util.StringUtils;
 
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.SortedMap;
 import java.util.TreeMap;
 import java.util.Vector;
 
@@ -643,9 +645,13 @@ public class SequenceFeature implements FeatureLocationI
         {
           /*
            * expand values in a Map attribute across separate lines
+           * copy to a TreeMap for alphabetical ordering
            */
-          Map<?, ?> values = (Map<?, ?>) value;
-          for (Entry<?, ?> e : values.entrySet())
+          Map<String, Object> values = (Map<String, Object>) value;
+          SortedMap<String, Object> sm = new TreeMap<>(
+                  String.CASE_INSENSITIVE_ORDER);
+          sm.putAll(values);
+          for (Entry<?, ?> e : sm.entrySet())
           {
             sb.append(String.format(ROW_DATA, key, e.getKey().toString(), e
                     .getValue().toString()));
@@ -731,3 +737,21 @@ public class SequenceFeature implements FeatureLocationI
     source = theSource;
   }
 }
+
+class SFSortByEnd implements Comparator<SequenceFeature>
+{
+  @Override
+  public int compare(SequenceFeature a, SequenceFeature b)
+  {
+    return a.getEnd() - b.getEnd();
+  }
+}
+
+class SFSortByBegin implements Comparator<SequenceFeature>
+{
+  @Override
+  public int compare(SequenceFeature a, SequenceFeature b)
+  {
+    return a.getBegin() - b.getBegin();
+  }
+}