X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureViewer.java;h=ad3fc6aa0fffb60d8231183bf87f0b618ddf1cda;hb=8dca84768d848bc368985a8f0938a6c7ac059952;hp=ad412b09e5c4037c77e81dca9af6c0c37bdbac79;hpb=cb8e52fbbc5f725e3f7f48c672cdddb0690bd978;p=jalview.git diff --git a/src/jalview/gui/StructureViewer.java b/src/jalview/gui/StructureViewer.java index ad412b0..ad3fc6a 100644 --- a/src/jalview/gui/StructureViewer.java +++ b/src/jalview/gui/StructureViewer.java @@ -21,9 +21,11 @@ package jalview.gui; import java.util.ArrayList; +import java.util.EnumSet; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; @@ -54,9 +56,39 @@ 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 + JMOL, CHIMERA, CHIMERAX, PYMOL; + + public static ViewerType getFromString(String viewerString) + { + ViewerType viewerType = null; + if (!"none".equals(viewerString)) + { + for (ViewerType v : EnumSet.allOf(ViewerType.class)) + { + String name = v.name().toLowerCase(Locale.ROOT).replaceAll(" ", + ""); + if (viewerString.equals(name)) + { + viewerType = v; + break; + } + } + } + return viewerType; + } + }; /** @@ -64,7 +96,8 @@ public class StructureViewer * * @param structureSelectionManager */ - public StructureViewer(StructureSelectionManager structureSelectionManager) + public StructureViewer( + StructureSelectionManager structureSelectionManager) { ssm = structureSelectionManager; } @@ -81,7 +114,6 @@ public class StructureViewer return sv; } - @Override public String toString() { @@ -91,9 +123,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() { @@ -118,6 +151,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) { @@ -127,18 +166,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() @@ -157,7 +198,15 @@ public class StructureViewer sview.updateTitleAndMenus(); } - }).start(); + }; + if (async) + { + new Thread(viewRunnable).start(); + } + else + { + viewRunnable.run(); + } return sview; } @@ -295,9 +344,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); @@ -310,7 +370,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); @@ -372,7 +433,6 @@ public class StructureViewer return viewer; } - public boolean isBusy() { if (sview != null)