X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureViewer.java;h=6cef66575ed5ac76d6407611360c1a4db32ea981;hb=f754db87420bc03f4665bda29593aab07d186dcb;hp=40f9ae1cca5bbd9dc444011c808a4a474a18aeee;hpb=a1984b1c8c273ed33c7ce9283039f4027dcae2de;p=jalview.git diff --git a/src/jalview/gui/StructureViewer.java b/src/jalview/gui/StructureViewer.java index 40f9ae1..6cef665 100644 --- a/src/jalview/gui/StructureViewer.java +++ b/src/jalview/gui/StructureViewer.java @@ -29,6 +29,7 @@ import java.util.Map.Entry; import jalview.api.structures.JalviewStructureDisplayI; import jalview.bin.Cache; +import jalview.bin.Console; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; import jalview.datamodel.StructureViewerModel; @@ -53,6 +54,16 @@ public class StructureViewer */ private boolean superposeAdded = true; + /** + * whether to open structures in their own thread or not + */ + private boolean async = true; + + public void setAsync(boolean b) + { + async = b; + } + public enum ViewerType { JMOL, CHIMERA, CHIMERAX, PYMOL @@ -63,7 +74,8 @@ public class StructureViewer * * @param structureSelectionManager */ - public StructureViewer(StructureSelectionManager structureSelectionManager) + public StructureViewer( + StructureSelectionManager structureSelectionManager) { ssm = structureSelectionManager; } @@ -80,7 +92,6 @@ public class StructureViewer return sv; } - @Override public String toString() { @@ -90,9 +101,10 @@ public class StructureViewer } return "New View"; } + /** * - * @return ViewerType for currently configured structure viewer + * @return ViewerType for currently configured structure viewer */ public static ViewerType getViewerType() { @@ -117,6 +129,12 @@ public class StructureViewer public JalviewStructureDisplayI viewStructures(PDBEntry[] pdbs, SequenceI[] seqs, AlignmentPanel ap) { + return viewStructures(pdbs, seqs, ap, null); + } + + public JalviewStructureDisplayI viewStructures(PDBEntry[] pdbs, + SequenceI[] seqs, AlignmentPanel ap, ViewerType viewerType) + { JalviewStructureDisplayI viewer = onlyOnePdb(pdbs, seqs, ap); if (viewer != null) { @@ -126,18 +144,20 @@ public class StructureViewer return viewer; } - ViewerType viewerType = getViewerType(); + if (viewerType == null) + viewerType = getViewerType(); Map seqsForPdbs = getSequencesForPdbs(pdbs, seqs); - PDBEntry[] pdbsForFile = seqsForPdbs.keySet().toArray( - new PDBEntry[seqsForPdbs.size()]); - SequenceI[][] theSeqs = seqsForPdbs.values().toArray( - new SequenceI[seqsForPdbs.size()][]); + PDBEntry[] pdbsForFile = seqsForPdbs.keySet() + .toArray(new PDBEntry[seqsForPdbs.size()]); + SequenceI[][] theSeqs = seqsForPdbs.values() + .toArray(new SequenceI[seqsForPdbs.size()][]); if (sview != null) { sview.setAlignAddedStructures(superposeAdded); - new Thread(new Runnable() + + Runnable viewRunnable = new Runnable() { @Override public void run() @@ -156,7 +176,15 @@ public class StructureViewer sview.updateTitleAndMenus(); } - }).start(); + }; + if (async) + { + new Thread(viewRunnable).start(); + } + else + { + viewRunnable.run(); + } return sview; } @@ -180,7 +208,7 @@ public class StructureViewer } else { - Cache.error(UNKNOWN_VIEWER_TYPE + getViewerType().toString()); + Console.error(UNKNOWN_VIEWER_TYPE + getViewerType().toString()); } return sview; } @@ -294,9 +322,20 @@ public class StructureViewer JalviewStructureDisplayI sview = null; + public JalviewStructureDisplayI getJalviewStructureDisplay() + { + return sview; + } + public JalviewStructureDisplayI viewStructures(PDBEntry pdb, SequenceI[] seqsForPdb, AlignmentPanel ap) { + return viewStructures(pdb, seqsForPdb, ap, null); + } + + public JalviewStructureDisplayI viewStructures(PDBEntry pdb, + SequenceI[] seqsForPdb, AlignmentPanel ap, ViewerType viewerType) + { if (sview != null) { sview.setAlignAddedStructures(superposeAdded); @@ -309,7 +348,8 @@ public class StructureViewer sview.raiseViewer(); return sview; } - ViewerType viewerType = getViewerType(); + if (viewerType == null) + viewerType = getViewerType(); if (viewerType.equals(ViewerType.JMOL)) { sview = new AppJmol(pdb, seqsForPdb, null, ap); @@ -328,7 +368,7 @@ public class StructureViewer } else { - Cache.error(UNKNOWN_VIEWER_TYPE + getViewerType().toString()); + Console.error(UNKNOWN_VIEWER_TYPE + getViewerType().toString()); } return sview; } @@ -366,12 +406,11 @@ public class StructureViewer viewer = new PymolViewer(viewerData, alignPanel, sessionFile, vid); break; default: - Cache.error(UNKNOWN_VIEWER_TYPE + type.toString()); + Console.error(UNKNOWN_VIEWER_TYPE + type.toString()); } return viewer; } - public boolean isBusy() { if (sview != null)