copy order maintained
authoramwaterhouse <Andrew Waterhouse>
Fri, 20 May 2005 09:27:38 +0000 (09:27 +0000)
committeramwaterhouse <Andrew Waterhouse>
Fri, 20 May 2005 09:27:38 +0000 (09:27 +0000)
src/jalview/appletgui/AlignFrame.java
src/jalview/gui/AlignFrame.java

index 44b163b..711a2f3 100755 (executable)
@@ -222,10 +222,30 @@ public class AlignFrame extends GAlignFrame
 \r
    SequenceGroup sg = viewport.getSelectionGroup();\r
    copiedSequences = new StringBuffer();\r
+   Hashtable orderedSeqs = new Hashtable();\r
+   for(int i=0; i<sg.getSize(); i++)\r
+   {\r
+      SequenceI seq = sg.getSequenceAt(i);\r
+      int index = viewport.alignment.findIndex(seq);\r
+      orderedSeqs.put(index+"", seq);\r
+   }\r
 \r
-       for(int i=0; i<sg.getSize(); i++)\r
+   int index=0;\r
+   for(int i=0; i<sg.getSize(); i++)\r
+   {\r
+     SequenceI seq = null;\r
+     while( seq == null )\r
+     {\r
+       if(orderedSeqs.containsKey(index+""))\r
        {\r
-         SequenceI seq = sg.getSequenceAt(i);\r
+         seq = (SequenceI) orderedSeqs.get(index + "");\r
+         index++;\r
+         break;\r
+       }\r
+       else\r
+         index++;\r
+     }\r
+\r
          copiedSequences.append( seq.getName()+"\t"+seq.findPosition( sg.getStartRes() ) +"\t"\r
                         +seq.findPosition( sg.getEndRes() )+ "\t"\r
                         +sg.getSequenceAt(i).getSequence(sg.getStartRes(), sg.getEndRes()+1)+"\n");\r
index 3302fff..725a702 100755 (executable)
@@ -287,21 +287,42 @@ public class AlignFrame extends GAlignFrame
 \r
   protected void copy_actionPerformed(ActionEvent e)\r
   {\r
-   if(viewport.getSelectionGroup()==null)\r
-     return;\r
+     if(viewport.getSelectionGroup()==null)\r
+       return;\r
 \r
-   SequenceGroup sg = viewport.getSelectionGroup();\r
+     SequenceGroup sg = viewport.getSelectionGroup();\r
 \r
      Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();\r
      StringBuffer buffer= new StringBuffer();\r
 \r
-       for(int i=0; i<sg.getSize(); i++)\r
+     Hashtable orderedSeqs = new Hashtable();\r
+     for(int i=0; i<sg.getSize(); i++)\r
+     {\r
+        SequenceI seq = sg.getSequenceAt(i);\r
+        int index = viewport.alignment.findIndex(seq);\r
+        orderedSeqs.put(index+"", seq);\r
+     }\r
+\r
+     int index=0;\r
+     for(int i=0; i<sg.getSize(); i++)\r
+     {\r
+       SequenceI seq = null;\r
+       while( seq == null )\r
        {\r
-         SequenceI seq = sg.getSequenceAt(i);\r
+         if(orderedSeqs.containsKey(index+""))\r
+         {\r
+           seq = (SequenceI) orderedSeqs.get(index + "");\r
+           index++;\r
+           break;\r
+         }\r
+         else\r
+           index++;\r
+       }\r
+\r
          buffer.append( seq.getName()+"\t"+seq.findPosition( sg.getStartRes() ) +"\t"\r
                         +seq.findPosition( sg.getEndRes() )+ "\t"\r
                         +sg.getSequenceAt(i).getSequence(sg.getStartRes(), sg.getEndRes()+1)+"\n");\r
-       }\r
+     }\r
      c.setContents( new StringSelection( buffer.toString()) , null ) ;\r
 \r
   }\r