X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FJalview.java;h=b29d9d72cc2d70e92729b7d3e6c0835fe7db6c32;hb=65ed1da9a1710a9ce132c7edfce54955dc1ddf99;hp=615e3186811f459800ee670891b13b049640b6cf;hpb=3c8d2ce11ea400d82cb79d1ac9da6423cecc2980;p=jalview.git diff --git a/src/jalview/bin/Jalview.java b/src/jalview/bin/Jalview.java index 615e318..b29d9d7 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; @@ -341,6 +343,25 @@ public class Jalview } } + // set individual session preferences + if (bootstrapArgs.contains(Arg.P)) + { + for (String kev : bootstrapArgs.getValueList(Arg.P)) + { + if (kev == null) + { + continue; + } + int equalsIndex = kev.indexOf(ArgParser.EQUALS); + if (equalsIndex > -1) + { + String key = kev.substring(0, equalsIndex); + String val = kev.substring(equalsIndex + 1); + Cache.setSessionProperty(key, val); + } + } + } + // Move any new getdown-launcher-new.jar into place over old // getdown-launcher.jar String appdirString = System.getProperty("getdownappdir"); @@ -394,7 +415,7 @@ public class Jalview // get bootstrap properties (mainly for the logger level) Properties bootstrapProperties = Cache - .bootstrapProperties(bootstrapArgs.get(Arg.PROPS)); + .bootstrapProperties(bootstrapArgs.getValue(Arg.PROPS)); // report Jalview version Cache.loadBuildProperties( @@ -444,11 +465,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); } @@ -462,7 +501,7 @@ public class Jalview }); String usrPropsFile = bootstrapArgs.contains(Arg.PROPS) - ? bootstrapArgs.get(Arg.PROPS) + ? bootstrapArgs.getValue(Arg.PROPS) : aparser.getValue("props"); // if usrPropsFile == null, loadProperties will use the Channel // preferences.file @@ -515,17 +554,17 @@ public class Jalview Jalview.exit(null, 0); } - if (bootstrapArgs.contains(Arg.HEADLESS)) + // new CLI + headlessArg = bootstrapArgs.isHeadless(); + 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! @@ -533,7 +572,7 @@ public class Jalview // allow https handshakes to download intermediate certs if necessary System.setProperty("com.sun.security.enableAIAcaIssuers", "true"); - String jabawsUrl = bootstrapArgs.get(Arg.JABAWS); + String jabawsUrl = bootstrapArgs.getValue(Arg.JABAWS); if (jabawsUrl == null) jabawsUrl = aparser.getValue("jabaws"); if (jabawsUrl != null) @@ -625,7 +664,7 @@ public class Jalview if (!(headless || headlessArg)) { - Desktop.nosplash = "false".equals(bootstrapArgs.get(Arg.SPLASH)) + Desktop.nosplash = "false".equals(bootstrapArgs.getValue(Arg.SPLASH)) || aparser.contains("nosplash") || Cache.getDefault("SPLASH", "true").equals("false"); desktop = new Desktop(); @@ -700,18 +739,18 @@ public class Jalview testoutput(argparser, Arg.WEBSERVICEDISCOVERY); } - boolean usagestats = bootstrapArgs.getBoolean(Arg.USAGESTATS); + boolean usagestats = !bootstrapArgs.getBoolean(Arg.NOUSAGESTATS); if (aparser.contains("nousagestats")) usagestats = false; if (usagestats) { startUsageStats(desktop); - testoutput(argparser, Arg.USAGESTATS); + testoutput(argparser, Arg.NOUSAGESTATS); } else { System.out.println("CMD [-nousagestats] executed successfully!"); - testoutput(argparser, Arg.USAGESTATS); + testoutput(argparser, Arg.NOUSAGESTATS); } boolean questionnaire = bootstrapArgs.getBoolean(Arg.QUESTIONNAIRE); @@ -754,8 +793,8 @@ public class Jalview if ((!aparser.contains("nonews") && Cache.getProperty("NONEWS") == null - && !"false".equals(bootstrapArgs.get(Arg.NEWS))) - || "true".equals(bootstrapArgs.get(Arg.NEWS))) + && !"false".equals(bootstrapArgs.getValue(Arg.NEWS))) + || "true".equals(bootstrapArgs.getValue(Arg.NEWS))) { desktop.checkForNews(); } @@ -1094,7 +1133,8 @@ public class Jalview if (!Platform.isJS() && !headless && file == null && Cache.getDefault("SHOW_STARTUP_FILE", true) - && !cmds.commandArgsProvided()) + && !cmds.commandArgsProvided() + && !bootstrapArgs.getBoolean(Arg.NOSTARTUPFILE)) // don't open the startup file if command line args have been processed // (&& !Commands.commandArgsProvided()) /** @@ -1820,7 +1860,7 @@ public class Jalview } /* - * testoutput for boolean values + * testoutput for boolean and unary values */ protected static void testoutput(ArgParser ap, Arg a) { @@ -1863,7 +1903,15 @@ public class Jalview private static void testoutput(boolean yes, Arg a) { - System.out.println("[TESTOUTPUT] arg " - + (yes ? a.argString() : a.negateArgString()) + " was set"); + String message = null; + if (a.hasOption(Opt.BOOLEAN)) + { + message = (yes ? a.argString() : a.negateArgString()) + " was set"; + } + else if (a.hasOption(Opt.UNARY)) + { + message = a.argString() + (yes ? " was set" : " was not set"); + } + System.out.println("[TESTOUTPUT] arg " + message); } }