{\r
return;\r
}\r
-\r
- if (up)\r
- {\r
- for (int i = 1; i < viewport.getAlignment().getHeight(); i++)\r
- {\r
- SequenceI seq = viewport.getAlignment().getSequenceAt(i);\r
- if (!sg.getSequences(null).contains(seq))\r
- {\r
- continue;\r
- }\r
-\r
- SequenceI temp = viewport.getAlignment().getSequenceAt(i - 1);\r
- if (sg.getSequences(null).contains(temp))\r
- {\r
- continue;\r
- }\r
-\r
- viewport.getAlignment().getSequences().setElementAt(temp, i);\r
- viewport.getAlignment().getSequences().setElementAt(seq, i - 1);\r
- }\r
- }\r
- else\r
- {\r
- for (int i = viewport.getAlignment().getHeight() - 2; i > -1; i--)\r
- {\r
- SequenceI seq = viewport.getAlignment().getSequenceAt(i);\r
- if (!sg.getSequences(viewport.getHiddenRepSequences()).contains(seq))\r
- {\r
- continue;\r
- }\r
-\r
- SequenceI temp = viewport.getAlignment().getSequenceAt(i + 1);\r
- if (sg.getSequences(viewport.getHiddenRepSequences()).contains(temp))\r
- {\r
- continue;\r
- }\r
-\r
- viewport.getAlignment().getSequences().setElementAt(temp, i);\r
- viewport.getAlignment().getSequences().setElementAt(seq, i + 1);\r
- }\r
- }\r
-\r
+ viewport.getAlignment().moveSelectedSequencesByOne(sg, up ? null : viewport.getHiddenRepSequences(), up);\r
alignPanel.paintAlignment(true);\r
}\r
\r
return aa;
}
+ @Override
+ public void moveSelectedSequencesByOne(SequenceGroup sg,
+ Map<SequenceI, SequenceCollectionI> 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);
+ }
+ }
+
+ }
+ }
+
}
*/
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<SequenceI, SequenceCollectionI> map, boolean up);
}
{
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);
}