JAL-3878 Make openEditsParamsDialog an interface static method.
[jalview.git] / src / jalview / ws2 / gui / MenuEntryProviderI.java
index fbea582..3a828e7 100644 (file)
@@ -1,8 +1,16 @@
 package jalview.ws2.gui;
 
+import java.util.List;
+import java.util.concurrent.CompletionStage;
+
 import javax.swing.JMenu;
 
 import jalview.gui.AlignFrame;
+import jalview.gui.WsJobParameters;
+import jalview.util.MessageManager;
+import jalview.ws.params.ArgumentI;
+import jalview.ws.params.ParamDatastoreI;
+import jalview.ws.params.WsParamSetI;
 
 /**
  * Functional interface provided by {@link jalview.ws2.operations.Operation}
@@ -25,4 +33,39 @@ public interface MenuEntryProviderI
    *          current alignFrame
    */
   public void buildMenu(JMenu parent, AlignFrame frame);
+
+  static CompletionStage<List<ArgumentI>> openEditParamsDialog(
+      ParamDatastoreI paramStore, WsParamSetI preset,
+      List<ArgumentI> arguments)
+  {
+    WsJobParameters jobParams;
+    if (preset == null && arguments != null && arguments.size() > 0)
+      jobParams = new WsJobParameters(paramStore, preset, arguments);
+    else
+      jobParams = new WsJobParameters(paramStore, preset, null);
+    if (preset != null)
+    {
+      jobParams.setName(MessageManager.getString(
+          "label.adjusting_parameters_for_calculation"));
+    }
+    var stage = jobParams.showRunDialog();
+    return stage.thenApply((startJob) -> {
+      if (startJob)
+      {
+        if (jobParams.getPreset() == null)
+        {
+          return jobParams.getJobParams();
+        }
+        else
+        {
+          return jobParams.getPreset().getArguments();
+        }
+      }
+      else
+      {
+        return null;
+      }
+    });
+  }
+
 }