X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fgui%2FAppJmol.java;h=19178f23b7d62ed8fd977c3ed19de3e023851dd4;hb=a35cbe12ed4e2e736bd73695ece71d59671cabb8;hp=74a9c221ee3787ea37eabf067cfea2a878cb4f15;hpb=3357d18e685c4fd5f089df73f0290eb1b72ce0ee;p=jalview.git diff --git a/src/jalview/gui/AppJmol.java b/src/jalview/gui/AppJmol.java index 74a9c22..19178f2 100644 --- a/src/jalview/gui/AppJmol.java +++ b/src/jalview/gui/AppJmol.java @@ -1,5 +1,5 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5) + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle * * This file is part of Jalview. @@ -40,6 +40,7 @@ import org.jmol.api.*; import org.jmol.adapter.smarter.SmarterJmolAdapter; import org.jmol.popup.*; import org.jmol.viewer.JmolConstants; +import org.openscience.jmol.app.jmolpanel.AppConsole; public class AppJmol extends GStructureViewer implements Runnable, SequenceStructureBinding @@ -47,7 +48,7 @@ public class AppJmol extends GStructureViewer implements Runnable, { AppJmolBinding jmb; - ScriptWindow scriptWindow; + JPanel scriptWindow; JSplitPane splitPane; @@ -254,12 +255,13 @@ public class AppJmol extends GStructureViewer implements Runnable, * @param pdbentry * @param seq * @param chains - * @param alignFrame + * @param alignFrame * @param align * if true, new structure(s) will be align using associated alignment */ private void addStructure(final PDBEntry pdbentry, final SequenceI[] seq, - final String[] chains, final boolean b, final IProgressIndicator alignFrame) + final String[] chains, final boolean b, + final IProgressIndicator alignFrame) { if (pdbentry.getFile() == null) { @@ -297,7 +299,7 @@ public class AppJmol extends GStructureViewer implements Runnable, addingStructures = true; _started = false; alignAddedStructures = b; - progressBar = alignFrame; // visual indication happens on caller frame. + progressBar = alignFrame; // visual indication happens on caller frame. (worker = new Thread(this)).start(); return; } @@ -332,7 +334,17 @@ public class AppJmol extends GStructureViewer implements Runnable, this.getContentPane().add(renderPanel, java.awt.BorderLayout.CENTER); jalview.gui.Desktop.addInternalFrame(this, jmb.getViewerTitle(), getBounds().width, getBounds().height); - jmb.allocateViewer(renderPanel, true, "", null, null, ""); + if (scriptWindow == null) + { + BorderLayout bl = new BorderLayout(); + bl.setHgap(0); + bl.setVgap(0); + scriptWindow = new JPanel(bl); + scriptWindow.setVisible(false); + } + ; + jmb.allocateViewer(renderPanel, true, "", null, null, "", scriptWindow, + null); jmb.newJmolPopup(true, "Jmol", true); jmb.evalStateCommand(command); jmb.setFinishedInit(true); @@ -405,6 +417,7 @@ public class AppJmol extends GStructureViewer implements Runnable, void closeViewer() { jmb.closeViewer(); + // TODO: check for memory leaks where instance isn't finalised because jmb // holds a reference to the window jmb = null; @@ -435,11 +448,10 @@ public class AppJmol extends GStructureViewer implements Runnable, // retrieve the pdb and store it locally AlignmentI pdbseq = null; pdbid = jmb.pdbentry[pi].getId(); - long hdl=pdbid.hashCode()-System.currentTimeMillis(); + long hdl = pdbid.hashCode() - System.currentTimeMillis(); if (progressBar != null) { - progressBar.setProgressBar("Fetching PDB " + pdbid, - hdl); + progressBar.setProgressBar("Fetching PDB " + pdbid, hdl); } try { @@ -534,6 +546,7 @@ public class AppJmol extends GStructureViewer implements Runnable, cmd.append("\nloadingJalviewdata=null"); final String command = cmd.toString(); cmd = null; + long lastnotify = jmb.getLoadNotifiesHandled(); try { jmb.evalStateCommand(command); @@ -547,23 +560,23 @@ public class AppJmol extends GStructureViewer implements Runnable, { Cache.log.error("Couldn't add files to Jmol viewer!", ex); } - long lastnotify=jmb.getLoadNotifiesHandled(); - // need to wait around until script has finished - while (lastnotify>=jmb.getLoadNotifiesHandled()); + // need to wait around until script has finished + while (lastnotify >= jmb.getLoadNotifiesHandled()) + ; + { + try { - try - { - Thread.sleep(35); - } catch (Exception e) - { - } - } - // refresh the sequence colours for the new structure(s) - jmb.updateColours(ap); - // do superposition if asked to - if (alignAddedStructures) + Thread.sleep(35); + } catch (Exception e) { - javax.swing.SwingUtilities.invokeLater(new Runnable() + } + } + // refresh the sequence colours for the new structure(s) + jmb.updateColours(ap); + // do superposition if asked to + if (alignAddedStructures) + { + javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { @@ -780,8 +793,6 @@ public class AppJmol extends GStructureViewer implements Runnable, public void showConsole(boolean showConsole) { - if (scriptWindow == null) - scriptWindow = new ScriptWindow(this); if (showConsole) { @@ -791,15 +802,19 @@ public class AppJmol extends GStructureViewer implements Runnable, splitPane.setTopComponent(renderPanel); splitPane.setBottomComponent(scriptWindow); this.getContentPane().add(splitPane, BorderLayout.CENTER); + splitPane.setDividerLocation(getHeight() - 200); + scriptWindow.setVisible(true); + scriptWindow.validate(); + splitPane.validate(); } - splitPane.setDividerLocation(getHeight() - 200); - splitPane.validate(); } else { if (splitPane != null) + { splitPane.setVisible(false); + } splitPane = null;