JAL-3609 formatting save after cherry-picks
[jalview.git] / src / jalview / util / dialogrunner / DialogRunnerI.java
index aaeb304..0cb90c2 100644 (file)
 package jalview.util.dialogrunner;
 
 /**
- * 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<T extends DialogRunnerI>
-{
+public interface DialogRunnerI {
 
-  /**
-   * define a new response for this dialog. eg. dialog.response(new
-   * RunResponse(OK_PRessed) { run()...}).response(new RunResponse(CANCEL_PRESSED)
-   * { ... });
-   * 
-   * @param action
-   * @return the dialog
-   */
-  T 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 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) {
+       }
 }