Merge branch 'releases/Release_2_11_3_Branch'
[jalview.git] / src / jalview / gui / APQHandlers.java
index 3d4c91a..00ec217 100644 (file)
  */
 package jalview.gui;
 
-import javax.swing.JOptionPane;
-
 import com.formdev.flatlaf.extras.FlatDesktop;
+import com.formdev.flatlaf.extras.FlatDesktop.Action;
 
-import jalview.util.MessageManager;
+import jalview.util.Platform;
 
 public class APQHandlers
 {
-  private static boolean setAPQHandlers = false;
+  public static boolean setAbout = false;
 
-  protected static boolean setAPQHandlers(
-          jalview.gui.Desktop jalviewDesktop)
-  {
-    FlatDesktop.setAboutHandler(() -> {
-      jalviewDesktop.aboutMenuItem_actionPerformed(null);
-    });
-    FlatDesktop.setPreferencesHandler(() -> {
-      jalviewDesktop.preferences_actionPerformed(null);
-    });
-    FlatDesktop.setQuitHandler(response -> {
-      boolean confirmQuit = jalview.bin.Cache
-              .getDefault(jalview.gui.Desktop.CONFIRM_KEYBOARD_QUIT, true);
-      boolean canQuit = !confirmQuit;
-      int n;
-      if (confirmQuit)
-      {
-        n = JOptionPane.showConfirmDialog(null,
-                MessageManager.getString("label.quit_jalview"),
-                MessageManager.getString("action.quit"),
-                JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE,
-                null);
-      }
-      else
-      {
-        n = JOptionPane.OK_OPTION;
-      }
-      canQuit = (n == JOptionPane.OK_OPTION);
-      if (canQuit)
-      {
-        response.performQuit();
-      }
-      else
-      {
-        response.cancelQuit();
-      }
-    });
+  public static boolean setPreferences = false;
 
-    setAPQHandlers = true;
+  public static boolean setQuit = false;
 
-    return setAPQHandlers;
+  public static boolean setAPQHandlers(Desktop desktop)
+  {
+    if (Platform.isJS())
+    {
+      return false;
+    }
+    if (FlatDesktop.isSupported(Action.APP_ABOUT))
+    {
+      FlatDesktop.setAboutHandler(() -> {
+        desktop.aboutMenuItem_actionPerformed(null);
+      });
+      setAbout = true;
+    }
+    if (FlatDesktop.isSupported(Action.APP_PREFERENCES))
+    {
+      FlatDesktop.setPreferencesHandler(() -> {
+        desktop.preferences_actionPerformed(null);
+      });
+      setPreferences = true;
+    }
+    if (FlatDesktop.isSupported(Action.APP_QUIT_HANDLER))
+    {
+      QuitHandler.setQuitHandler();
+      setQuit = true;
+    }
+    // if we got to here, no exceptions occurred when we set the handlers.
+    return setAbout || setPreferences || setQuit;
   }
 
 }