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.Callable;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.FutureTask;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import jalview.datamodel.StructureViewerModel.StructureData;
import jalview.gui.ImageExporter.ImageWriterI;
import jalview.gui.StructureViewer.ViewerType;
+import jalview.io.exceptions.ImageOutputException;
import jalview.structure.StructureCommand;
import jalview.structures.models.AAStructureBindingModel;
import jalview.util.BrowserLauncher;
@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);
+ }
}
public void makePDBImage(File file, ImageMaker.TYPE type, String renderer,
- BitmapImageSizing userBis)
+ BitmapImageSizing userBis) throws ImageOutputException
{
int width = getWidth();
int height = getHeight();
};
String view = MessageManager.getString("action.view")
.toLowerCase(Locale.ROOT);
- ImageExporter exporter = new ImageExporter(writer,
+ final ImageExporter exporter = new ImageExporter(writer,
getProgressIndicator(), type, getTitle());
- exporter.doExport(file, this, width, height, view, renderer, userBis);
+
+ final Throwable[] exceptions = new Throwable[1];
+ exceptions[0] = null;
+ final AppJmol us = this;
+ try
+ {
+ 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 { Thread.sleep(25); } while (runner.isAlive());
+ } catch (Throwable e)
+ {
+ throw new ImageOutputException(
+ "Unexpected error when generating image", e);
+ }
+ if (exceptions[0] != null)
+ {
+ if (exceptions[0] instanceof ImageOutputException)
+ {
+ throw ((ImageOutputException) exceptions[0]);
+ }
+ else
+ {
+ throw new ImageOutputException(
+ "Unexpected error when generating image", exceptions[0]);
+ }
+ }
}
@Override