X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FJvOptionPane.java;h=8edab0315087c313f2e4251ac2cb252bfa69d711;hb=e75315ad5faf541f6943e9395c81a078369f2f63;hp=0a7c49ea2a1d758c7daa174d58499bc555cddc8d;hpb=dfb174e9d22355eb1abef39224f77389431c3350;p=jalview.git diff --git a/src/jalview/gui/JvOptionPane.java b/src/jalview/gui/JvOptionPane.java index 0a7c49e..8edab03 100644 --- a/src/jalview/gui/JvOptionPane.java +++ b/src/jalview/gui/JvOptionPane.java @@ -859,8 +859,9 @@ public class JvOptionPane extends JOptionPane break NOTNULL; } - // run through buttons for initialValue first so can set a final - // timeoutThreadF + // run through buttons for initialValue first so we can set (and start) + // a final timeoutThreadF to include (and interrupt) in the button + // actions Thread timeoutThread = null; for (int i = 0; i < options.length; i++) { @@ -868,11 +869,10 @@ public class JvOptionPane extends JOptionPane JButton jb = buttons[i]; if (o.equals(initialValue)) { - initialValueButton = jb; - if (timeout > 0 && initialValueButton != null - && initialValueButton instanceof JButton) + if (timeout > 0 && jb != null && jb instanceof JButton) { - Runnable timeoutClose = () -> { + // after timeout ms click the default button + timeoutThread = new Thread(() -> { try { Thread.sleep(timeout); @@ -882,13 +882,17 @@ public class JvOptionPane extends JOptionPane "Dialog timeout interrupted. Probably a button pressed."); } jb.doClick(); - }; - timeoutThread = new Thread(timeoutClose); + }); } + initialValueButton = jb; + break; } } final Thread timeoutThreadF = timeoutThread; - timeoutThreadF.start(); + if (timeoutThreadF != null) + { + timeoutThreadF.start(); + } int[] buttonActions = { JOptionPane.YES_OPTION, JOptionPane.NO_OPTION, JOptionPane.CANCEL_OPTION };