X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FJalview.java;h=b29d9d72cc2d70e92729b7d3e6c0835fe7db6c32;hb=65ed1da9a1710a9ce132c7edfce54955dc1ddf99;hp=2716ce1af4ba5d9b87eee081549f3e34dcfc153e;hpb=173c541c3bdef7cee4f72a76cc8e23e8902a8614;p=jalview.git diff --git a/src/jalview/bin/Jalview.java b/src/jalview/bin/Jalview.java index 2716ce1..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(); } @@ -774,7 +813,17 @@ public class Jalview { if (headlessArg) { - Jalview.exit("Successfully completed commands in headless mode", 0); + if (argparser.getBoolean(Arg.NOQUIT)) + { + Console.warn( + "Completed " + Arg.HEADLESS.getName() + " commands, but " + + Arg.NOQUIT + " is set so not quitting!"); + } + else + { + Jalview.exit("Successfully completed commands in headless mode", + 0); + } } Console.info("Successfully completed commands"); } @@ -1084,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()) /** @@ -1236,7 +1286,12 @@ public class Jalview } if (!lafSet) { - setSystemLookAndFeel(); + // Flatlaf default for everyone! + lafSet = setFlatLookAndFeel(); + if (!lafSet) + { + setSystemLookAndFeel(); + } if (Platform.isLinux()) { setLinuxLookAndFeel(); @@ -1433,6 +1488,8 @@ public class Jalview UIManager.put("TabbedPane.smoothScrolling", true); UIManager.put("TabbedPane.tabWidthMode", "compact"); UIManager.put("TabbedPane.selectedBackground", Color.white); + UIManager.put("TabbedPane.background", new Color(236, 236, 236)); + UIManager.put("TabbedPane.hoverColor", Color.lightGray); } Desktop.setLiveDragMode(Cache.getDefault("FLAT_LIVE_DRAG_MODE", true)); @@ -1803,7 +1860,7 @@ public class Jalview } /* - * testoutput for boolean values + * testoutput for boolean and unary values */ protected static void testoutput(ArgParser ap, Arg a) { @@ -1846,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); } }