+ for(int i=0; i<old.length; i++)\r
+ viewport.alignment.addAnnotation(old[i]);\r
+ viewport.updateConsensus();\r
+ viewport.updateConservation();\r
+ alignPanel.repaint();\r
+ }\r
+\r
+ public void moveSelectedSequences(boolean up)\r
+ {\r
+ SequenceGroup sg = viewport.getSelectionGroup();\r
+ if (sg == null)\r
+ return;\r
+\r
+ if (up)\r
+ {\r
+ for (int i = 1; i < viewport.alignment.getHeight(); i++)\r
+ {\r
+ SequenceI seq = viewport.alignment.getSequenceAt(i);\r
+ if (!sg.sequences.contains(seq))\r
+ continue;\r
+\r
+ SequenceI temp = viewport.alignment.getSequenceAt(i - 1);\r
+ if (sg.sequences.contains(temp))\r
+ continue;\r
+\r
+ viewport.alignment.getSequences().setElementAt(temp, i);\r
+ viewport.alignment.getSequences().setElementAt(seq, i - 1);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ for (int i = viewport.alignment.getHeight() - 2; i > -1; i--)\r
+ {\r
+ SequenceI seq = viewport.alignment.getSequenceAt(i);\r
+ if (!sg.sequences.contains(seq))\r
+ continue;\r
+\r
+ SequenceI temp = viewport.alignment.getSequenceAt(i + 1);\r
+ if (sg.sequences.contains(temp))\r
+ continue;\r
+\r
+ viewport.alignment.getSequences().setElementAt(temp, i);\r
+ viewport.alignment.getSequences().setElementAt(seq, i + 1);\r
+ }\r
+ }\r
+\r
+ alignPanel.repaint();\r
+ }\r
+\r
+\r
+\r
+ protected void copy_actionPerformed(ActionEvent e)\r
+ {\r
+ if(viewport.getSelectionGroup()==null)\r
+ return;\r
+\r
+ SequenceGroup sg = viewport.getSelectionGroup();\r
+\r
+ Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();\r
+ StringBuffer buffer= new StringBuffer();\r
+\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
+ 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
+ c.setContents( new StringSelection( buffer.toString()) , null ) ;\r
+\r
+ }\r
+\r
+\r
+ protected void pasteNew_actionPerformed(ActionEvent e)\r
+ {\r
+ paste(true);\r
+ }\r
+\r
+ protected void pasteThis_actionPerformed(ActionEvent e)\r
+ {\r
+ addHistoryItem("Paste");\r
+ paste(false);\r
+ }\r
+\r
+ void paste(boolean newAlignment)\r
+ {\r
+ try{\r
+ Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();\r
+ Transferable contents = c.getContents(this);\r
+ if (contents == null)\r
+ return;\r
+\r
+ String str = (String) contents.getTransferData(DataFlavor.stringFlavor);\r
+ StringTokenizer st = new StringTokenizer(str);\r
+ ArrayList seqs = new ArrayList();\r
+ while (st.hasMoreElements())\r
+ {\r
+ String name = st.nextToken();\r
+ int start = Integer.parseInt(st.nextToken());\r
+ int end = Integer.parseInt(st.nextToken());\r
+ Sequence sequence = new Sequence(name,st.nextToken(), start, end);\r
+\r
+ if(!newAlignment)\r
+ viewport.alignment.addSequence(sequence);\r
+ else\r
+ seqs.add(sequence);\r
+ }\r
+\r
+ if(newAlignment)\r
+ {\r
+ SequenceI[] newSeqs = new SequenceI[seqs.size()];\r
+ seqs.toArray(newSeqs);\r
+ AlignFrame af = new AlignFrame(new Alignment(newSeqs));\r
+ String newtitle = new String("Copied sequences");\r
+ if( title.startsWith("Copied sequences"))\r
+ newtitle = title;\r
+ else\r
+ newtitle = newtitle.concat("- from "+title);\r
+\r
+ Desktop.addInternalFrame(af, newtitle, NEW_WINDOW_WIDTH, NEW_WINDOW_HEIGHT);\r
+ }\r
+ else\r
+ {\r
+ viewport.setEndSeq(viewport.alignment.getHeight());\r
+ viewport.alignment.getWidth();\r
+ viewport.updateConservation();\r
+ viewport.updateConsensus();\r
+ alignPanel.repaint();\r
+ }\r
+\r
+ }catch(Exception ex){}// could be anything being pasted in here\r
+\r