+
+ /*
+ @Override
+ public JalviewFileChooser setResponseHandler(Object response,
+ Runnable action)
+ {
+ callbacks.put(response, new Callable<Void>()
+ {
+ @Override
+ public Void call()
+ {
+ action.run();
+ return null;
+ }
+ });
+ return this;
+ }
+ */
+
+ @Override
+ public DialogRunnerI setResponseHandler(Object response, Runnable action)
+ {
+ callbacks.put(response, action);
+ return this;
+ }
+
+ @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)
+ {
+ try
+ {
+ action.run();
+ } catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ /**
+ * JalviewJS signals file selection by a property change event for property
+ * "SelectedFile". This methods responds to that by running the response
+ * action for 'OK' in the dialog.
+ *
+ * @param evt
+ */
+ @Override
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ // TODO other properties need runners...
+ switch (evt.getPropertyName())
+ {
+ /*
+ * property name here matches that used in JFileChooser.js
+ */
+ case "SelectedFile":
+ handleResponse(APPROVE_OPTION);
+ break;
+ }
+ }
+
+ @Override
+ protected JDialog createDialog(Component parent) throws HeadlessException
+ {
+ JDialog dialog = super.createDialog(parent);
+ dialog.setIconImages(ChannelProperties.getIconList());
+ return dialog;
+ }
+