From: jprocter Date: Tue, 12 Jun 2012 11:48:03 +0000 (+0100) Subject: JAL-1115 refactor reordering code operating directly on Sequence collection as Alignm... X-Git-Tag: Jalview_2_9~481 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=6357db6c20614a666b7b446aeb3260c5379637eb;p=jalview.git JAL-1115 refactor reordering code operating directly on Sequence collection as AlignmentI method --- diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 9e5c4fb..5a199bb 100644 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -1457,48 +1457,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener, ItemLis { return; } - - if (up) - { - for (int i = 1; i < viewport.getAlignment().getHeight(); i++) - { - SequenceI seq = viewport.getAlignment().getSequenceAt(i); - if (!sg.getSequences(null).contains(seq)) - { - continue; - } - - SequenceI temp = viewport.getAlignment().getSequenceAt(i - 1); - if (sg.getSequences(null).contains(temp)) - { - continue; - } - - viewport.getAlignment().getSequences().setElementAt(temp, i); - viewport.getAlignment().getSequences().setElementAt(seq, i - 1); - } - } - else - { - for (int i = viewport.getAlignment().getHeight() - 2; i > -1; i--) - { - SequenceI seq = viewport.getAlignment().getSequenceAt(i); - if (!sg.getSequences(viewport.getHiddenRepSequences()).contains(seq)) - { - continue; - } - - SequenceI temp = viewport.getAlignment().getSequenceAt(i + 1); - if (sg.getSequences(viewport.getHiddenRepSequences()).contains(temp)) - { - continue; - } - - viewport.getAlignment().getSequences().setElementAt(temp, i); - viewport.getAlignment().getSequences().setElementAt(seq, i + 1); - } - } - + viewport.getAlignment().moveSelectedSequencesByOne(sg, up ? null : viewport.getHiddenRepSequences(), up); alignPanel.paintAlignment(true); } diff --git a/src/jalview/datamodel/Alignment.java b/src/jalview/datamodel/Alignment.java index f9de115..5a49540 100755 --- a/src/jalview/datamodel/Alignment.java +++ b/src/jalview/datamodel/Alignment.java @@ -1375,4 +1375,55 @@ public class Alignment implements AlignmentI return aa; } + @Override + public void moveSelectedSequencesByOne(SequenceGroup sg, + Map map, boolean up) + { + synchronized (sequences) + { + if (up) + { + + for (int i = 1, iSize = sequences.size(); i < iSize; i++) + { + SequenceI seq = sequences.get(i); + if (!sg.getSequences(map).contains(seq)) + { + continue; + } + + SequenceI temp = sequences.get(i - 1); + if (sg.getSequences(null).contains(temp)) + { + continue; + } + + sequences.set(i, temp); + sequences.set(i - 1, seq); + } + } + else + { + for (int i = sequences.size() - 2; i > -1; i--) + { + SequenceI seq = sequences.get(i); + if (!sg.getSequences(map).contains(seq)) + { + continue; + } + + SequenceI temp = sequences.get(i + 1); + if (sg.getSequences(map).contains(temp)) + { + continue; + } + + sequences.set(i, temp); + sequences.set(i + 1, seq); + } + } + + } + } + } diff --git a/src/jalview/datamodel/AlignmentI.java b/src/jalview/datamodel/AlignmentI.java index 1f6390e..3d61037 100755 --- a/src/jalview/datamodel/AlignmentI.java +++ b/src/jalview/datamodel/AlignmentI.java @@ -444,4 +444,15 @@ public interface AlignmentI extends AnnotatedCollectionI */ public AlignmentAnnotation findOrCreateAnnotation(String name, boolean autoCalc, SequenceI seqRef, SequenceGroup groupRef); + + /** + * move the given group up or down in the alignment by the given number of rows. + * Implementor assumes given group is already present on alignment - no recalculations are triggered. + * @param sg + * @param map + * @param up + * @param i + */ + public void moveSelectedSequencesByOne(SequenceGroup sg, + Map map, boolean up); } diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index f597a60..d8157c0 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -1508,52 +1508,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { return; } - - if (up) - { - for (int i = 1; i < viewport.getAlignment().getHeight(); i++) - { - SequenceI seq = viewport.getAlignment().getSequenceAt(i); - - if (!sg.getSequences(null).contains(seq)) - { - continue; - } - - SequenceI temp = viewport.getAlignment().getSequenceAt(i - 1); - - if (sg.getSequences(null).contains(temp)) - { - continue; - } - - viewport.getAlignment().getSequences().setElementAt(temp, i); - viewport.getAlignment().getSequences().setElementAt(seq, i - 1); - } - } - else - { - for (int i = viewport.getAlignment().getHeight() - 2; i > -1; i--) - { - SequenceI seq = viewport.getAlignment().getSequenceAt(i); - - if (!sg.getSequences(null).contains(seq)) - { - continue; - } - - SequenceI temp = viewport.getAlignment().getSequenceAt(i + 1); - - if (sg.getSequences(null).contains(temp)) - { - continue; - } - - viewport.getAlignment().getSequences().setElementAt(temp, i); - viewport.getAlignment().getSequences().setElementAt(seq, i + 1); - } - } - + viewport.getAlignment().moveSelectedSequencesByOne(sg, viewport.getHiddenRepSequences(), up); alignPanel.paintAlignment(true); }