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;
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
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
private int showCloseDialog(final String title, final String prompt)
{
- confirmResponse = JvOptionPane.CANCEL_OPTION;
-
- if (QuitHandler.quitting())
- {
-
- Callable<Void> yesCall = () -> {
- Console.debug("YES");
- confirmResponse = JvOptionPane.YES_OPTION;
- return null;
- };
- Callable<Void> noCall = () -> {
- Console.debug("NO");
- confirmResponse = JvOptionPane.NO_OPTION;
- return null;
- };
- Callable<Void> cancelCall = () -> {
- Console.debug("CANCEL");
- confirmResponse = JvOptionPane.CANCEL_OPTION;
- return null;
- };
- Callable<Void>[] 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;
}
&& viewerActionMenu.isVisible();
}
- private static int confirmResponse = 0;
}