From ceb4fd3a8909862e45ac79b242ed112a15998d84 Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Wed, 14 Sep 2005 15:42:08 +0000 Subject: [PATCH] Copy and paste uses FASTA format --- src/jalview/gui/AlignFrame.java | 47 +++++++++++++++------------------------ src/jalview/jbgui/GFinder.java | 20 ++++++++++++----- 2 files changed, 32 insertions(+), 35 deletions(-) diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 7984991..9762258 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -560,15 +560,16 @@ public class AlignFrame { if (viewport.getSelectionGroup() == null) { + System.out.println("null here"); return; } SequenceGroup sg = viewport.getSelectionGroup(); Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); - StringBuffer buffer = new StringBuffer(); Hashtable orderedSeqs = new Hashtable(); + SequenceI [] seqs = new SequenceI[sg.getSize()]; for (int i = 0; i < sg.getSize(); i++) { @@ -598,6 +599,8 @@ public class AlignFrame index++; } } + + //FIND START RES //Returns residue following index if gap startRes = seq.findPosition(sg.getStartRes()); @@ -620,14 +623,15 @@ public class AlignFrame endRes += seq.getStart() - 1; } - buffer.append(seq.getName() + "\t" + - startRes + "\t" + - endRes + "\t" + - seq.getSequence(sg.getStartRes(), - sg.getEndRes() + 1) + "\n"); + seqs[i] = new Sequence(seq.getName(), + seq.getSequence(sg.getStartRes(), sg.getEndRes()+1), + startRes, + endRes); } - c.setContents(new StringSelection(buffer.toString()), null); + System.out.println("BLOBL"+FastaFile.print(seqs)); + + c.setContents(new StringSelection(FastaFile.print(seqs)), null); } /** @@ -670,33 +674,14 @@ public class AlignFrame } String str = (String) contents.getTransferData(DataFlavor.stringFlavor); - StringTokenizer st = new StringTokenizer(str); - ArrayList seqs = new ArrayList(); - while (st.hasMoreElements()) - { - String name = st.nextToken(); - int start = Integer.parseInt(st.nextToken()); - int end = Integer.parseInt(st.nextToken()); - Sequence sequence = new Sequence(name, st.nextToken(), start, - end); + String format = IdentifyFile.Identify(str, "Paste"); + SequenceI[] sequences = FormatAdapter.readFile(str, "Paste", format); - if (!newAlignment) - { - viewport.alignment.addSequence(sequence); - } - else - { - seqs.add(sequence); - } - } if (newAlignment) { - SequenceI[] newSeqs = new SequenceI[seqs.size()]; - seqs.toArray(newSeqs); - - AlignFrame af = new AlignFrame(new Alignment(newSeqs)); + AlignFrame af = new AlignFrame(new Alignment(sequences)); String newtitle = new String("Copied sequences"); if (title.startsWith("Copied sequences")) @@ -713,6 +698,10 @@ public class AlignFrame } else { + //!newAlignment + for (int i = 0; i < sequences.length; i++) + viewport.alignment.addSequence(sequences[i]); + viewport.setEndSeq(viewport.alignment.getHeight()); viewport.alignment.getWidth(); viewport.firePropertyChange("alignment", null, viewport.getAlignment().getSequences()); diff --git a/src/jalview/jbgui/GFinder.java b/src/jalview/jbgui/GFinder.java index 32d2f24..8ece84d 100755 --- a/src/jalview/jbgui/GFinder.java +++ b/src/jalview/jbgui/GFinder.java @@ -22,6 +22,10 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; +import jalview.io.FormatAdapter; +import jalview.datamodel.SequenceI; +import java.awt.datatransfer.DataFlavor; +import jalview.io.IdentifyFile; public class GFinder extends JPanel @@ -155,17 +159,21 @@ public class GFinder public void textfield_caretUpdate(CaretEvent e) { - if (textfield.getText().indexOf("\t") > -1) + if (textfield.getText().indexOf(">") > -1) { SwingUtilities.invokeLater(new Runnable() { public void run() { - String text = textfield.getText(); - text = text.substring(text.lastIndexOf("\t") + 1).trim(); - text = jalview.analysis.AlignSeq.extractGaps( - jalview.util.Comparison.GapChars, text); - textfield.setText(text); + String str = textfield.getText(); + SequenceI[] sequences = FormatAdapter.readFile(str, "Paste", "FASTA"); + if(sequences!=null && sequences.length>0) + { + str = jalview.analysis.AlignSeq.extractGaps( + jalview.util.Comparison.GapChars, sequences[0].getSequence()); + + textfield.setText(str); + } } }); } -- 1.7.10.2