X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAppJmol.java;h=ffc80534aad61e1c6804c54e9f7e66e6cad08754;hb=4a67afac64ed574a5b79c7d33c97e58e26f60f30;hp=0dde2550942de057b4f08f8622e1cd9a07cdec04;hpb=aa643d0f2f5f506df2771e216af1618549d32050;p=jalview.git diff --git a/src/jalview/gui/AppJmol.java b/src/jalview/gui/AppJmol.java index 0dde255..ffc8053 100644 --- a/src/jalview/gui/AppJmol.java +++ b/src/jalview/gui/AppJmol.java @@ -41,6 +41,7 @@ import jalview.bin.Cache; import jalview.datamodel.AlignmentI; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; +import jalview.gui.ImageExporter.ImageWriterI; import jalview.gui.StructureViewer.ViewerType; import jalview.structure.StructureCommand; import jalview.structures.models.AAStructureBindingModel; @@ -255,23 +256,6 @@ public class AppJmol extends StructureViewerBase } @Override - public void closeViewer(boolean closeExternalViewer) - { - // Jmol does not use an external viewer - if (jmb != null) - { - jmb.closeViewer(); - } - setAlignmentPanel(null); - _aps.clear(); - _alignwith.clear(); - _colourwith.clear(); - // TODO: check for memory leaks where instance isn't finalised because jmb - // holds a reference to the window - jmb = null; - } - - @Override public void run() { _started = true; @@ -319,6 +303,8 @@ public class AppJmol extends StructureViewerBase } catch (Exception ex) { Cache.log.error("Couldn't open Jmol viewer!", ex); + ex.printStackTrace(); + return; } } else @@ -338,9 +324,12 @@ public class AppJmol extends StructureViewerBase new OOMWarning("When trying to add structures to the Jmol viewer!", oomerror); Cache.log.debug("File locations are " + filesString); + return; } catch (Exception ex) { Cache.log.error("Couldn't add files to Jmol viewer!", ex); + ex.printStackTrace(); + return; } } @@ -355,8 +344,10 @@ public class AppJmol extends StructureViewerBase try { Cache.log.debug("Waiting around for jmb notify."); - Thread.sleep(waitFor); waitTotal += waitFor; + + // Thread.sleep() throws an exception in JS + Thread.sleep(waitFor); } catch (Exception e) { } @@ -519,49 +510,30 @@ public class AppJmol extends StructureViewerBase return files; } + /** + * Outputs the Jmol viewer image as an image file, after prompting the user to + * choose a file and (for EPS) choice of Text or Lineart character rendering + * (unless a preference for this is set) + * + * @param type + */ @Override - public void eps_actionPerformed() - { - makePDBImage(ImageMaker.TYPE.EPS); - } - - @Override - public void png_actionPerformed() - { - makePDBImage(ImageMaker.TYPE.PNG); - } - - void makePDBImage(ImageMaker.TYPE type) + public void makePDBImage(ImageMaker.TYPE type) { int width = getWidth(); int height = getHeight(); - - ImageMaker im; - - if (type == ImageMaker.TYPE.PNG) - { - im = new ImageMaker(this, ImageMaker.TYPE.PNG, - "Make PNG image from view", - width, height, null, null, null, 0, false); - } - else if (type == ImageMaker.TYPE.EPS) - { - im = new ImageMaker(this, ImageMaker.TYPE.EPS, - "Make EPS file from view", - width, height, null, this.getTitle(), null, 0, false); - } - else - { - im = new jalview.util.ImageMaker(this, - ImageMaker.TYPE.SVG, "Make SVG file from PCA", - width, height, null, this.getTitle(), null, 0, false); - } - - if (im.getGraphics() != null) + ImageWriterI writer = new ImageWriterI() { - jmb.jmolViewer.renderScreenImage(im.getGraphics(), width, height); - im.writeImage(); - } + @Override + public void exportImage(Graphics g) throws Exception + { + jmb.jmolViewer.renderScreenImage(g, width, height); + } + }; + String view = MessageManager.getString("action.view").toLowerCase(); + ImageExporter exporter = new ImageExporter(writer, + getProgressIndicator(), type, getTitle()); + exporter.doExport(null, this, width, height, view); } @Override @@ -569,8 +541,8 @@ public class AppJmol extends StructureViewerBase { try { - BrowserLauncher - .openURL("http://jmol.sourceforge.net/docs/JmolUserGuide/"); + BrowserLauncher // BH 2018 + .openURL("http://wiki.jmol.org");//http://jmol.sourceforge.net/docs/JmolUserGuide/"); } catch (Exception ex) { System.err.println("Show Jmol help failed with: " + ex.getMessage());