import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.io.File;
-import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.concurrent.Executors;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
}
jmb.executeCommand(new StructureCommand(command), false);
jmb.executeCommand(new StructureCommand("set hoverDelay=0.1"), false);
+ jmb.executeCommand(new StructureCommand("set antialiasdisplay on"),
+ false);
jmb.setFinishedInit(true);
}
}
if (waitTotal > waitMax)
{
- System.err.println("Timed out waiting for Jmol to load files after "
- + waitTotal + "ms");
- // System.err.println("finished: " + jmb.isFinishedInit()
+ jalview.bin.Console.errPrintln(
+ "Timed out waiting for Jmol to load files after "
+ + waitTotal + "ms");
+ // jalview.bin.Console.errPrintln("finished: " + jmb.isFinishedInit()
// + "; loaded: " + Arrays.toString(jmb.getPdbFile())
// + "; files: " + files.toString());
jmb.getStructureFiles();
@Override
public void makePDBImage(ImageMaker.TYPE type)
{
- try {
- makePDBImage(null, type, null,
- BitmapImageSizing.nullBitmapImageSizing());
- } catch (ImageOutputException ioex) {
- Console.error("Unexpected error whilst writing "+type.toString(),ioex);
+ try
+ {
+ makePDBImage(null, type, null,
+ BitmapImageSizing.defaultBitmapImageSizing(), null);
+ } catch (ImageOutputException ioex)
+ {
+ Console.error("Unexpected error whilst writing " + type.toString(),
+ ioex);
}
}
public void makePDBImage(File file, ImageMaker.TYPE type, String renderer,
- BitmapImageSizing userBis) throws ImageOutputException
+ BitmapImageSizing userBis, List<String> extraCommands)
+ throws ImageOutputException
{
int width = getWidth();
int height = getHeight();
BitmapImageSizing bis = ImageMaker.getScaleWidthHeight(width, height,
userBis);
- float usescale = bis.scale;
- int usewidth = bis.width;
- int useheight = bis.height;
+ float usescale = bis.scale();
+ int usewidth = bis.width();
+ int useheight = bis.height();
ImageWriterI writer = new ImageWriterI()
{
}
}
- jmb.jmolViewer.antialiased = true;
+ String saveStateNameTemp = "JalviewSaveStateTemp";
+ jmb.executeCommand(
+ new StructureCommand("save STATE " + saveStateNameTemp),
+ false);
+
+ if (extraCommands != null)
+ {
+ for (String cmd : extraCommands)
+ {
+ jmb.executeCommand(new StructureCommand(cmd), false);
+ }
+ }
+
jmb.jmolViewer.requestRepaintAndWait("image export");
jmb.jmolViewer.renderScreenImage(ig2, usewidth, useheight);
+ jmb.executeCommand(
+ new StructureCommand("restore STATE " + saveStateNameTemp),
+ false);
}
};
String view = MessageManager.getString("action.view")
.toLowerCase(Locale.ROOT);
final ImageExporter exporter = new ImageExporter(writer,
getProgressIndicator(), type, getTitle());
- // hack to pass back and throw to caller
+
final Throwable[] exceptions = new Throwable[1];
exceptions[0] = null;
final AppJmol us = this;
try
{
- SwingUtilities.invokeAndWait(new Runnable()
+ Thread runner = Executors.defaultThreadFactory()
+ .newThread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ try
+ {
+ exporter.doExport(file, us, width, height, view,
+ renderer, userBis);
+ } catch (Throwable t)
+ {
+ exceptions[0] = t;
+ }
+ }
+ });
+ runner.start();
+ do
{
- @Override
- public void run()
- {
- try
- {
- exporter.doExport(file, us, width, height, view, renderer,
- userBis);
- } catch (Throwable t)
- {
- exceptions[0] = t;
- }
- }
- });
- } catch (InvocationTargetException e)
+ Thread.sleep(25);
+ } while (runner.isAlive());
+ } catch (Throwable e)
{
throw new ImageOutputException(
"Unexpected error when generating image", e);
- } catch (InterruptedException e)
- {
- Console.debug("Interrupted whilst waiting for image export", e);
}
if (exceptions[0] != null)
{
.openURL("http://wiki.jmol.org");// http://jmol.sourceforge.net/docs/JmolUserGuide/");
} catch (Exception ex)
{
- System.err.println("Show Jmol help failed with: " + ex.getMessage());
+ jalview.bin.Console
+ .errPrintln("Show Jmol help failed with: " + ex.getMessage());
}
}