JAL-3048 DialogRunnerI reduced to minimal implementation
[jalview.git] / src / jalview / util / dialogrunner / DialogRunnerI.java
index cc4a836..0cb90c2 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
  *
  */
-public interface DialogRunnerI
-{
+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, Runnable action);
 
-  /**
-   * Runs any registered handlers for the given response, and answers the list
-   * of responses run (if any) in order run
-   * 
-   * @param response
-   * @return
-   */
-  default List<RunResponse> handleResponse(Object response) 
-  {
-       return null;
-  }
+       /**
+        * 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 void handleResponse(Object response) {
+       }
 }