X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FAlignmentView.java;h=8e596ceca355d76c01c33a364ebdb45fb6af9145;hb=797df64fa2a0a30773d0f48f5494d4155e5a8be3;hp=0b4e23677df8f5f5a195c6785109e2d4598568a6;hpb=659d52531c89150f901f7b12cb4c681bf73bf8c8;p=jalview.git diff --git a/src/jalview/datamodel/AlignmentView.java b/src/jalview/datamodel/AlignmentView.java index 0b4e236..8e596ce 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.6) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle * * This file is part of Jalview. * @@ -107,7 +107,7 @@ public class AlignmentView { Vector sel = selection.getSequences(null); this.selected = new Vector(); - selseqs = selection.getSequencesInOrder(alignment, false); + selseqs = selection.getSequencesInOrder(alignment, selectedRegionOnly); } else { @@ -115,7 +115,13 @@ public class AlignmentView } // get the alignment's group list and make a copy - Vector grps = new Vector(alignment.getGroups()); + Vector grps = new Vector(); + Vector gg = alignment.getGroups(); + Enumeration gge = gg.elements(); + while (gge.hasMoreElements()) + { + grps.addElement(gge.nextElement()); + } ScGroup[] sgrps = null; boolean addedgps[] = null; if (grps != null) @@ -128,7 +134,7 @@ public class AlignmentView // visible and selected region int ssel = selection.getStartRes(), esel = selection.getEndRes(); Vector isg = new Vector(); - Enumeration en = grps.elements(); + Enumeration en = grps.elements(); while (en.hasMoreElements()) { sg = (SequenceGroup) en.nextElement(); @@ -144,6 +150,9 @@ public class AlignmentView { sg.setEndRes(esel); } + sg.setStartRes(sg.getStartRes()-ssel+1); + sg.setEndRes(sg.getEndRes()-ssel+1); + isg.addElement(sg); } } @@ -177,7 +186,7 @@ public class AlignmentView { for (int sg = 0; sg < sgrps.length; sg++) { - if (((Vector) grps.get(sg)).contains(selseqs[i])) + if (((Vector) grps.elementAt(sg)).contains(selseqs[i])) { sequences[csi].setGroupMembership(sgrps[sg]); sgrps[sg].sg.deleteSequence(selseqs[i], false); @@ -326,7 +335,7 @@ public class AlignmentView * prune any groups to the visible coordinates of the alignment. */ { - int nvg = scGroups != null ? scGroups.size() : 0; + int nvg = (scGroups != null) ? scGroups.size() : 0; if (nvg > 0) { SequenceGroup[] nsg = new SequenceGroup[nvg]; @@ -342,9 +351,14 @@ public class AlignmentView continue; } } + + // clone group properties + nsg[g] = new SequenceGroup(sg); + // may need to shift/trim start and end ? if (r && !viscontigs) { + // Not fully tested code - routine not yet called with viscontigs==false if (nsg[g].getStartRes() < gstart) { nsg[g].setStartRes(0); @@ -354,14 +368,11 @@ public class AlignmentView nsg[g].setStartRes(nsg[g].getStartRes() - gstart); nsg[g].setEndRes(nsg[g].getEndRes() - gstart); } - if (nsg[g].getEndRes() > gend) + if (nsg[g].getEndRes() > (gend-gstart)) { - nsg[g].setEndRes(gend); + nsg[g].setEndRes(gend-gstart); } } - - // clone group properties - nsg[g] = new SequenceGroup(sg); } if (viscontigs) { @@ -983,9 +994,13 @@ public class AlignmentView public static void summariseAlignmentView(AlignmentView view, PrintStream os) { - os.println("View has " + view.sequences.length + " of which " - + (view.selected == null ? "None" : view.selected.size()) - + " are selected."); + os.print("View has " + view.sequences.length + " of which "); + if (view.selected == null) { + os.print("None"); + } else { + os.print(" "+view.selected.size()); + } + os.println(" are selected."); os.print("View is " + view.getWidth() + " columns wide"); int viswid = 0; int[] contigs = view.getContigs();