import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
-import java.util.concurrent.Callable;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
*
* @param action
*/
- public void setResponseAction(Object response, Callable action)
+ public void setResponseAction(Object response, Runnable action)
{
dialog.setResponseHandler(response, action);
}
import java.util.List;
import java.util.Locale;
import java.util.Vector;
-import java.util.concurrent.Callable;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
}
AlignExportSettingsI options = new AlignExportSettingsAdapter(false);
- Callable<Void> cancelAction = () -> {
+ Runnable cancelAction = () -> {
lastSaveSuccessful = false;
- return null;
};
- Callable<Void> outputAction = () -> {
+ Runnable outputAction = () -> {
// todo defer this to inside formatSequences (or later)
AlignmentExportData exportData = viewport.getAlignExportData(options);
String output = new FormatAdapter(alignPanel, options)
AlignFrame.this.getViewport().setSavedUpToDate(true);
}
}
- return null;
};
/*
{
try
{
- outputAction.call();
+ outputAction.run();
} catch (Exception e)
{
// TODO Auto-generated catch block
FileFormatI fileFormat = FileFormats.getInstance()
.forName(fileFormatName);
AlignExportSettingsI options = new AlignExportSettingsAdapter(false);
- Callable<Void> outputAction = () -> {
+ Runnable outputAction = () -> {
// todo defer this to inside formatSequences (or later)
AlignmentExportData exportData = viewport.getAlignExportData(options);
CutAndPasteTransfer cap = new CutAndPasteTransfer();
oom);
cap.dispose();
}
- return null;
};
/*
{
try
{
- outputAction.call();
+ outputAction.run();
} catch (Exception e)
{
e.printStackTrace();
String choice = chooser.getSelectedFile().getPath();
Cache.setProperty("LAST_DIRECTORY", choice);
loadJalviewDataFile(chooser.getSelectedFile(), null, null, null);
- return null;
});
chooser.showOpenDialog(this);
return;
}
- Callable okAction = () -> {
+ Runnable okAction = () -> {
SequenceI[] cut = sg.getSequences()
.toArray(new SequenceI[sg.getSize()]);
{
}
}
- return null;
};
/*
{
try
{
- okAction.call();
+ okAction.run();
} catch (Exception e)
{
e.printStackTrace();
.getString("label.possible_problem_with_tree_file"),
JvOptionPane.WARNING_MESSAGE);
}
- return null;
});
chooser.showOpenDialog(this);
}
Cache.setProperty("LAST_DIRECTORY", choice);
SequenceI[] seqs = viewport.getAlignment().getSequencesArray();
new VCFLoader(choice).loadVCF(seqs, us);
- return null;
});
chooser.showOpenDialog(null);
JvOptionPane dialog = JvOptionPane.newOptionDialog(Desktop.desktop)
.setResponseHandler(0, () -> {
addDataToAlignment(al);
- return null;
}).setResponseHandler(1, () -> {
us.openLinkedAlignmentAs(al, title, true);
- return null;
}).setResponseHandler(2, () -> {
us.openLinkedAlignmentAs(al, title, false);
- return null;
});
dialog.showDialog(question,
MessageManager.getString("label.open_split_window"),
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.AffineTransform;
-import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import jalview.analysis.AlignSeq;
import jalview.analysis.AlignmentUtils;
-import jalview.bin.Console;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentAnnotation;
import jalview.datamodel.Annotation;
-import jalview.datamodel.ContactMatrixI;
import jalview.datamodel.HiddenColumns;
import jalview.datamodel.Sequence;
import jalview.datamodel.SequenceGroup;
import jalview.datamodel.SequenceI;
-import jalview.io.DataSourceType;
import jalview.io.FileFormat;
import jalview.io.FormatAdapter;
-import jalview.io.NewickFile;
import jalview.util.Comparison;
import jalview.util.MessageManager;
import jalview.util.Platform;
ap.av.getAlignment().setAnnotationIndex(annotation, 0);
}
ap.refresh(true);
- return null;
});
}
consclipbrd.addActionListener(this);
pop.add(consclipbrd);
}
- if (aa[selectedRow].graph == AlignmentAnnotation.CONTACT_MAP
+ if (aa[selectedRow].graph == AlignmentAnnotation.CONTACT_MAP
&& PAEContactMatrix.PAEMATRIX
.equals(aa[selectedRow].getCalcId()))
{
final PAEContactMatrix cm = (PAEContactMatrix) av
.getContactMatrix(aa[selectedRow]);
- if (cm!=null && cm.getNewick()!=null && cm.getNewick().length()>0)
+ if (cm != null && cm.getNewick() != null
+ && cm.getNewick().length() > 0)
{
item = new JMenuItem("Show Tree for Matrix");
item.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent e)
{
- ap.alignFrame.showContactMapTree(aa[selectedRow],cm);
+ ap.alignFrame.showContactMapTree(aa[selectedRow], cm);
}
});
}
olY = y;
// look ahead to next annotation
- for (nexAA=i+1; nexAA<aa.length && !aa[nexAA].visible; nexAA++)
+ for (nexAA = i + 1; nexAA < aa.length
+ && !aa[nexAA].visible; nexAA++)
;
y += aa[i].height;
if (clip)
{
if (vertBar)
{
- g.drawLine(width-3, y + offset-fontHeight, width-3, (int)(y - 1.5*aa[i].height-offset-fontHeight));
+ g.drawLine(width - 3, y + offset - fontHeight, width - 3,
+ (int) (y - 1.5 * aa[i].height - offset - fontHeight));
// g.drawLine(20, y + offset, x - 20, y + offset);
}
import java.util.ListIterator;
import java.util.Locale;
import java.util.Vector;
-import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
new FileLoader().LoadFile(viewport, selectedFile, DataSourceType.FILE,
format);
- return null;
});
chooser.showOpenDialog(this);
}
Object[] options = new Object[] { MessageManager.getString("action.ok"),
MessageManager.getString("action.cancel") };
- Callable<Void> action = () -> {
+ Runnable action = () -> {
@SuppressWarnings("unchecked")
String url = (history instanceof JTextField
? ((JTextField) history).getText()
JvOptionPane.showInternalMessageDialog(Desktop.desktop, msg,
MessageManager.getString("label.url_not_found"),
JvOptionPane.WARNING_MESSAGE);
-
- return null; // Void
+ return;
}
if (viewport != null)
new FileLoader().LoadFile(url, DataSourceType.URL, format);
}
}
- return null; // Void
};
String dialogOption = MessageManager
.getString("label.input_alignment_from_url");
public QuitHandler.QResponse desktopQuit(boolean ui, boolean disposeFlag)
{
- final Callable<Void> doDesktopQuit = () -> {
+ final Runnable doDesktopQuit = () -> {
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
Cache.setProperty("SCREENGEOMETRY_WIDTH", screen.width + "");
Cache.setProperty("SCREENGEOMETRY_HEIGHT", screen.height + "");
if (QuitHandler.quitCancelled())
{
jalview.bin.Console.debug("Desktop aborting quit");
- return null;
+ return;
}
if (dialogExecutor != null)
// instance.dispose();
}
instance.quit();
-
- return null; // Void
};
return QuitHandler.getQuitResponse(ui, doDesktopQuit, doDesktopQuit,
}
}
}, "Project Loader").start();
- return null;
});
chooser.showOpenDialog(this);
import java.awt.FlowLayout;
import java.awt.Font;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.Callable;
import javax.swing.BoxLayout;
import javax.swing.JButton;
*
* @param action
*/
- public void showDialog(JComponent parent, String title,
- Callable<Void> action)
+ public void showDialog(JComponent parent, String title, Runnable action)
{
String ok = MessageManager.getString("action.ok");
String cancel = MessageManager.getString("action.cancel");
String[] options = new String[] { ok, cancel };
- /*
JvOptionPane.newOptionDialog(parent)
.setResponseHandler(JvOptionPane.OK_OPTION, action)
.showInternalDialog(panel, title, JvOptionPane.OK_CANCEL_OPTION,
JvOptionPane.PLAIN_MESSAGE, null, options, ok);
- */
- List<Callable<Void>> actions = new ArrayList<>();
+ /*
+ List<Runnable> actions = new ArrayList<>();
actions.add(action);
actions.add(JvOptionPane.NULLCALLABLE);
-
+
JvOptionPane.frameDialog(panel, title, JvOptionPane.PLAIN_MESSAGE,
options, ok, actions, false);
+ */
}
}
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
-import java.util.concurrent.Callable;
import javax.swing.JComboBox;
import javax.swing.JLabel;
*/
public void showDialog()
{
- Callable<Void> okAction = forCreate ? getCreateAction()
- : getAmendAction();
- Callable<Void> cancelAction = getCancelAction();
+ Runnable okAction = forCreate ? getCreateAction() : getAmendAction();
+ Runnable cancelAction = getCancelAction();
/*
* set dialog action handlers for OK (create/Amend) and Cancel options
*
* @return
*/
- protected Callable getCancelAction()
+ protected Runnable getCancelAction()
{
- Callable<Void> okAction = () -> {
+ Runnable okAction = () -> {
ap.highlightSearchResults(null);
ap.paintAlignment(false, false);
- return null;
};
return okAction;
}
*
* @return
*/
- protected Callable getCreateAction()
+ protected Runnable getCreateAction()
{
- Callable<Void> okAction = new Callable()
+ Runnable okAction = new Runnable()
{
boolean useLastDefaults = features.get(0).getType() == null;
@Override
- public Void call()
+ public void run()
{
final String enteredType = name.getText().trim();
final String enteredGroup = group.getText().trim();
repaintPanel();
}
- return null;
}
};
return okAction;
*
* @return
*/
- protected Callable getDeleteAction()
+ protected Runnable getDeleteAction()
{
- Callable<Void> deleteAction = () -> {
+ Runnable deleteAction = () -> {
SequenceFeature sf = features.get(featureIndex);
sequences.get(0).getDatasetSequence().deleteFeature(sf);
fr.featuresAdded();
ap.getSeqPanel().seqCanvas.highlightSearchResults(null);
ap.paintAlignment(true, true);
- return null;
};
return deleteAction;
}
*
* @return
*/
- protected Callable getAmendAction()
+ protected Runnable getAmendAction()
{
- Callable<Void> okAction = new Callable()
+ Runnable okAction = new Runnable()
{
boolean useLastDefaults = features.get(0).getType() == null;
String featureGroup = group.getText();
@Override
- public Void call()
+ public void run()
{
final String enteredType = name.getText().trim();
final String enteredGroup = group.getText().trim();
fr.featuresAdded();
}
repaintPanel();
- return null;
}
};
return okAction;
chooser.setResponseHandler(0, () -> {
File file = chooser.getSelectedFile();
load(file);
- return null;
});
chooser.showOpenDialog(this);
}
import java.awt.Component;
import java.awt.Graphics;
import java.io.File;
-import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicBoolean;
import jalview.bin.Cache;
&& !Jalview.isHeadlessMode())
{
final File chosenFile = file;
- Callable<Void> okAction = () -> {
+ Runnable okAction = () -> {
exportImage(chosenFile, !textSelected.get(), width, height,
messageId, userBis);
- return null;
};
LineartOptions epsOption = new LineartOptions(TYPE.EPS.getName(),
textSelected);
- epsOption.setResponseAction(1, new Callable<Void>()
- {
- @Override
- public Void call()
- {
- setStatus(MessageManager.formatMessage(
- "status.cancelled_image_export_operation",
- imageType.getName()), messageId);
- return null;
- }
+ epsOption.setResponseAction(1, () -> {
+ setStatus(MessageManager.formatMessage(
+ "status.cancelled_image_export_operation",
+ imageType.getName()), messageId);
});
epsOption.setResponseAction(0, okAction);
epsOption.showDialog();
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
private static boolean interactiveMode = true;
- public static final Callable<Void> NULLCALLABLE = () -> {
- return null;
+ public static final Runnable NULLCALLABLE = () -> {
};
private Component parentComponent;
private JDialog dialog = null;
- private Map<Object, Callable<Void>> callbacks = new HashMap<>();
+ private Map<Object, Runnable> callbacks = new HashMap<>();
/*
* JalviewJS reports user choice in the dialog as the selected option (text);
initialValueButton = jb;
int buttonAction = buttonActions[i];
- Callable<Void> action = callbacks.get(buttonAction);
+ Runnable action = callbacks.get(buttonAction);
jb.setText((String) o);
jb.addActionListener(new ActionListener()
{
JOptionPane joptionpane = (JOptionPane) joptionpaneObject;
joptionpane.setValue(buttonAction);
if (action != null)
- getExecutor().submit(action);
+ new Thread(action).start();
joptionpane.transferFocusBackward();
joptionpane.setVisible(false);
// put focus and raise parent window if possible, unless cancel or
{
Object o = options[i];
int buttonAction = buttonActions[i];
- Callable<Void> action = callbacks.get(buttonAction);
+ Runnable action = callbacks.get(buttonAction);
JButton jb = new JButton();
jb.setText((String) o);
jb.addActionListener(new ActionListener()
{
joptionpane.setValue(buttonAction);
if (action != null)
- getExecutor().submit(action);
+ new Thread(action).start();
// joptionpane.transferFocusBackward();
joptionpane.transferFocusBackward();
joptionpane.setVisible(false);
* }
*/
@Override
- public JvOptionPane setResponseHandler(Object response,
- Callable<Void> action)
+ public JvOptionPane setResponseHandler(Object response, Runnable action)
{
if (action == null)
{
return this;
}
- public ExecutorService getExecutor()
- {
- if (executor == null)
- executor = Executors.newCachedThreadPool();
- return executor;
- }
-
- public void setExecutor(ExecutorService es)
- {
- executor = es;
- }
-
public void setDialog(JDialog d)
{
dialog = d;
{
return;
}
- Callable<Void> action = callbacks.get(response);
+ Runnable action = callbacks.get(response);
if (action != null)
{
try
{
- getExecutor().submit(action).get();
+ new Thread(action).start();
// action.call();
} catch (Exception e)
{
{
Object o = options[i];
int buttonAction = buttonActions[i];
- Callable<Void> action = callbacks.get(buttonAction);
+ Runnable action = callbacks.get(buttonAction);
JButton jb;
if (buttons != null && buttons.length > i && buttons[i] != null)
{
{
joptionpane.setValue(buttonAction);
if (action != null)
- getExecutor().submit(action);
+ new Thread(action).start();
// joptionpane.transferFocusBackward();
joptionpane.transferFocusBackward();
joptionpane.setVisible(false);
public static JvOptionPane frameDialog(Object message, String title,
int messageType, String[] buttonsTextS, String defaultButtonS,
- List<Callable<Void>> handlers, boolean modal)
+ List<Runnable> handlers, boolean modal)
{
JFrame parent = new JFrame();
JvOptionPane jvop = JvOptionPane.newOptionDialog();
}
final int dt = dialogType;
- jvop.getExecutor().execute(() -> {
+ new Thread(() -> {
jvop.showDialog(message, title, dt, messageType, null, buttonsText,
defaultButton, modal, buttons);
- });
+ }).start();
return jvop;
}
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
-import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.swing.BorderFactory;
*
* @param action
*/
- public void setResponseAction(Object response, Callable action)
+ public void setResponseAction(Object response, Runnable action)
{
dialog.setResponseHandler(response, action);
}
sg.setName(dialog.getName());
sg.setDescription(dialog.getDescription());
refresh();
- return null;
});
}
{
if (dialog.getName().indexOf(" ") > -1)
{
- if (!Platform.isJS())
- /**
- * Java only
- *
- * @j2sIgnore
- */
- {
- String ok = MessageManager.getString("action.ok");
- String cancel = MessageManager
- .getString("action.cancel");
- String message = MessageManager.getString(
- "label.spaces_converted_to_underscores");
- String title = MessageManager.getString(
- "label.no_spaces_allowed_sequence_name");
- Object[] options = new Object[] { ok, cancel };
-
- JvOptionPane.frameDialog(message, title,
- JvOptionPane.WARNING_MESSAGE, null, null, null,
- false);
- }
+ String ok = MessageManager.getString("action.ok");
+ String cancel = MessageManager.getString("action.cancel");
+ String message = MessageManager.getString(
+ "label.spaces_converted_to_underscores");
+ String title = MessageManager.getString(
+ "label.no_spaces_allowed_sequence_name");
+ Object[] options = new Object[] { ok, cancel };
+
+ JvOptionPane.frameDialog(message, title,
+ JvOptionPane.WARNING_MESSAGE, null, null, null,
+ false);
}
sequence.setName(dialog.getName().replace(' ', '_'));
ap.paintAlignment(false, false);
sequence.setDescription(dialog.getDescription());
ap.av.firePropertyChange("alignment", null,
ap.av.getAlignment().getSequences());
- return null;
});
}
ap.alignFrame.addHistoryItem(editCommand);
ap.av.firePropertyChange("alignment", null,
ap.av.getAlignment().getSequences());
- return null;
});
}
}
import java.io.File;
import java.util.List;
-import java.util.concurrent.Callable;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
public static QResponse setQuitHandler()
{
FlatDesktop.setQuitHandler(response -> {
- Callable<Void> performQuit = () -> {
+ Runnable performQuit = () -> {
response.performQuit();
setResponse(QResponse.QUIT);
- return null;
};
- Callable<Void> performForceQuit = () -> {
+ Runnable performForceQuit = () -> {
response.performQuit();
setResponse(QResponse.FORCE_QUIT);
- return null;
};
- Callable<Void> cancelQuit = () -> {
+ Runnable cancelQuit = () -> {
response.cancelQuit();
// reset
setResponse(QResponse.NULL);
- return null;
};
getQuitResponse(true, performQuit, performForceQuit, cancelQuit);
});
return gotQuitResponse;
}
- public static final Callable<Void> defaultCancelQuit = () -> {
+ public static final Runnable defaultCancelQuit = () -> {
Console.debug("QuitHandler: (default) Quit action CANCELLED by user");
// reset
setResponse(QResponse.CANCEL_QUIT);
- return null;
};
- public static final Callable<Void> defaultOkQuit = () -> {
+ public static final Runnable defaultOkQuit = () -> {
Console.debug("QuitHandler: (default) Quit action CONFIRMED by user");
setResponse(QResponse.QUIT);
- return null;
};
- public static final Callable<Void> defaultForceQuit = () -> {
+ public static final Runnable defaultForceQuit = () -> {
Console.debug("QuitHandler: (default) Quit action FORCED by user");
// note that shutdown hook will not be run
Runtime.getRuntime().halt(0);
setResponse(QResponse.FORCE_QUIT); // this line never reached!
- return null;
};
public static QResponse getQuitResponse(boolean ui)
defaultCancelQuit);
}
- public static QResponse getQuitResponse(boolean ui, Callable<Void> okQuit,
- Callable<Void> forceQuit, Callable<Void> cancelQuit)
+ public static QResponse getQuitResponse(boolean ui, Runnable okQuit,
+ Runnable forceQuit, Runnable cancelQuit)
{
QResponse got = gotQuitResponse();
if (got != QResponse.NULL && got != QResponse.CANCEL_QUIT)
qd.showDialogOnTopAsync(
new StringBuilder(
MessageManager.getString("label.quit_jalview"))
- .append("\n").append(messageString).toString(),
+ .append("\n").append(messageString)
+ .toString(),
MessageManager.getString("action.quit"),
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
new Object[]
}
}
- Callable<Void> next = null;
+ Runnable next = null;
switch (gotQuitResponse())
{
case QUIT:
return gotQuitResponse();
}
- private static QResponse waitQuit(boolean interactive,
- Callable<Void> okQuit, Callable<Void> forceQuit,
- Callable<Void> cancelQuit)
+ private static QResponse waitQuit(boolean interactive, Runnable okQuit,
+ Runnable forceQuit, Runnable cancelQuit)
{
// check for saves in progress
if (!BackupFiles.hasSavesInProgress())
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import javax.swing.JCheckBox;
};
// fetch db refs if OK pressed
- final Callable discoverCanonicalDBrefs = () -> {
+ final Runnable discoverCanonicalDBrefs = () -> {
btn_queryTDB.setEnabled(false);
populateSeqsWithoutSourceDBRef();
// call finished action directly
afterDbRefFetch.finished();
}
- return null;
};
- final Callable revertview = () -> {
+ final Runnable revertview = () -> {
if (lastSelected != null)
{
cmb_filterOption.setSelectedItem(lastSelected);
}
- return null;
};
int threshold = Cache.getDefault("UNIPROT_AUTOFETCH_THRESHOLD",
THRESHOLD_WARN_UNIPROT_FETCH_NEEDED);
import java.awt.event.MouseEvent;
import java.util.HashMap;
import java.util.Map;
-import java.util.concurrent.Callable;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
MessageManager.getString("action.cancel") };
String title = MessageManager
.getString("label.adjust_foreground_text_colour_threshold");
- Callable<Void> action = () -> // response for 1 = Cancel
+ Runnable action = () -> // response for 1 = Cancel
{
restoreInitialSettings();
- return null;
};
JvOptionPane.newOptionDialog(alignPanel.alignFrame)
.setResponseHandler(1, action).showInternalDialog(bigpanel,
}
addNewColourScheme(choice.getPath());
- return null;
});
chooser.showOpenDialog(this);
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Locale;
-import java.util.concurrent.Callable;
import java.util.concurrent.atomic.AtomicBoolean;
import org.jfree.graphics2d.svg.SVGGraphics2D;
/*
* configure the action to run on OK in the dialog
*/
- Callable<Void> okAction = () -> {
+ Runnable okAction = () -> {
doOutput(textOption.get());
- return null;
};
/*
setProgressMessage(MessageManager.formatMessage(
"status.cancelled_image_export_operation",
getDescription()));
- return null;
});
svgOption.setResponseAction(0, okAction);
svgOption.showDialog();
//////////////////////////////////////////////////////////////////
package jalview.io;
-import jalview.bin.Cache;
-import jalview.gui.JvOptionPane;
-import jalview.util.MessageManager;
-import jalview.util.Platform;
-import jalview.util.dialogrunner.DialogRunnerI;
-
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.Vector;
-import java.util.concurrent.Callable;
import javax.swing.BoxLayout;
import javax.swing.DefaultListCellRenderer;
{
private static final long serialVersionUID = 1L;
- private Map<Object, Callable> callbacks = new HashMap<>();
+ private Map<Object, Runnable> callbacks = new HashMap<>();
File selectedFile = null;
*/
@Override
- public DialogRunnerI setResponseHandler(Object response, Callable action)
+ public DialogRunnerI setResponseHandler(Object response, Runnable action)
{
callbacks.put(response, action);
return this;
{
return;
}
- Callable action = callbacks.get(response);
+ Runnable action = callbacks.get(response);
if (action != null)
{
try
{
- action.call();
+ action.run();
} catch (Exception e)
{
e.printStackTrace();
*/
package jalview.util.dialogrunner;
-import java.util.concurrent.Callable;
-
/**
* An interface for blocking dialog response handling. This is motivated by
* JalviewJS - when running as Javascript, there is only a single thread, and
* @param action
* @return
*/
- DialogRunnerI setResponseHandler(Object response, Callable<Void> action);
+ DialogRunnerI setResponseHandler(Object response, Runnable action);
// DialogRunnerI setResponseHandler(Object response, Runnable action);