JAL-4186 fix dialog. broken in JalviewJS
[jalview.git] / src / jalview / gui / JvOptionPane.java
index 020890b..99ab26f 100644 (file)
@@ -60,6 +60,7 @@ import javax.swing.event.InternalFrameListener;
 
 import jalview.bin.Console;
 import jalview.util.ChannelProperties;
+import jalview.util.MessageManager;
 import jalview.util.Platform;
 import jalview.util.dialogrunner.DialogRunnerI;
 
@@ -1553,11 +1554,24 @@ public class JvOptionPane extends JOptionPane
   }
 
   public static JvOptionPane frameDialog(String message, String title,
-          int messageType, String[] buttonsText, String defaultButton,
+          int messageType, String[] buttonsTextS, String defaultButtonS,
           Callable<Void>[] handlers, boolean modal)
   {
     JFrame parent = new JFrame();
     JvOptionPane jvop = JvOptionPane.newOptionDialog();
+    final String[] buttonsText;
+    final String defaultButton;
+    if (buttonsTextS == null)
+    {
+      String ok = MessageManager.getString("action.ok");
+      buttonsText = new String[] { ok };
+      defaultButton = ok;
+    }
+    else
+    {
+      buttonsText = buttonsTextS;
+      defaultButton = defaultButtonS;
+    }
     JButton[] buttons = new JButton[buttonsText.length];
     for (int i = 0; i < buttonsText.length; i++)
     {
@@ -1581,15 +1595,24 @@ public class JvOptionPane extends JOptionPane
     {
       dialogType = JOptionPane.YES_NO_CANCEL_OPTION;
     }
-    jvop.setResponseHandler(JOptionPane.YES_OPTION, handlers[0]);
+    Callable<Void> nullCallable = () -> {
+      return null;
+    };
+    jvop.setResponseHandler(JOptionPane.YES_OPTION,
+            (handlers != null && handlers.length > 0) ? handlers[0]
+                    : nullCallable);
     if (dialogType == JOptionPane.YES_NO_OPTION
             || dialogType == JOptionPane.YES_NO_CANCEL_OPTION)
     {
-      jvop.setResponseHandler(JOptionPane.NO_OPTION, handlers[1]);
+      jvop.setResponseHandler(JOptionPane.NO_OPTION,
+              (handlers != null && handlers.length > 1) ? handlers[1]
+                      : nullCallable);
     }
     if (dialogType == JOptionPane.YES_NO_CANCEL_OPTION)
     {
-      jvop.setResponseHandler(JOptionPane.CANCEL_OPTION, handlers[2]);
+      jvop.setResponseHandler(JOptionPane.CANCEL_OPTION,
+              (handlers != null && handlers.length > 2) ? handlers[2]
+                      : nullCallable);
     }
 
     final int dt = dialogType;