X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FDesktop.java;h=35c78187a1e335d290ab422799f2babe6b008d19;hb=ba1f9fee25b87bdac0c535019252b787939a8f80;hp=35afb69da2081d88492b47749d361f11442bd1bb;hpb=1e75445b3e45bb22baebbcd215137df1c1aef34f;p=jalview.git diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 35afb69..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,7 +3089,16 @@ public class Desktop extends jalview.jbgui.GDesktop */ public static void showUrl(final String url) { - showUrl(url, Desktop.instance); + if (url != null && !url.trim().equals("")) + { + jalview.bin.Console.info("Opening URL: " + url); + showUrl(url, Desktop.instance); + } + else + { + jalview.bin.Console.warn("Ignoring attempt to show an empty URL."); + } + } /** @@ -3718,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() {