JAL-2483 JAL-2575 don't sort newly discovered features
[jalview.git] / src / jalview / viewmodel / seqfeatures / FeatureRendererModel.java
index 5d817c7..1af491c 100644 (file)
@@ -35,7 +35,6 @@ import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Hashtable;
@@ -280,8 +279,8 @@ public abstract class FeatureRendererModel implements
      * include features at the position provided their feature type is 
      * displayed, and feature group is null or marked for display
      */
-    List<SequenceFeature> features = sequence.getFeatures().findFeatures(
-            res, res, visibleTypes);
+    List<SequenceFeature> features = sequence.findFeatures(res, res,
+            visibleTypes);
 
     for (SequenceFeature sf : features)
     {
@@ -332,22 +331,25 @@ public abstract class FeatureRendererModel implements
     }
 
     AlignmentI alignment = av.getAlignment();
-    List<String> allfeatures = new ArrayList<String>(); // or HashSet?
+    List<String> allfeatures = new ArrayList<String>();
 
     for (int i = 0; i < alignment.getHeight(); i++)
     {
       SequenceI asq = alignment.getSequenceAt(i);
       for (String group : asq.getFeatures().getFeatureGroups(true))
       {
-        if (group == null)
+        boolean groupDisplayed = true;
+        if (group != null)
         {
-          continue;
-        }
-        Boolean groupDisplayed = featureGroups.get(group);
-        if (groupDisplayed == null)
-        {
-          groupDisplayed = Boolean.valueOf(newMadeVisible);
-          featureGroups.put(group, groupDisplayed);
+          if (featureGroups.containsKey(group))
+          {
+            groupDisplayed = featureGroups.get(group);
+          }
+          else
+          {
+            groupDisplayed = newMadeVisible;
+            featureGroups.put(group, groupDisplayed);
+          }
         }
         if (groupDisplayed)
         {
@@ -365,10 +367,8 @@ public abstract class FeatureRendererModel implements
       }
     }
 
-    /*
-     * mark any new feature types as visible
-     */
-    Collections.sort(allfeatures, String.CASE_INSENSITIVE_ORDER);
+    // uncomment to add new features in alphebetical order (but JAL-2575)
+    // Collections.sort(allfeatures, String.CASE_INSENSITIVE_ORDER);
     if (newMadeVisible)
     {
       for (String type : allfeatures)
@@ -939,23 +939,12 @@ public abstract class FeatureRendererModel implements
   public List<String> getDisplayedFeatureGroups()
   {
     List<String> _gps = new ArrayList<String>();
-    boolean valid = false;
     for (String gp : getFeatureGroups())
     {
       if (checkGroupVisibility(gp, false))
       {
-        valid = true;
         _gps.add(gp);
       }
-      if (!valid)
-      {
-        return null;
-      }
-      else
-      {
-        // gps = new String[_gps.size()];
-        // _gps.toArray(gps);
-      }
     }
     return _gps;
   }