X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FChimeraViewFrame.java;h=a89af2c56c2992d0cd16add3f333c48da63e2121;hb=a7ea1ba47dae32481aa6390a29cef6c7c5a403c4;hp=fdc7d0bb71f5caf2d19a32b898ea4c75cb13d4d8;hpb=8f9a21c422709588ddd5893904b47d01244937cd;p=jalview.git diff --git a/src/jalview/gui/ChimeraViewFrame.java b/src/jalview/gui/ChimeraViewFrame.java index fdc7d0b..a89af2c 100644 --- a/src/jalview/gui/ChimeraViewFrame.java +++ b/src/jalview/gui/ChimeraViewFrame.java @@ -328,8 +328,10 @@ public class ChimeraViewFrame extends StructureViewerBase { createProgressBar(); + String[][] chains = extractChains(seqs); jmb = new JalviewChimeraBindingModel(this, - ap.getStructureSelectionManager(), pdbentrys, seqs, null, null); + ap.getStructureSelectionManager(), pdbentrys, seqs, chains, + null); addAlignmentPanel(ap); useAlignmentPanelForColourbyseq(ap); if (pdbentrys.length > 1) @@ -356,6 +358,38 @@ public class ChimeraViewFrame extends StructureViewerBase } /** + * Retrieve chains for sequences by inspecting their PDB refs. The hope is + * that the first will be to the sequence's own chain. Really need a more + * managed way of doing this. + * + * @param seqs + * @return + */ + protected String[][] extractChains(SequenceI[][] seqs) + { + String[][] chains = new String[seqs.length][]; + for (int i = 0; i < seqs.length; i++) + { + chains[i] = new String[seqs[i].length]; + int seqno = 0; + for (SequenceI seq : seqs[i]) + { + String chain = null; + if (seq.getDatasetSequence() != null) + { + Vector pdbrefs = seq.getDatasetSequence().getPDBId(); + if (pdbrefs != null && pdbrefs.size() > 0) + { + chain = pdbrefs.get(0).getChainCode(); + } + } + chains[i][seqno++] = chain; + } + } + return chains; + } + + /** * create a new viewer containing several structures superimposed using the * given alignPanel. * @@ -897,11 +931,7 @@ public class ChimeraViewFrame extends StructureViewerBase jalview.gui.CutAndPasteTransfer cap = new jalview.gui.CutAndPasteTransfer(); try { - for (int pdbe = 0; pdbe < jmb.getPdbCount(); pdbe++) - { - cap.appendText(jmb.printMapping(jmb.getPdbEntry(pdbe).getFile())); - cap.appendText("\n"); - } + cap.appendText(jmb.printMappings()); } catch (OutOfMemoryError e) { new OOMWarning( @@ -1197,4 +1227,10 @@ public class ChimeraViewFrame extends StructureViewerBase { return this.chimeraSessionFile; } + + @Override + protected void fitToWindow_actionPerformed() + { + jmb.focusView(); + } }