JAL-4285 JAL-4262 Added a scrollable dialog to display errors. Moved old-style CLI...
[jalview.git] / src / jalview / gui / Desktop.java
index 6b2044c..f0753bc 100644 (file)
@@ -91,6 +91,7 @@ import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JPopupMenu;
 import javax.swing.JProgressBar;
+import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 import javax.swing.JTextField;
 import javax.swing.KeyStroke;
@@ -639,61 +640,6 @@ public class Desktop extends jalview.jbgui.GDesktop
       jalview.bin.Console.info("JALVIEWJS: CREATED DESKTOP");
     }
 
-    cliWarning();
-  }
-
-  /**
-   * Warning about old or mixed command line arguments
-   */
-  private void cliWarning()
-  {
-    Jalview j = Jalview.getInstance();
-    boolean oldStyle = j.getArgParser() != null
-            && j.getArgParser().isOldStyle();
-    boolean mixedStyle = j.getArgParser() != null
-            && j.getArgParser().isMixedStyle();
-
-    String title = MessageManager.getString("label.command_line_arguments");
-    if (mixedStyle)
-    {
-      String warning = MessageManager.formatMessage(
-              "warning.using_mixed_command_line_arguments",
-              j.getArgParser().getMixedExamples());
-      String quit = MessageManager.getString("action.quit");
-      JvOptionPane jvp = JvOptionPane.newOptionDialog(this);
-      jvp.setResponseHandler(JOptionPane.YES_OPTION, () -> {
-      });
-      jvp.showDialogOnTopAsync(this, warning, title, JOptionPane.YES_OPTION,
-              JOptionPane.WARNING_MESSAGE, null, new Object[]
-              { quit }, quit, true, null, false);
-
-      Jalview.getInstance().exit(
-              "Exiting due to mixed old and new command line arguments.",
-              ExitCode.MIXED_CLI_ARGUMENTS);
-      return;
-    }
-    if (oldStyle)
-    {
-      String warning = MessageManager
-              .getString("warning.using_old_command_line_arguments")
-              + "https://www.jalview.org/help/html/features/commandline.html";
-
-      JTextArea jta = new JTextArea(2, 32);
-      // jta.setLineWrap(true);
-      jta.setEditable(false);
-      jta.setWrapStyleWord(true);
-      jta.setAutoscrolls(true);
-      jta.setText(warning);
-
-      String ok = MessageManager.getString("label.continue");
-      JvOptionPane jvp = JvOptionPane.newOptionDialog(this);
-      jvp.setResponseHandler(JOptionPane.YES_OPTION, () -> {
-      });
-      jvp.showDialogOnTopAsync(this, jta, title, JOptionPane.YES_OPTION,
-              JOptionPane.WARNING_MESSAGE, null, new Object[]
-              { ok }, ok, false, null, false);
-    }
-
   }
 
   /**
@@ -3795,4 +3741,39 @@ public class Desktop extends jalview.jbgui.GDesktop
     alignFrameModalMap.remove(af);
   }
 
+  public void nonBlockingDialog(String title, String message, String button,
+          int type, boolean scrollable, boolean modal)
+  {
+    nonBlockingDialog(32, 2, title, message, button, type, scrollable,
+            modal);
+  }
+
+  public void nonBlockingDialog(int width, int height, String title,
+          String message, String button, int type, boolean scrollable,
+          boolean modal)
+  {
+    if (type < 0)
+    {
+      type = JvOptionPane.WARNING_MESSAGE;
+    }
+    JTextArea jta = new JTextArea(height, width);
+    // jta.setLineWrap(true);
+    jta.setEditable(false);
+    jta.setWrapStyleWord(true);
+    jta.setAutoscrolls(true);
+    jta.setText(message);
+
+    JScrollPane jsp = scrollable
+            ? new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED)
+            : null;
+
+    JvOptionPane jvp = JvOptionPane.newOptionDialog(this);
+    jvp.setResponseHandler(JOptionPane.YES_OPTION, () -> {
+    });
+    jvp.showDialogOnTopAsync(this, scrollable ? jsp : jta, title,
+            JOptionPane.YES_OPTION, type, null, new Object[]
+            { button }, button, modal, null, false);
+  }
+
 }