bugfix for occasional nullpointer exceptions when selecting menu items that operate...
authorjprocter <Jim Procter>
Tue, 24 Feb 2009 17:53:27 +0000 (17:53 +0000)
committerjprocter <Jim Procter>
Tue, 24 Feb 2009 17:53:27 +0000 (17:53 +0000)
src/jalview/datamodel/SequenceGroup.java
src/jalview/gui/AlignViewport.java

index d12f81b..49f270d 100755 (executable)
@@ -691,11 +691,12 @@ public class SequenceGroup
 
   /**
    * 
-   * returns the sequences in the group ordered by the ordering given by al
-   * 
+   * returns the sequences in the group ordered by the ordering given by al.
+   * this used to return an array with null entries regardless, new behaviour is below.
+   * TODO: verify that this does not affect use in applet or application
    * @param al
    *                Alignment
-   * @return SequenceI[]
+   * @return SequenceI[] intersection of sequences in group with al, ordered by al, or null if group does not intersect with al
    */
   public SequenceI[] getSequencesInOrder(AlignmentI al)
   {
@@ -712,7 +713,20 @@ public class SequenceGroup
         seqs[index++] = al.getSequenceAt(i);
       }
     }
-
+    if (index==0)
+    {
+      return null;
+    }
+    if (index<seqs.length)
+    {
+      SequenceI[] dummy = seqs;
+      seqs = new SequenceI[index];
+      while (--index>=0)
+      {
+        seqs[index] = dummy[index];
+        dummy[index] = null;
+      }
+    }
     return seqs;
   }
 
index d07b010..b90d89b 100755 (executable)
@@ -1625,14 +1625,14 @@ public class AlignViewport implements SelectionSource
    */
   public SequenceI[] getSequenceSelection()
   {
-    SequenceI[] sequences;
-    if (selectionGroup == null)
+    SequenceI[] sequences=null;
+    if (selectionGroup!=null)
     {
-      sequences = alignment.getSequencesArray();
+      sequences = selectionGroup.getSequencesInOrder(alignment);
     }
-    else
+    if (sequences == null)
     {
-      sequences = selectionGroup.getSequencesInOrder(alignment);
+      sequences = alignment.getSequencesArray();
     }
     return sequences;
   }