X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FDesktop.java;h=35c78187a1e335d290ab422799f2babe6b008d19;hb=9d465da4f21e403c20b835264929906b538c0c9b;hp=070e67db37a91302ecdaee03f2453fec94a06b6d;hpb=7fa567506eea0a202c71e6939b961962f515dcec;p=jalview.git diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 070e67d..35c7818 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -184,7 +184,7 @@ public class Desktop extends jalview.jbgui.GDesktop : " \"University"); sb.append( - "

For help, see www.jalview.org/faq and join discourse.jalview.org"); + "

For help, see www.jalview.org/faq and join discourse.jalview.org"); sb.append("

If you use Jalview, please cite:" + "
Waterhouse, A.M., Procter, J.B., Martin, D.M.A, Clamp, M. and Barton, G. J. (2009)" + "
Jalview Version 2 - a multiple sequence alignment editor and analysis workbench" @@ -1478,16 +1478,21 @@ public class Desktop extends jalview.jbgui.GDesktop } /** - * close everything, stash window geometries, and shut down all associated threads/workers - * @param dispose - sets the dispose on close flag - JVM may terminate when set - * @param terminateJvm - quit with prejudice - stops the JVM. + * close everything, stash window geometries, and shut down all associated + * threads/workers + * + * @param dispose + * - sets the dispose on close flag - JVM may terminate when set + * @param terminateJvm + * - quit with prejudice - stops the JVM. */ - public void quitTheDesktop(boolean dispose, boolean terminateJvm) { + public void quitTheDesktop(boolean dispose, boolean terminateJvm) + { Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); Cache.setProperty("SCREENGEOMETRY_WIDTH", screen.width + ""); Cache.setProperty("SCREENGEOMETRY_HEIGHT", screen.height + ""); - storeLastKnownDimensions("", new Rectangle(getBounds().x, - getBounds().y, getWidth(), getHeight())); + storeLastKnownDimensions("", new Rectangle(getBounds().x, getBounds().y, + getWidth(), getHeight())); if (jconsole != null) { @@ -1513,7 +1518,21 @@ public class Desktop extends jalview.jbgui.GDesktop { // suppress a possible repeat prompt to save script groovyConsole.setDirty(false); - groovyConsole.exit(); + + // and tidy up + if (((Window) groovyConsole.getFrame()) != null + && ((Window) groovyConsole.getFrame()).isVisible()) + { + // console is visible -- FIXME JAL-4327 + groovyConsole.exit(); + } + else + { + // console is not, so just let it dispose itself when we shutdown + // we don't call groovyConsole.exit() because it calls the shutdown + // handler with invokeAndWait() causing deadlock + groovyConsole = null; + } } if (terminateJvm) @@ -1530,19 +1549,22 @@ public class Desktop extends jalview.jbgui.GDesktop // instance.dispose(); } } + public QuitHandler.QResponse desktopQuit(boolean ui, boolean disposeFlag) { final Runnable doDesktopQuit = () -> { - // FIRST !! check for aborted quit + // FIRST !! check for aborted quit if (QuitHandler.quitCancelled()) { - jalview.bin.Console.debug("Quit was cancelled - Desktop aborting quit"); + jalview.bin.Console + .debug("Quit was cancelled - Desktop aborting quit"); return; } - + // Proceed with quitting - quitTheDesktop(disposeFlag, QuitHandler.gotQuitResponse() == QResponse.FORCE_QUIT); + quitTheDesktop(disposeFlag, + QuitHandler.gotQuitResponse() == QResponse.FORCE_QUIT); // and exit the JVM instance.quit(); }; @@ -1552,13 +1574,13 @@ public class Desktop extends jalview.jbgui.GDesktop } /** - * Exits the program and the JVM. + * Exits the program and the JVM. * * Don't call this directly * * - use desktopQuit() above to tidy up first. * - * - use closeDesktop() to shutdown Jalview without shutting down the JVM + * - use closeDesktop() to shutdown Jalview without shutting down the JVM * */ @Override @@ -3067,13 +3089,16 @@ public class Desktop extends jalview.jbgui.GDesktop */ public static void showUrl(final String url) { - if (url!=null && !url.trim().equals("")) { - jalview.bin.Console.info("Opening URL: "+url); + if (url != null && !url.trim().equals("")) + { + jalview.bin.Console.info("Opening URL: " + url); showUrl(url, Desktop.instance); - } else { + } + else + { jalview.bin.Console.warn("Ignoring attempt to show an empty URL."); } - + } /** @@ -3724,8 +3749,9 @@ public class Desktop extends jalview.jbgui.GDesktop } /** - * closes the current instance window, but leaves the JVM running. - * Bypasses any shutdown prompts, but does not set window dispose on close in case JVM terminates. + * closes the current instance window, but leaves the JVM running. Bypasses + * any shutdown prompts, but does not set window dispose on close in case JVM + * terminates. */ public static void closeDesktop() {