(JAL-962) allow group visibility to be specified before features in those groups...
[jalview.git] / src / jalview / appletgui / FeatureRenderer.java
index 39249cc..03f15d3 100755 (executable)
@@ -1064,9 +1064,9 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
       for (int i = 0; i < toset.length; i++)
       {
         Object st = featureGroups.get(toset[i]);
+        featureGroups.put(toset[i], new Boolean(visible));
         if (st != null)
         {
-          featureGroups.put(toset[i], new Boolean(visible));
           rdrw = rdrw || (visible != ((Boolean) st).booleanValue());
         }
       }
@@ -1090,6 +1090,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
     }
   }
 
+  ArrayList<String> hiddenGroups=new ArrayList<String>();
   /**
    * analyse alignment for groups and hash tables (used to be embedded in
    * FeatureSettings.setTableData)
@@ -1103,8 +1104,10 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
     {
       featureGroups = new Hashtable();
     }
-    Vector allFeatures = new Vector();
-    Vector allGroups = new Vector();
+    hiddenGroups =new ArrayList<String>();
+    hiddenGroups.addAll(featureGroups.keySet());
+    ArrayList allFeatures = new ArrayList();
+    ArrayList allGroups = new ArrayList();
     SequenceFeature[] tmpfeatures;
     String group;
     for (int i = 0; i < av.alignment.getHeight(); i++)
@@ -1123,9 +1126,11 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
         if (tmpfeatures[index].getFeatureGroup() != null)
         {
           group = tmpfeatures[index].featureGroup;
+          // Remove group from the hiddenGroup list
+          hiddenGroups.remove(group);
           if (!allGroups.contains(group))
           {
-            allGroups.addElement(group);
+            allGroups.add(group);
 
             boolean visible = true;
             if (featureGroups.containsKey(group))
@@ -1141,7 +1146,7 @@ public class FeatureRenderer implements jalview.api.FeatureRenderer
 
         if (!allFeatures.contains(tmpfeatures[index].getType()))
         {
-          allFeatures.addElement(tmpfeatures[index].getType());
+          allFeatures.add(tmpfeatures[index].getType());
         }
         index++;
       }