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
{\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