JAL-2754 Sequence.findFeatures(fromCol, toCol)
[jalview.git] / src / jalview / viewmodel / seqfeatures / FeatureRendererModel.java
index 1af491c..a568341 100644 (file)
@@ -262,10 +262,14 @@ public abstract class FeatureRendererModel implements
   }
 
   @Override
-  public List<SequenceFeature> findFeaturesAtRes(SequenceI sequence, int res)
+  public List<SequenceFeature> findFeaturesAtColumn(SequenceI sequence, int column)
   {
+    /*
+     * include features at the position provided their feature type is 
+     * displayed, and feature group is null or marked for display
+     */
     List<SequenceFeature> result = new ArrayList<SequenceFeature>();
-    if (!av.areFeaturesDisplayed())
+    if (!av.areFeaturesDisplayed() || getFeaturesDisplayed() == null)
     {
       return result;
     }
@@ -274,12 +278,7 @@ public abstract class FeatureRendererModel implements
             .getVisibleFeatures();
     String[] visibleTypes = visibleFeatures
             .toArray(new String[visibleFeatures.size()]);
-
-    /*
-     * include features at the position provided their feature type is 
-     * displayed, and feature group is null or marked for display
-     */
-    List<SequenceFeature> features = sequence.findFeatures(res, res,
+    List<SequenceFeature> features = sequence.findFeatures(column, column,
             visibleTypes);
 
     for (SequenceFeature sf : features)
@@ -966,4 +965,39 @@ public abstract class FeatureRendererModel implements
                     .booleanValue();
   }
 
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public List<SequenceFeature> findFeaturesAtResidue(SequenceI sequence,
+          int resNo)
+  {
+    List<SequenceFeature> result = new ArrayList<SequenceFeature>();
+    if (!av.areFeaturesDisplayed() || getFeaturesDisplayed() == null)
+    {
+      return result;
+    }
+
+    /*
+     * include features at the position provided their feature type is 
+     * displayed, and feature group is null or the empty string
+     * or marked for display
+     */
+    Set<String> visibleFeatures = getFeaturesDisplayed()
+            .getVisibleFeatures();
+    String[] visibleTypes = visibleFeatures
+            .toArray(new String[visibleFeatures.size()]);
+    List<SequenceFeature> features = sequence.getFeatures().findFeatures(
+            resNo, resNo, visibleTypes);
+  
+    for (SequenceFeature sf : features)
+    {
+      if (!featureGroupNotShown(sf))
+      {
+        result.add(sf);
+      }
+    }
+    return result;
+  }
+
 }