X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FJalview.java;fp=src%2Fjalview%2Fbin%2FJalview.java;h=7535f6013fa00b77eea606728b0f7d45abcc17b4;hb=8a7a9401835f50b64bab13489de2781e8ced6ba8;hp=615e3186811f459800ee670891b13b049640b6cf;hpb=b25d6f028eaea9c382500355b5d118cd40799a8e;p=jalview.git diff --git a/src/jalview/bin/Jalview.java b/src/jalview/bin/Jalview.java index 615e318..7535f60 100755 --- a/src/jalview/bin/Jalview.java +++ b/src/jalview/bin/Jalview.java @@ -53,6 +53,7 @@ import java.util.stream.Collectors; import javax.swing.JDialog; import javax.swing.JFrame; +import javax.swing.JInternalFrame; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import javax.swing.UIManager; @@ -78,6 +79,7 @@ import jalview.gui.Desktop; import jalview.gui.PromptUserConfig; import jalview.gui.QuitHandler; import jalview.gui.QuitHandler.QResponse; +import jalview.gui.StructureViewerBase; import jalview.io.AppletFormatAdapter; import jalview.io.BioJsHTMLOutput; import jalview.io.DataSourceType; @@ -444,11 +446,29 @@ public class Jalview public void run() { Console.debug("Running shutdown hook"); + QuitHandler.startForceQuit(); + boolean closeExternal = Cache + .getDefault("DEFAULT_CLOSE_EXTERNAL_VIEWERS", false) + || Cache.getDefault("ALWAYS_CLOSE_EXTERNAL_VIEWERS", false); + StructureViewerBase.setQuitClose(closeExternal); + if (desktop != null) + { + for (JInternalFrame frame : Desktop.desktop.getAllFrames()) + { + if (frame instanceof StructureViewerBase) + { + ((StructureViewerBase) frame).closeViewer(closeExternal); + } + } + } + if (QuitHandler.gotQuitResponse() == QResponse.CANCEL_QUIT) { // Got to here by a SIGTERM signal. // Note we will not actually cancel the quit from here -- it's too - // late -- but we can wait for saving files. + // late -- but we can wait for saving files and close external viewers + // if configured. + // Close viewers/Leave viewers open Console.debug("Checking for saving files"); QuitHandler.getQuitResponse(false); } @@ -515,17 +535,17 @@ public class Jalview Jalview.exit(null, 0); } - if (bootstrapArgs.contains(Arg.HEADLESS)) + // new CLI + headlessArg = isHeadless(bootstrapArgs); + if (headlessArg) { System.setProperty("java.awt.headless", "true"); - // new - headlessArg = bootstrapArgs.getBoolean(Arg.HEADLESS); } + // old CLI if (aparser.contains("nodisplay") || aparser.contains("nogui") || aparser.contains("headless")) { System.setProperty("java.awt.headless", "true"); - // old headless = true; } // anything else! @@ -1866,4 +1886,26 @@ public class Jalview System.out.println("[TESTOUTPUT] arg " + (yes ? a.argString() : a.negateArgString()) + " was set"); } + + private static boolean isHeadless(BootstrapArgs bootstrapArgs) + { + if (bootstrapArgs == null) + { + return false; + } + boolean isHeadless = false; + if (bootstrapArgs.contains(Arg.GUI)) + { + isHeadless = !bootstrapArgs.getBoolean(Arg.GUI); + } + else if (bootstrapArgs.contains(Arg.HEADLESS)) + { + isHeadless = bootstrapArgs.getBoolean(Arg.HEADLESS); + } + else if (bootstrapArgs.argsHaveOption(Opt.OUTPUTFILE)) + { + isHeadless = true; + } + return isHeadless; + } }