X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignViewport.java;h=13f66d973ffeaf84e2085f32bd7e07f85db678c4;hb=d25788049914c6da6c71d203822a9adfe548d3be;hp=ff21931ca327e94230cee87c8d71b2637e25ee99;hpb=df5ad7ed6689ae04034c3ade2c9d725de7619b68;p=jalview.git diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java old mode 100755 new mode 100644 index ff21931..13f66d9 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.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, G Barton, M Clamp, S Searle * * This file is part of Jalview. * @@ -40,6 +40,7 @@ import java.util.*; import java.awt.*; import jalview.analysis.*; +import jalview.api.StructureSelectionManagerProvider; import jalview.bin.*; @@ -54,7 +55,7 @@ import jalview.structure.VamsasSource; * DOCUMENT ME! * * @author $author$ - * @version $Revision$ + * @version $Revision: 1.141 $ */ public class AlignViewport implements SelectionSource, VamsasSource { @@ -940,13 +941,13 @@ public class AlignViewport implements SelectionSource, VamsasSource { if (alignment != null && alignment.getCodonFrames() != null) { - StructureSelectionManager.getStructureSelectionManager() + StructureSelectionManager.getStructureSelectionManager(Desktop.instance) .removeMappings(alignment.getCodonFrames()); } this.alignment = align; if (alignment.getCodonFrames() != null) { - StructureSelectionManager.getStructureSelectionManager().addMappings( + StructureSelectionManager.getStructureSelectionManager(Desktop.instance).addMappings( alignment.getCodonFrames()); } } @@ -2014,32 +2015,34 @@ public class AlignViewport implements SelectionSource, VamsasSource /** * checks current SelectionGroup against record of last hash value, and * updates record. + * @param b update the record of last hash value * - * @return true if SelectionGroup changed since last call + * @return true if SelectionGroup changed since last call (when b is true) */ - boolean isSelectionGroupChanged() + boolean isSelectionGroupChanged(boolean b) { - int hc = (selectionGroup == null) ? -1 : selectionGroup.hashCode(); - if (hc != sgrouphash) + int hc = (selectionGroup == null || selectionGroup.getSize()==0) ? -1 : selectionGroup.hashCode(); + if (hc!=-1 && hc != sgrouphash) { - sgrouphash = hc; + if (b) {sgrouphash = hc;} return true; } return false; } /** - * checks current colsel against record of last hash value, and updates + * checks current colsel against record of last hash value, and optionally updates * record. - * - * @return true if colsel changed since last call + + * @param b update the record of last hash value + * @return true if colsel changed since last call (when b is true) */ - boolean isColSelChanged() + boolean isColSelChanged(boolean b) { - int hc = (colSel == null) ? -1 : colSel.hashCode(); - if (hc != colselhash) + int hc = (colSel == null || colSel.size()==0) ? -1 : colSel.hashCode(); + if (hc!=-1 && hc != colselhash) { - colselhash = hc; + if (b) {colselhash = hc;} return true; } return false; @@ -2048,7 +2051,7 @@ public class AlignViewport implements SelectionSource, VamsasSource public void sendSelection() { jalview.structure.StructureSelectionManager - .getStructureSelectionManager().sendSelection( + .getStructureSelectionManager(Desktop.instance).sendSelection( new SequenceGroup(getSelectionGroup()), new ColumnSelection(getColumnSelection()), this); } @@ -2240,4 +2243,43 @@ public class AlignViewport implements SelectionSource, VamsasSource } } } + + public StructureSelectionManager getStructureSelectionManager() + { + return StructureSelectionManager.getStructureSelectionManager(Desktop.instance); + } + + /** + * + * @param pdbEntries + * @return a series of SequenceI arrays, one for each PDBEntry, listing which sequence in the alignment holds a reference to it + */ + public SequenceI[][] collateForPDB(PDBEntry[] pdbEntries) + { + ArrayList seqvectors = new ArrayList(); + for (PDBEntry pdb: pdbEntries) { + ArrayList seqs = new ArrayList(); + for (int i = 0; i < alignment.getHeight(); i++) + { + Vector pdbs = alignment.getSequenceAt(i) + .getDatasetSequence().getPDBId(); + if (pdbs == null) + continue; + SequenceI sq; + for (int p = 0; p < pdbs.size(); p++) + { + PDBEntry p1 = (PDBEntry) pdbs.elementAt(p); + if (p1.getId().equals(pdb.getId())) + { + if (!seqs.contains(sq=alignment.getSequenceAt(i))) + seqs.add(sq); + + continue; + } + } + } + seqvectors.add(seqs.toArray(new SequenceI[seqs.size()])); + } + return seqvectors.toArray(new SequenceI[seqvectors.size()][]); + } }