From dda31e19407a907dcab8180c2ffc7fd4f193df28 Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Fri, 25 Mar 2016 15:33:38 +0000 Subject: [PATCH] =?utf8?q?JAL-2034=20JAL-1421=20use=20ArrayLists,=20and=20ma?= =?utf8?q?ke=20=E2=80=98selection=E2=80=99=20group=20an=20ScGroup?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/jalview/datamodel/AlignmentView.java | 59 ++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/src/jalview/datamodel/AlignmentView.java b/src/jalview/datamodel/AlignmentView.java index 756a116..fa72e80 100644 --- a/src/jalview/datamodel/AlignmentView.java +++ b/src/jalview/datamodel/AlignmentView.java @@ -26,7 +26,6 @@ import jalview.util.ShiftList; import java.io.PrintStream; import java.util.ArrayList; import java.util.List; -import java.util.Vector; /** * Transient object compactly representing a 'view' of an alignment - with @@ -69,13 +68,51 @@ public class AlignmentView */ private class ScGroup { - public Vector seqs; + public List seqs; public SequenceGroup sg; ScGroup() { - seqs = new Vector(); + seqs = new ArrayList(); + } + + /** + * @param seq + * @return true if seq was not a member before and was added to group + */ + public boolean add(SeqCigar seq) + { + if (!seq.isMemberOf(this)) + { + seqs.add(seq); + seq.setGroupMembership(this); + return true; + } + else + { + return false; + } + } + + /** + * + * @param seq + * @return true if seq was a member and was removed from group + */ + public boolean remove(SeqCigar seq) + { + if (seq.removeGroupMembership(this)) + { + seqs.remove(seq); + return true; + } + return false; + } + + public int size() + { + return seqs.size(); } } @@ -83,7 +120,7 @@ public class AlignmentView * vector of selected seqCigars. This vector is also referenced by each * seqCigar contained in it. */ - private Vector selected; + private ScGroup selected; /** * Construct an alignmentView from a live jalview alignment view. Note - @@ -124,7 +161,7 @@ public class AlignmentView if (selection != null && selection.getSize() > 0) { List sel = selection.getSequences(null); - this.selected = new Vector(); + this.selected = new ScGroup(); selseqs = selection .getSequencesInOrder(alignment, selectedRegionOnly); } @@ -194,8 +231,7 @@ public class AlignmentView if (selection != null && selection.getSize() > 0 && !selectedRegionOnly) { - sequences[csi].setGroupMembership(selected); - selected.addElement(sequences[csi]); + selected.add(sequences[csi]); } if (seqsets != null) { @@ -203,9 +239,8 @@ public class AlignmentView { if ((seqsets.get(sg)).contains(selseqs[i])) { - sequences[csi].setGroupMembership(sgrps[sg]); sgrps[sg].sg.deleteSequence(selseqs[i], false); - sgrps[sg].seqs.addElement(sequences[csi]); + sgrps[sg].add(sequences[csi]); if (!addedgps[sg]) { if (scGroups == null) @@ -1073,10 +1108,10 @@ public class AlignmentView + sgr.sg.getEndRes()); for (int s = 0; s < sgr.seqs.size(); s++) { - if (!((SeqCigar) sgr.seqs.elementAt(s)).isMemberOf(sgr)) + // JBPnote this should be a unit test for ScGroup + if (!sgr.seqs.get(s).isMemberOf(sgr)) { - os.println("** WARNING: sequence " - + ((SeqCigar) sgr.seqs.elementAt(s)).toString() + os.println("** WARNING: sequence " + sgr.seqs.get(s).toString() + " is not marked as member of group."); } } -- 1.7.10.2