JAL-4262 Allow HTML in the dialog box for link to CLI documentation
[jalview.git] / src / jalview / gui / Desktop.java
index ee24c25..e785431 100644 (file)
@@ -95,6 +95,7 @@ import javax.swing.JProgressBar;
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 import javax.swing.JTextField;
+import javax.swing.JTextPane;
 import javax.swing.KeyStroke;
 import javax.swing.SwingUtilities;
 import javax.swing.WindowConstants;
@@ -102,6 +103,7 @@ import javax.swing.event.HyperlinkEvent;
 import javax.swing.event.HyperlinkEvent.EventType;
 import javax.swing.event.InternalFrameAdapter;
 import javax.swing.event.InternalFrameEvent;
+import javax.swing.text.JTextComponent;
 
 import org.stackoverflowusers.file.WindowsShortcut;
 
@@ -3746,12 +3748,12 @@ public class Desktop extends jalview.jbgui.GDesktop
           int type, boolean scrollable, boolean modal)
   {
     nonBlockingDialog(32, 2, title, message, null, button, type, scrollable,
-            modal);
+            false, modal);
   }
 
   public void nonBlockingDialog(int width, int height, String title,
           String message, String boxtext, String button, int type,
-          boolean scrollable, boolean modal)
+          boolean scrollable, boolean html, boolean modal)
   {
     if (type < 0)
     {
@@ -3759,15 +3761,31 @@ public class Desktop extends jalview.jbgui.GDesktop
     }
     JLabel jl = new JLabel(message);
 
-    JTextArea jta = new JTextArea(height, width);
-    // jta.setLineWrap(true);
-    jta.setEditable(false);
-    jta.setWrapStyleWord(true);
-    jta.setAutoscrolls(true);
-    jta.setText(boxtext);
+    JTextComponent jtc = null;
+    if (html)
+    {
+      JTextPane jtp = new JTextPane();
+      jtp.setContentType("text/html");
+      jtp.setEditable(false);
+      jtp.setAutoscrolls(true);
+      jtp.setText(boxtext);
+
+      jtc = jtp;
+    }
+    else
+    {
+      JTextArea jta = new JTextArea(height, width);
+      // jta.setLineWrap(true);
+      jta.setEditable(false);
+      jta.setWrapStyleWord(true);
+      jta.setAutoscrolls(true);
+      jta.setText(boxtext);
+
+      jtc = jta;
+    }
 
     JScrollPane jsp = scrollable
-            ? new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
+            ? new JScrollPane(jtc, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                     JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED)
             : null;
 
@@ -3790,8 +3808,8 @@ public class Desktop extends jalview.jbgui.GDesktop
       }
       else
       {
-        jta.setAlignmentX(Component.LEFT_ALIGNMENT);
-        jp.add(jta);
+        jtc.setAlignmentX(Component.LEFT_ALIGNMENT);
+        jp.add(jtc);
       }
     }