Merge branch 'bug/JAL-2791selectVisibleFeatures' into
[jalview.git] / src / jalview / controller / AlignViewController.java
index cc5a184..8b001b3 100644 (file)
@@ -216,8 +216,9 @@ public class AlignViewController implements AlignViewControllerI
 
   /**
    * Sets a bit in the BitSet for each column (base 0) in the sequence
-   * collection which includes the specified feature type. Returns the number of
-   * sequences which have the feature in the selected range.
+   * collection which includes a visible feature of the specified feature type.
+   * Returns the number of sequences which have the feature visible in the
+   * selected range.
    * 
    * @param featureType
    * @param sqcol
@@ -227,8 +228,8 @@ public class AlignViewController implements AlignViewControllerI
   int findColumnsWithFeature(String featureType,
           SequenceCollectionI sqcol, BitSet bs)
   {
-    FeatureRendererModel fr = (FeatureRendererModel) alignPanel
-            .getFeatureRenderer();
+    FeatureRendererModel fr = alignPanel == null ? null
+            : (FeatureRendererModel) alignPanel.getFeatureRenderer();
     List<String> visibleFeatures = fr.getDisplayedFeatureTypes();
 
     final int startColumn = sqcol.getStartRes() + 1; // converted to base 1
@@ -243,11 +244,7 @@ public class AlignViewController implements AlignViewControllerI
         List<SequenceFeature> sfs = sq.findFeatures(startColumn,
                 endColumn, featureType);
 
-        if (!sfs.isEmpty())
-        {
-          nseq++;
-        }
-
+        boolean found = false;
         for (SequenceFeature sf : sfs)
         {
           { 
@@ -257,6 +254,12 @@ public class AlignViewController implements AlignViewControllerI
               continue; 
             }
           }
+          if (!found)
+          {
+            nseq++;
+          }
+          found = true;
+
           int sfStartCol = sq.findIndex(sf.getBegin());
           int sfEndCol = sq.findIndex(sf.getEnd());