diff --git a/biojava-structure-gui/pom.xml b/biojava-structure-gui/pom.xml index 97147f839b..8b96b88dea 100644 --- a/biojava-structure-gui/pom.xml +++ b/biojava-structure-gui/pom.xml @@ -42,7 +42,7 @@ net.sourceforge.jmol jmol - 14.6.2_2016.08.28 + 14.29.17 diff --git a/biojava-structure-gui/src/main/java/org/biojava/nbio/structure/align/gui/jmol/JmolPanel.java b/biojava-structure-gui/src/main/java/org/biojava/nbio/structure/align/gui/jmol/JmolPanel.java index 232b37d295..2aab5fc80c 100644 --- a/biojava-structure-gui/src/main/java/org/biojava/nbio/structure/align/gui/jmol/JmolPanel.java +++ b/biojava-structure-gui/src/main/java/org/biojava/nbio/structure/align/gui/jmol/JmolPanel.java @@ -126,30 +126,44 @@ public JmolStatusListener getStatusListener(){ public void executeCmd(String rasmolScript) { viewer.evalString(rasmolScript); } - - public void setStructure(final Structure s) - { + + public void setStructure(final Structure s, boolean useMmtf) { + this.structure = s; - try ( - PipedOutputStream out = new PipedOutputStream(); - // Viewer requires a BufferedInputStream for reflection - InputStream in = new BufferedInputStream(new PipedInputStream(out)); - ) { - new Thread((Runnable)() -> { - try { - MmtfActions.writeToOutputStream(s,out); - } catch (Exception e) { - logger.error("Error generating MMTF output for {}", - s.getStructureIdentifier()==null ? s.getStructureIdentifier().getIdentifier() : s.getName(), e); - } - }).start(); - viewer.openReader(null, in); - } catch (IOException e) { - logger.error("Error transfering {} to Jmol", - s.getStructureIdentifier()==null ? s.getStructureIdentifier().getIdentifier() : s.getName(), e); + + if (useMmtf) { + try ( + PipedOutputStream out = new PipedOutputStream(); + // Viewer requires a BufferedInputStream for reflection + InputStream in = new BufferedInputStream(new PipedInputStream(out)); + ) { + new Thread((Runnable)() -> { + try { + MmtfActions.writeToOutputStream(s,out); + } catch (Exception e) { + logger.error("Error generating MMTF output for {}", + s.getStructureIdentifier()==null ? s.getStructureIdentifier().getIdentifier() : s.getName(), e); + } + }).start(); + viewer.openReader(null, in); + } catch (IOException e) { + logger.error("Error transfering {} to Jmol", + s.getStructureIdentifier()==null ? s.getStructureIdentifier().getIdentifier() : s.getName(), e); + } + } else { + // Use mmCIF format + String serialized = s.toMMCIF(); + viewer.openStringInline(serialized); + } - + evalString("save STATE state_1"); + + } + + public void setStructure(final Structure s) { + // Set the default to MMCIF (until issue #629 is fixed) + setStructure(s, false); } /** assign a custom color to the Jmol chains command.