X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FJvOptionPane.java;fp=src%2Fjalview%2Fgui%2FJvOptionPane.java;h=2290b52b58075ab997c098b44b1fe8824e52153d;hb=2afa9987e7d3276b4525abb28767617732e6e7cf;hp=b3df2f749cf930cda30142240de3860ef840adad;hpb=8e73dcd57f5558b39b3f431667457d78a3cec427;p=jalview.git diff --git a/src/jalview/gui/JvOptionPane.java b/src/jalview/gui/JvOptionPane.java index b3df2f7..2290b52 100644 --- a/src/jalview/gui/JvOptionPane.java +++ b/src/jalview/gui/JvOptionPane.java @@ -22,16 +22,16 @@ package jalview.gui; import jalview.bin.Jalview; -import jalview.util.dialogrunner.DialogRunner; import jalview.util.dialogrunner.DialogRunnerI; -import jalview.util.dialogrunner.RunResponse; import java.awt.Component; import java.awt.HeadlessException; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.swing.Icon; import javax.swing.JOptionPane; @@ -48,7 +48,7 @@ public class JvOptionPane extends JOptionPane implements DialogRunnerI, private Component parentComponent; - private DialogRunnerI runner = new DialogRunner(); + private Map callbacks = new HashMap<>(); /* * JalviewJS reports user choice in the dialog as the selected @@ -763,7 +763,7 @@ public class JvOptionPane extends JOptionPane implements DialogRunnerI, if (!isInteractiveMode()) { - runner.handleResponse(getMockResponse()); + handleResponse(getMockResponse()); } // two uses: // @@ -791,7 +791,7 @@ public class JvOptionPane extends JOptionPane implements DialogRunnerI, */ if (!Jalview.isJS()) { - runner.handleResponse(response); + handleResponse(response); } } @@ -801,7 +801,7 @@ public class JvOptionPane extends JOptionPane implements DialogRunnerI, { if (!isInteractiveMode()) { - runner.handleResponse(getMockResponse()); + handleResponse(getMockResponse()); } ourOptions = Arrays.asList(options); @@ -820,14 +820,14 @@ public class JvOptionPane extends JOptionPane implements DialogRunnerI, } if (!Jalview.isJS()) { - runner.handleResponse(response); + handleResponse(response); } } @Override - public JvOptionPane addResponse(Object response, RunResponse action) + public JvOptionPane setResponseHandler(Object response, Runnable action) { - runner.addResponse(response, action); + callbacks.put(response, action); return this; } @@ -845,12 +845,29 @@ public class JvOptionPane extends JOptionPane implements DialogRunnerI, int ourOption = ourOptions.indexOf(newValue); if (ourOption >= 0) { - runner.handleResponse(ourOption); + handleResponse(ourOption); } else { // try our luck.. - runner.handleResponse(newValue); + handleResponse(newValue); + } + } + + @Override + public void handleResponse(Object response) + { + /* + * this test is for NaN in Chrome + */ + if (response != null && !response.equals(response)) + { + return; + } + Runnable action = callbacks.get(response); + if (action != null) + { + action.run(); } } }