X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FDesktop.java;h=e7854313b261cd4792d388c609e1704a2977eba2;hb=refs%2Fheads%2Ffeature%2FJAL-4274_configurable_bitmap_export_preferences;hp=f0753bcf1ef04daa3422b312620abd3aeb640637;hpb=8dca84768d848bc368985a8f0938a6c7ac059952;p=jalview.git diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index f0753bc..e785431 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -22,6 +22,7 @@ package jalview.gui; import java.awt.BorderLayout; import java.awt.Color; +import java.awt.Component; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Graphics; @@ -94,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; @@ -101,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; @@ -3744,35 +3747,76 @@ public class Desktop extends jalview.jbgui.GDesktop public void nonBlockingDialog(String title, String message, String button, int type, boolean scrollable, boolean modal) { - nonBlockingDialog(32, 2, title, message, button, type, scrollable, - modal); + nonBlockingDialog(32, 2, title, message, null, button, type, scrollable, + false, modal); } public void nonBlockingDialog(int width, int height, String title, - String message, String button, int type, boolean scrollable, - boolean modal) + String message, String boxtext, String button, int type, + boolean scrollable, boolean html, 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); + JLabel jl = new JLabel(message); + + 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; JvOptionPane jvp = JvOptionPane.newOptionDialog(this); + + JPanel jp = new JPanel(); + jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS)); + + if (message != null) + { + jl.setAlignmentX(Component.LEFT_ALIGNMENT); + jp.add(jl); + } + if (boxtext != null) + { + if (scrollable) + { + jsp.setAlignmentX(Component.LEFT_ALIGNMENT); + jp.add(jsp); + } + else + { + jtc.setAlignmentX(Component.LEFT_ALIGNMENT); + jp.add(jtc); + } + } + jvp.setResponseHandler(JOptionPane.YES_OPTION, () -> { }); - jvp.showDialogOnTopAsync(this, scrollable ? jsp : jta, title, - JOptionPane.YES_OPTION, type, null, new Object[] + jvp.showDialogOnTopAsync(this, jp, title, JOptionPane.YES_OPTION, type, + null, new Object[] { button }, button, modal, null, false); }