*/
package jalview.util.dialogrunner;
-import java.util.List;
-
/**
- * functional pattern for blocking dialog response handling
+ * An interface for blocking dialog response handling. This is motivated by
+ * JalviewJS - when running as Javascript, there is only a single thread, and
+ * blocking dialogs have to be responsible for performing any actions required
+ * for user responses.
*
* @author jprocter
*
{
/**
- * Adds a new response for this dialog, and returns the dialog (this), to allow chaining, eg.
- * <pre>
- * dialog.addResponse(newRunResponse(OK_PRessed) { run()...})
- * .addResponse(new RunResponse(CANCEL_PRESSED);
- * </pre>
+ * Sets the action to be performed when the dialog returns the given response.
+ * Note this also handles <code>int</code>-valued responses, which will be
+ * converted to <code>Integer</code> when this method is invoked.
*
+ * @param response
* @param action
* @return
*/
- DialogRunnerI addResponse(RunResponse action);
+ DialogRunnerI setResponseHandler(Object response, Runnable action);
/**
- * Runs any registered handlers for the given response, and answers the list
- * of responses run (if any) in order run
+ * Runs the registered handler (if any) for the given response. The default
+ * action is to do nothing. Typically an action will be need on 'OK' or other
+ * positive selection in the dialog. An action might in some cases also be
+ * needed for a 'Cancel' response.
*
* @param response
* @return
*/
- default List<RunResponse> handleResponse(Object response)
+ default void handleResponse(Object response)
{
- return null;
}
}