JAL-4125 Move confirmation of closing external viewer windows into the quit handler...
[jalview.git] / src / jalview / gui / QuitHandler.java
index ae12e7d..f9110eb 100644 (file)
@@ -166,6 +166,46 @@ public class QuitHandler
     }
 
     got = gotQuitResponse();
+
+    // check for external viewer frames
+    if (got != QResponse.CANCEL_QUIT)
+    {
+      int count = Desktop.instance.structureViewersStillRunningCount();
+      if (count > 0)
+      {
+        String prompt = MessageManager
+                .formatMessage(count == 1 ? "label.confirm_quit_viewer"
+                        : "label.confirm_quit_viewers");
+        String title = MessageManager.getString(
+                count == 1 ? "label.close_viewer" : "label.close_viewers");
+        String cancelQuitText = MessageManager
+                .getString("action.cancel_quit");
+        String[] buttonsText = { MessageManager.getString("action.yes"),
+            MessageManager.getString("action.no"), cancelQuitText };
+
+        int confirmResponse = JvOptionPane.showOptionDialog(
+                Desktop.instance, prompt, title,
+                JvOptionPane.YES_NO_CANCEL_OPTION,
+                JvOptionPane.WARNING_MESSAGE, null, buttonsText,
+                cancelQuit);
+
+        if (confirmResponse == JvOptionPane.CANCEL_OPTION)
+        {
+          // Cancel Quit
+          QuitHandler.setResponse(QResponse.CANCEL_QUIT);
+        }
+        else
+        {
+          // Close viewers/Leave viewers open
+          StructureViewerBase
+                  .setQuitClose(confirmResponse == JvOptionPane.YES_OPTION);
+        }
+      }
+
+    }
+
+    got = gotQuitResponse();
+
     boolean wait = false;
     if (got == QResponse.CANCEL_QUIT)
     {