JAL-4186 Turn JvOptionPane Callable<Void> handlers back into Runnable for jalviewjs...
[jalview.git] / src / jalview / util / dialogrunner / DialogRunnerI.java
index 6914656..ce96bad 100644 (file)
  */
 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
  *
@@ -32,26 +33,28 @@ public interface DialogRunnerI
 {
 
   /**
-   * 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);
+
+  // 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;
   }
 }