From: jprocter Date: Thu, 19 Apr 2007 15:23:18 +0000 (+0000) Subject: fixed column selection cut/paste and self paste. X-Git-Tag: Release_2_3~207 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=02d526244bd13a79208e28004b56066f964c6c20;hp=17db615607025afd96b0da5227dee6eba38c69c0;p=jalview.git fixed column selection cut/paste and self paste. --- diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index c9819a2..a185e2a 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -1309,8 +1309,8 @@ public class AlignFrame { return; } - - SequenceI [] seqs = viewport.getSelectionAsNewSequence(); + // TODO: preserve the ordering of displayed alignment annotation in any internal paste (particularly sequence associated annotation) + SequenceI [] seqs = viewport.getSelectionAsNewSequence(); String[] omitHidden = null; if (viewport.hasHiddenColumns) @@ -1473,10 +1473,11 @@ public class AlignFrame sequences = alignment.getSequencesArray(); } + int alwidth=0; if (newAlignment) { - + if (Desktop.jalviewClipboard != null) { // dataset is inherited @@ -1487,12 +1488,14 @@ public class AlignFrame // new dataset is constructed alignment.setDataset(null); } + alwidth = alignment.getWidth()+1; } else { AlignmentI pastedal = alignment; // preserve pasted alignment object // Add pasted sequences and dataset into existing alignment. alignment = viewport.getAlignment(); + alwidth = alignment.getWidth()+1; // decide if we need to import sequences from an existing dataset boolean importDs = Desktop.jalviewClipboard != null && Desktop.jalviewClipboard[1] != alignment.getDataset(); @@ -1500,10 +1503,10 @@ public class AlignFrame // an existing alignment Vector newDs = (importDs) ? new Vector() : null; // used to create // minimum dataset set - + for (int i = 0; i < sequences.length; i++) { - if (importDs) + if (importDs) { newDs.addElement(null); } @@ -1513,7 +1516,7 @@ public class AlignFrame { if (!newDs.contains(ds)) { - newDs.setElementAt(ds, i); + newDs.setElementAt(ds, i); ds = new Sequence(ds); // update with new dataset sequence sequences[i].setDatasetSequence(ds); @@ -1544,7 +1547,9 @@ public class AlignFrame { annotationAdded=true; if (alann[i].sequenceRef==null && !alann[i].autoCalculated) { - alignment.addAnnotation(new AlignmentAnnotation(alann[i])); + AlignmentAnnotation newann = new AlignmentAnnotation(alann[i]); + newann.padAnnotation(alwidth); + alignment.addAnnotation(newann); } } } @@ -1571,11 +1576,12 @@ public class AlignFrame { annotationAdded=true; sequences[i].getAnnotation()[a].adjustForAlignment(); + sequences[i].getAnnotation()[a].padAnnotation(alwidth); alignment.addAnnotation(sequences[i].getAnnotation()[a]); // annotation was duplicated earlier alignment.setAnnotationIndex(sequences[i].getAnnotation()[a], a); } - + } } if (!newAlignment) { @@ -1604,7 +1610,7 @@ public class AlignFrame //>>>This is a fix for the moment, until a better solution is found!!<<< af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().transferSettings( alignPanel.seqPanel.seqCanvas.getFeatureRenderer()); - + // TODO: maintain provenance of an alignment, rather than just make the title a concatenation of operations. if (!externalPaste) { if (title.startsWith("Copied sequences"))