added getSequencesInOrder (part of refactor from AlignPanel menu action for cut'n...
authorjprocter <Jim Procter>
Mon, 23 May 2005 17:48:35 +0000 (17:48 +0000)
committerjprocter <Jim Procter>
Mon, 23 May 2005 17:48:35 +0000 (17:48 +0000)
src/jalview/datamodel/SequenceGroup.java

index 7aae434..22b9165 100755 (executable)
@@ -209,7 +209,9 @@ public class SequenceGroup
   public int getWidth()\r
   {\r
     // MC This needs to get reset when characters are inserted and deleted\r
-    for (int i = 0; i < sequences.size(); i++)\r
+    if (sequences.size()>0)\r
+      width = ((SequenceI) sequences.elementAt(0)).getLength();\r
+    for (int i = 1; i < sequences.size(); i++)\r
     {\r
       SequenceI seq = (SequenceI) sequences.elementAt(i);\r
       if (seq.getLength() > width)\r
@@ -227,4 +229,40 @@ public class SequenceGroup
   {\r
     return outlineColour;\r
   }\r
+  /**\r
+   *\r
+   * returns the sequences in the group ordered by the ordering given by al\r
+   *\r
+   * @param al Alignment\r
+   * @return SequenceI[]\r
+   */\r
+  public SequenceI[] getSequencesInOrder(Alignment al) {\r
+    int sz;\r
+    java.util.Hashtable orderedSeqs = new java.util.Hashtable();\r
+    SequenceI[] seqs=new SequenceI[sz=sequences.size()];\r
+    for(int i=0; i<sz; i++)\r
+    {\r
+      SequenceI seq = (SequenceI) sequences.get(i);\r
+      int index = al.findIndex(seq);\r
+      orderedSeqs.put(index+"", seq);\r
+    }\r
+\r
+    int index=0;\r
+    for(int i=0; i<sz; i++) {\r
+      SequenceI seq = null;\r
+      while (seq == null)\r
+      {\r
+        if (orderedSeqs.containsKey(index + ""))\r
+        {\r
+          seq = (SequenceI) orderedSeqs.get(index + "");\r
+          index++;\r
+          break;\r
+        }\r
+        else\r
+          index++;\r
+      }\r
+      seqs[index] = seq;\r
+    }\r
+    return seqs;\r
+  }\r
 }\r