X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignmentView.java;h=a61d0d154c76ff5f784619975548c4983dd6d18b;hb=536a4a9c407a4c07b71e86e75135eaa2ba5e8850;hp=e7c9316909d12e04d958166f1f309881a3056b1e;hpb=838e4f91d4a53dd315640dbc9ff6ef7a815ee576;p=jalview.git diff --git a/src/jalview/datamodel/AlignmentView.java b/src/jalview/datamodel/AlignmentView.java index e7c9316..a61d0d1 100644 --- a/src/jalview/datamodel/AlignmentView.java +++ b/src/jalview/datamodel/AlignmentView.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b1) - * Copyright (C) 2015 The Jalview Authors + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * @@ -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 - @@ -104,13 +141,14 @@ public class AlignmentView * the view */ public AlignmentView(AlignmentI alignment, - ColumnSelection columnSelection, SequenceGroup selection, + HiddenColumns hidden, + SequenceGroup selection, boolean hasHiddenColumns, boolean selectedRegionOnly, boolean recordGroups) { // refactored from AlignViewport.getAlignmentView(selectedOnly); this(new jalview.datamodel.CigarArray(alignment, - (hasHiddenColumns ? columnSelection : null), + (hasHiddenColumns ? hidden : null), (selectedRegionOnly ? selection : null)), (selectedRegionOnly && selection != null) ? selection .getStartRes() : 0); @@ -124,7 +162,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 +232,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 +240,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) @@ -242,8 +278,7 @@ public class AlignmentView if (!seqcigararray.isSeqCigarArray()) { throw new Error( - MessageManager - .getString("error.implementation_error_can_only_make_alignmnet_from_cigararray")); + "Implementation Error - can only make an alignment view from a CigarArray of sequences."); } // contigs = seqcigararray.applyDeletions(); contigs = seqcigararray.getDeletedRegions(); @@ -296,13 +331,13 @@ public class AlignmentView * char * @return Object[] { SequenceI[], ColumnSelection} */ - public Object[] getAlignmentAndColumnSelection(char gapCharacter) + public Object[] getAlignmentAndHiddenColumns(char gapCharacter) { - ColumnSelection colsel = new ColumnSelection(); + HiddenColumns hidden = new HiddenColumns(); return new Object[] { - SeqCigar.createAlignmentSequences(sequences, gapCharacter, colsel, - contigs), colsel }; + SeqCigar.createAlignmentSequences(sequences, gapCharacter, hidden, + contigs), hidden }; } /** @@ -676,7 +711,8 @@ public class AlignmentView if (contigs != null && contigs.length > 0) { SequenceI[] alignment = new SequenceI[sequences.length]; - ColumnSelection columnselection = new ColumnSelection(); + // ColumnSelection columnselection = new ColumnSelection(); + HiddenColumns hidden = new HiddenColumns(); if (contigs != null && contigs.length > 0) { int start = 0; @@ -789,7 +825,7 @@ public class AlignmentView } } // mark hidden segment as hidden in the new alignment - columnselection.hideColumns(nwidth, nwidth + contigs[contig + 2] + hidden.hideColumns(nwidth, nwidth + contigs[contig + 2] - 1); nwidth += contigs[contig + 2]; } @@ -867,7 +903,7 @@ public class AlignmentView } } } - return new Object[] { alignment, columnselection }; + return new Object[] { alignment, hidden }; } else { @@ -886,7 +922,7 @@ public class AlignmentView } else { - return getAlignmentAndColumnSelection(gapCharacter); + return getAlignmentAndHiddenColumns(gapCharacter); } } } @@ -1073,10 +1109,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."); } } @@ -1101,7 +1137,7 @@ public class AlignmentView } public static void testSelectionViews(AlignmentI alignment, - ColumnSelection csel, SequenceGroup selection) + HiddenColumns hidden, SequenceGroup selection) { System.out.println("Testing standard view creation:\n"); AlignmentView view = null; @@ -1109,7 +1145,7 @@ public class AlignmentView { System.out .println("View with no hidden columns, no limit to selection, no groups to be collected:"); - view = new AlignmentView(alignment, csel, selection, false, false, + view = new AlignmentView(alignment, hidden, selection, false, false, false); summariseAlignmentView(view, System.out); @@ -1123,7 +1159,7 @@ public class AlignmentView { System.out .println("View with no hidden columns, no limit to selection, and all groups to be collected:"); - view = new AlignmentView(alignment, csel, selection, false, false, + view = new AlignmentView(alignment, hidden, selection, false, false, true); summariseAlignmentView(view, System.out); } catch (Exception e) @@ -1136,7 +1172,7 @@ public class AlignmentView { System.out .println("View with no hidden columns, limited to selection and no groups to be collected:"); - view = new AlignmentView(alignment, csel, selection, false, true, + view = new AlignmentView(alignment, hidden, selection, false, true, false); summariseAlignmentView(view, System.out); } catch (Exception e) @@ -1149,7 +1185,7 @@ public class AlignmentView { System.out .println("View with no hidden columns, limited to selection, and all groups to be collected:"); - view = new AlignmentView(alignment, csel, selection, false, true, + view = new AlignmentView(alignment, hidden, selection, false, true, true); summariseAlignmentView(view, System.out); } catch (Exception e) @@ -1162,7 +1198,7 @@ public class AlignmentView { System.out .println("View *with* hidden columns, no limit to selection, no groups to be collected:"); - view = new AlignmentView(alignment, csel, selection, true, false, + view = new AlignmentView(alignment, hidden, selection, true, false, false); summariseAlignmentView(view, System.out); } catch (Exception e) @@ -1175,7 +1211,7 @@ public class AlignmentView { System.out .println("View *with* hidden columns, no limit to selection, and all groups to be collected:"); - view = new AlignmentView(alignment, csel, selection, true, false, + view = new AlignmentView(alignment, hidden, selection, true, false, true); summariseAlignmentView(view, System.out); } catch (Exception e) @@ -1188,7 +1224,7 @@ public class AlignmentView { System.out .println("View *with* hidden columns, limited to selection and no groups to be collected:"); - view = new AlignmentView(alignment, csel, selection, true, true, + view = new AlignmentView(alignment, hidden, selection, true, true, false); summariseAlignmentView(view, System.out); } catch (Exception e) @@ -1201,7 +1237,8 @@ public class AlignmentView { System.out .println("View *with* hidden columns, limited to selection, and all groups to be collected:"); - view = new AlignmentView(alignment, csel, selection, true, true, true); + view = new AlignmentView(alignment, hidden, selection, true, true, + true); summariseAlignmentView(view, System.out); } catch (Exception e) {