X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureViewerBase.java;fp=src%2Fjalview%2Fgui%2FStructureViewerBase.java;h=01a3c2db0bf3b95e761f5ee2e5d5f1cd0242a83d;hb=9b943e6d79fd92f78a61916a6f6eb047ba0a9755;hp=9a575ffc06cb1b7b8f072db319dcc6bd71ded4aa;hpb=b865b46f6f34e82f5d10fccfe646f00b8ae2e7a1;p=jalview.git diff --git a/src/jalview/gui/StructureViewerBase.java b/src/jalview/gui/StructureViewerBase.java index 9a575ff..01a3c2d 100644 --- a/src/jalview/gui/StructureViewerBase.java +++ b/src/jalview/gui/StructureViewerBase.java @@ -37,9 +37,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Vector; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.TimeUnit; import javax.swing.ButtonGroup; import javax.swing.JCheckBoxMenuItem; @@ -1255,6 +1252,20 @@ public abstract class StructureViewerBase extends GStructureViewer return session; } + private static boolean quitClose = false; + + public static void setQuitClose(boolean b) + { + quitClose = b; + } + + @Override + public boolean stillRunning() + { + AAStructureBindingModel binding = getBinding(); + return binding != null && binding.isViewerRunning(); + } + /** * Close down this instance of Jalview's Chimera viewer, giving the user the * option to close the associated Chimera window (process). They may wish to @@ -1267,19 +1278,29 @@ public abstract class StructureViewerBase extends GStructureViewer public void closeViewer(boolean forceClose) { AAStructureBindingModel binding = getBinding(); - if (binding != null && binding.isViewerRunning()) + if (stillRunning()) { if (!forceClose) { String viewerName = getViewerName(); int confirm = JvOptionPane.CANCEL_OPTION; - String prompt = MessageManager - .formatMessage("label.confirm_close_viewer", new Object[] - { binding.getViewerTitle(viewerName, false), viewerName }); - prompt = JvSwingUtils.wrapTooltip(true, prompt); - String title = MessageManager.getString("label.close_viewer"); - confirm = showCloseDialog(title, prompt); + if (QuitHandler.quitting()) + { + // already asked about closing external windows + confirm = quitClose ? JvOptionPane.YES_OPTION + : JvOptionPane.NO_OPTION; + } + else + { + String prompt = MessageManager + .formatMessage("label.confirm_close_viewer", new Object[] + { binding.getViewerTitle(viewerName, false), + viewerName }); + prompt = JvSwingUtils.wrapTooltip(true, prompt); + String title = MessageManager.getString("label.close_viewer"); + confirm = showCloseDialog(title, prompt); + } /* * abort closure if user hits escape or Cancel @@ -1320,54 +1341,11 @@ public abstract class StructureViewerBase extends GStructureViewer private int showCloseDialog(final String title, final String prompt) { - confirmResponse = JvOptionPane.CANCEL_OPTION; - - if (QuitHandler.quitting()) - { - - Callable yesCall = () -> { - Console.debug("YES"); - confirmResponse = JvOptionPane.YES_OPTION; - return null; - }; - Callable noCall = () -> { - Console.debug("NO"); - confirmResponse = JvOptionPane.NO_OPTION; - return null; - }; - Callable cancelCall = () -> { - Console.debug("CANCEL"); - confirmResponse = JvOptionPane.CANCEL_OPTION; - return null; - }; - Callable[] calls = new Callable[] { yesCall, noCall, - cancelCall }; - String cancelQuit = MessageManager.getString("action.cancel_quit"); - String[] buttonsText = { MessageManager.getString("action.yes"), - MessageManager.getString("action.no"), cancelQuit }; - JvOptionPane dialog = JvOptionPane.frameDialog(prompt, - MessageManager.getString("label.close_viewer"), - JvOptionPane.WARNING_MESSAGE, buttonsText, cancelQuit, calls, - false); - // wait for response - ExecutorService executor = dialog.getExecutor(); - executor.shutdown(); - try - { - Console.debug("### executor.awaitTermination() starting"); - executor.awaitTermination(60, TimeUnit.SECONDS); - Console.debug("### executor.awaitTermination() finished"); - } catch (InterruptedException e) - { - } - } - else - { - confirmResponse = JvOptionPane.showConfirmDialog(this, prompt, - MessageManager.getString("label.close_viewer"), - JvOptionPane.YES_NO_CANCEL_OPTION, - JvOptionPane.WARNING_MESSAGE); - } + int confirmResponse = JvOptionPane.CANCEL_OPTION; + confirmResponse = JvOptionPane.showConfirmDialog(this, prompt, + MessageManager.getString("label.close_viewer"), + JvOptionPane.YES_NO_CANCEL_OPTION, + JvOptionPane.WARNING_MESSAGE); return confirmResponse; } @@ -1402,5 +1380,4 @@ public abstract class StructureViewerBase extends GStructureViewer && viewerActionMenu.isVisible(); } - private static int confirmResponse = 0; }