Merge branch 'develop' into features/r2_11_2_alphafold/JAL-629
[jalview.git] / src / jalview / gui / ImageExporter.java
index 32704d6..8d28b1b 100644 (file)
@@ -29,10 +29,12 @@ import jalview.bin.Cache;
 import jalview.bin.Jalview;
 import jalview.io.JalviewFileChooser;
 import jalview.io.JalviewFileView;
+import jalview.io.exceptions.ImageOutputException;
 import jalview.util.ImageMaker;
 import jalview.util.ImageMaker.TYPE;
 import jalview.util.MessageManager;
 import jalview.util.Platform;
+import jalview.util.StringUtils;
 import jalview.util.imagemaker.BitmapImageSizing;
 
 /**
@@ -103,7 +105,7 @@ public class ImageExporter
    *          what the image is of e.g. Tree, Alignment
    */
   public void doExport(File file, Component parent, int width, int height,
-          String imageSource)
+          String imageSource) throws ImageOutputException
   {
     doExport(file, parent, width, height, imageSource, null,
             BitmapImageSizing.nullBitmapImageSizing());
@@ -111,6 +113,7 @@ public class ImageExporter
 
   public void doExport(File file, Component parent, int width, int height,
           String imageSource, String renderer, BitmapImageSizing userBis)
+          throws ImageOutputException
   {
     final long messageId = System.currentTimeMillis();
     setStatus(
@@ -123,6 +126,12 @@ public class ImageExporter
      */
     if (file == null && !Jalview.isHeadlessMode())
     {
+      if (Desktop.instance.isInBatchMode())
+      {
+        // defensive error report - we could wait for user input.. I guess ?
+        throw (new ImageOutputException(
+                "Need an output file to render to when exporting images in batch mode!"));
+      }
       JalviewFileChooser chooser = imageType.getFileChooser();
       chooser.setFileView(new JalviewFileView());
       MessageManager.formatMessage("label.create_image_of",
@@ -158,9 +167,9 @@ public class ImageExporter
       renderStyle = "Text";
     }
     AtomicBoolean textSelected = new AtomicBoolean(
-            !"Lineart".equals(renderStyle));
-    if ((imageType == TYPE.EPS || imageType == TYPE.SVG)
-            && LineartOptions.PROMPT_EACH_TIME.equals(renderStyle)
+            !StringUtils.equalsIgnoreCase("lineart", renderStyle));
+    if ((imageType == TYPE.EPS || imageType == TYPE.SVG) && StringUtils
+            .equalsIgnoreCase(LineartOptions.PROMPT_EACH_TIME, renderStyle)
             && !Jalview.isHeadlessMode())
     {
       final File chosenFile = file;
@@ -182,8 +191,8 @@ public class ImageExporter
     else
     {
       /*
-       * character rendering not required, or preference already set 
-       * - just do the export
+       * character rendering not required, or preference already set
+       * or we're in headless mode - just do the export
        */
       exportImage(file, !textSelected.get(), width, height, messageId,
               userBis);
@@ -220,8 +229,8 @@ public class ImageExporter
               messageId);
     } catch (Exception e)
     {
-      System.out.println(String.format("Error creating %s file: %s", type,
-              e.toString()));
+      jalview.bin.Console.error(String.format("Error creating %s file: %s",
+              type, e.toString()), e);
       setStatus(MessageManager.formatMessage("info.error_creating_file",
               type), messageId);
     }