X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureViewer.java;h=8b501ad45311dfd7d9a3acc0f46986d93fa1d3c0;hb=2147e6f6d1d8e3e53db73f3806b48d117dc79083;hp=f37df711d8f0b3462f3a8ad113ddb3a1b125cf1b;hpb=591a5a4f3a552b103be552f1e942fb0c3a65cfa6;p=jalview.git diff --git a/src/jalview/gui/StructureViewer.java b/src/jalview/gui/StructureViewer.java index f37df71..8b501ad 100644 --- a/src/jalview/gui/StructureViewer.java +++ b/src/jalview/gui/StructureViewer.java @@ -64,6 +64,17 @@ public class StructureViewer ssm = structureSelectionManager; } + /** + * Factory to create a proxy for modifying existing structure viewer + * + */ + public static StructureViewer reconfigure( + JalviewStructureDisplayI display) + { + StructureViewer sv = new StructureViewer(display.getBinding().getSsm()); + sv.sview = display; + return sv; + } public ViewerType getViewerType() { String viewType = Cache.getDefault(Preferences.STRUCTURE_DISPLAY, @@ -104,6 +115,30 @@ public class StructureViewer new PDBEntry[seqsForPdbs.size()]); SequenceI[][] theSeqs = seqsForPdbs.values().toArray( new SequenceI[seqsForPdbs.size()][]); + if (sview != null) + { + new Thread(new Runnable() + { + @Override + public void run() + { + + for (int pdbep = 0; pdbep < pdbsForFile.length; pdbep++) + { + PDBEntry pdb = pdbsForFile[pdbep]; + if (!sview.addAlreadyLoadedFile(theSeqs[pdbep], null, ap, + pdb.getId())) + { + sview.addToExistingViewer(pdb, theSeqs[pdbep], null, ap, + pdb.getId()); + } + } + + sview.updateTitleAndMenus(); + } + }).start(); + return sview; + } if (viewerType.equals(ViewerType.JMOL)) { @@ -232,6 +267,15 @@ public class StructureViewer public JalviewStructureDisplayI viewStructures(PDBEntry pdb, SequenceI[] seqsForPdb, AlignmentPanel ap) { + if (sview != null) + { + if (!sview.addAlreadyLoadedFile(seqsForPdb, null, ap, pdb.getId())) + { + sview.addToExistingViewer(pdb, seqsForPdb, null, ap, pdb.getId()); + } + sview.updateTitleAndMenus(); + return sview; + } ViewerType viewerType = getViewerType(); if (viewerType.equals(ViewerType.JMOL)) {