JAL-1483 check dataset for features if none found on local sequence
[jalview.git] / src / jalview / viewmodel / seqfeatures / FeatureRendererModel.java
index a53004d..bcf808d 100644 (file)
@@ -14,13 +14,11 @@ import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.Vector;
 import java.util.concurrent.ConcurrentHashMap;
 
 public abstract class FeatureRendererModel implements
@@ -248,11 +246,18 @@ public abstract class FeatureRendererModel implements
   {
     ArrayList<SequenceFeature> tmp = new ArrayList<SequenceFeature>();
     SequenceFeature[] features = sequence.getSequenceFeatures();
+
+    while (features == null && sequence.getDatasetSequence() != null)
+    {
+      sequence = sequence.getDatasetSequence();
+      features = sequence.getSequenceFeatures();
+    }
+
     if (features != null)
     {
       for (int i = 0; i < features.length; i++)
       {
-        if (av.areFeaturesDisplayed()
+        if (!av.areFeaturesDisplayed()
                 || !av.getFeaturesDisplayed().isVisible(
                         features[i].getType()))
         {
@@ -262,9 +267,11 @@ public abstract class FeatureRendererModel implements
         if (features[i].featureGroup != null
                 && featureGroups != null
                 && featureGroups.containsKey(features[i].featureGroup)
-                && !((Boolean) featureGroups.get(features[i].featureGroup))
+                && !featureGroups.get(features[i].featureGroup)
                         .booleanValue())
+        {
           continue;
+        }
 
         if ((features[i].getBegin() <= res)
                 && (features[i].getEnd() >= res))
@@ -345,7 +352,7 @@ public abstract class FeatureRendererModel implements
               groupDisplayed = Boolean.valueOf(newMadeVisible);
               featureGroups.put(fgrp, groupDisplayed);
             }
-            if (!((Boolean) groupDisplayed).booleanValue())
+            if (!groupDisplayed.booleanValue())
             {
               index++;
               continue;
@@ -435,7 +442,7 @@ public abstract class FeatureRendererModel implements
           if (initOrders)
           {
             setOrder(oldRender[j], (1 - (1 + (float) j)
-                    / (float) oldRender.length));
+                    / oldRender.length));
           }
           if (allfeatures.contains(oldRender[j]))
           {
@@ -666,9 +673,9 @@ public abstract class FeatureRendererModel implements
   }
 
   @Override
-  public Map getFeatureColours()
+  public Map<String, Object> getFeatureColours()
   {
-    return new ConcurrentHashMap<>(featureColours);
+    return new ConcurrentHashMap<String, Object>(featureColours);
   }
 
   /**
@@ -799,7 +806,7 @@ public abstract class FeatureRendererModel implements
     }
     if (featureGroups.containsKey(group))
     {
-      return ((Boolean) featureGroups.get(group)).booleanValue();
+      return featureGroups.get(group).booleanValue();
     }
     if (newGroupsVisible)
     {
@@ -825,7 +832,7 @@ public abstract class FeatureRendererModel implements
 
       for (Object grp : featureGroups.keySet())
       {
-        Boolean state = (Boolean) featureGroups.get(grp);
+        Boolean state = featureGroups.get(grp);
         if (state.booleanValue() == visible)
         {
           gp.add(grp);
@@ -854,7 +861,7 @@ public abstract class FeatureRendererModel implements
         featureGroups.put(gst, new Boolean(visible));
         if (st != null)
         {
-          rdrw = rdrw || (visible != ((Boolean) st).booleanValue());
+          rdrw = rdrw || (visible != st.booleanValue());
         }
       }
       if (rdrw)