From e75315ad5faf541f6943e9395c81a078369f2f63 Mon Sep 17 00:00:00 2001 From: Ben Soares Date: Thu, 12 Oct 2023 10:54:02 +0100 Subject: [PATCH] JAL-629 null check and neatening code --- src/jalview/gui/JvOptionPane.java | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) 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 }; -- 1.7.10.2