Merge branch 'new_feature/JAL-4019_ambiguous_base_colourscheme' into develop
[jalview.git] / src / jalview / util / dialogrunner / DialogRunnerI.java
index cc4a836..1fc41e7 100644 (file)
  */
 package jalview.util.dialogrunner;
 
-import java.util.List;
+import java.util.concurrent.Callable;
 
 /**
- * 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
  *
@@ -31,17 +34,29 @@ import java.util.List;
 public interface DialogRunnerI
 {
 
-  DialogRunnerI addResponse(Object response, RunResponse action);
+  /**
+   * 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 setResponseHandler(Object response, Callable<Void> 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;
   }
 }