JAL-3809 - Fixed param edit dialog for jalviewjs.
[jalview.git] / src / jalview / gui / WsJobParameters.java
index 719b7d9..88819e4 100644 (file)
@@ -48,14 +48,18 @@ import java.awt.event.ItemListener;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Vector;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CompletionStage;
 
 import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.JDialog;
+import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
+import javax.swing.WindowConstants;
 import javax.swing.border.TitledBorder;
 import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
@@ -93,6 +97,9 @@ public class WsJobParameters extends JPanel implements ItemListener,
 
   // TODO ABSRACT FROM JABAWS CLASSES
 
+  // completion stage representing whether start was clicked
+  private final CompletableFuture<Boolean> completionStage = new CompletableFuture<>();
+  
   /**
    * manager for options and parameters.
    */
@@ -123,13 +130,22 @@ public class WsJobParameters extends JPanel implements ItemListener,
   JTextArea setDescr = new JTextArea();
 
   JScrollPane paramPane = new JScrollPane();
+  
+  JButton startjob = JvSwingUtils.makeButton(
+          MessageManager.getString("action.start_job"),
+          MessageManager.getString("label.start_job_current_settings"),
+          this::startjob_actionPerformed);
+  JButton canceljob = JvSwingUtils.makeButton(
+          MessageManager.getString("action.cancel_job"),
+          MessageManager.getString("label.cancel_job_close_dialog"),
+          this::canceljob_actionPerformed);
 
   ParamDatastoreI paramStore;
 
   // set true when 'Start Job' is clicked
   boolean startJob = false;
 
-  JDialog frame = null;
+  JFrame frame = null;
 
   UIinfo service;
 
@@ -195,10 +211,10 @@ public class WsJobParameters extends JPanel implements ItemListener,
    * 
    * @return
    */
-  public boolean showRunDialog()
+  public CompletionStage<Boolean> showRunDialog()
   {
-
-    frame = new JDialog(Desktop.getInstance(), true);
+    frame = new JFrame();
+    frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
     if (service != null)
     {
       frame.setTitle(MessageManager.formatMessage("label.edit_params_for",
@@ -228,9 +244,9 @@ public class WsJobParameters extends JPanel implements ItemListener,
 
       }
     });
+    
     frame.setVisible(true);
-
-    return startJob;
+    return completionStage;
   }
 
   private void jbInit()
@@ -254,75 +270,21 @@ public class WsJobParameters extends JPanel implements ItemListener,
     updatepref = JvSwingUtils.makeButton(
             MessageManager.getString("action.update"),
             MessageManager.getString("label.update_user_parameter_set"),
-            new ActionListener()
-            {
-
-              @Override
-              public void actionPerformed(ActionEvent e)
-              {
-                update_actionPerformed();
-              }
-            });
+            this::update_actionPerformed);
     deletepref = JvSwingUtils.makeButton(
             MessageManager.getString("action.delete"),
             MessageManager.getString("label.delete_user_parameter_set"),
-            new ActionListener()
-            {
-
-              @Override
-              public void actionPerformed(ActionEvent e)
-              {
-                delete_actionPerformed();
-              }
-            });
+            this::delete_actionPerformed);
     createpref = JvSwingUtils.makeButton(
             MessageManager.getString("action.create"),
             MessageManager.getString("label.create_user_parameter_set"),
-            new ActionListener()
-            {
-
-              @Override
-              public void actionPerformed(ActionEvent e)
-              {
-                create_actionPerformed();
-              }
-            });
+            this::create_actionPerformed);
     revertpref = JvSwingUtils.makeButton(
             MessageManager.getString("action.revert"),
             MessageManager
                     .getString("label.revert_changes_user_parameter_set"),
-            new ActionListener()
-            {
+            this::revert_actionPerformed);
 
-              @Override
-              public void actionPerformed(ActionEvent e)
-              {
-                revert_actionPerformed();
-              }
-            });
-
-    JButton startjob = JvSwingUtils.makeButton(
-            MessageManager.getString("action.start_job"),
-            MessageManager.getString("label.start_job_current_settings"),
-            new ActionListener()
-            {
-              @Override
-              public void actionPerformed(ActionEvent e)
-              {
-                startjob_actionPerformed();
-              }
-            });
-    JButton canceljob = JvSwingUtils.makeButton(
-            MessageManager.getString("action.cancel_job"),
-            MessageManager.getString("label.cancel_job_close_dialog"),
-            new ActionListener()
-            {
-              @Override
-              public void actionPerformed(ActionEvent e)
-              {
-                canceljob_actionPerformed();
-              }
-            });
 
     JPanel setDetails = new JPanel();
     setDetails.setBorder(
@@ -424,13 +386,13 @@ public class WsJobParameters extends JPanel implements ItemListener,
     validate();
   }
 
-  protected void revert_actionPerformed()
+  protected void revert_actionPerformed(ActionEvent e)
   {
     reInitDialog(lastParmSet);
     updateWebServiceMenus();
   }
 
-  protected void update_actionPerformed()
+  protected void update_actionPerformed(ActionEvent e)
   {
     if (isUserPreset)
     {
@@ -448,7 +410,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
     paramStore.deletePreset(lastParmSet2);
   }
 
-  protected void delete_actionPerformed()
+  protected void delete_actionPerformed(ActionEvent e)
   {
     if (isUserPreset)
     {
@@ -459,7 +421,7 @@ public class WsJobParameters extends JPanel implements ItemListener,
     updateWebServiceMenus();
   }
 
-  protected void create_actionPerformed()
+  protected void create_actionPerformed(ActionEvent e)
   {
     String curname = ((String) setName.getSelectedItem()).trim();
     if (curname.length() > 0)
@@ -478,22 +440,24 @@ public class WsJobParameters extends JPanel implements ItemListener,
     }
   }
 
-  protected void canceljob_actionPerformed()
+  protected void canceljob_actionPerformed(ActionEvent e)
   {
     startJob = false;
     if (frame != null)
     {
       frame.setVisible(false);
     }
+    completionStage.complete(false);
   }
 
-  protected void startjob_actionPerformed()
+  protected void startjob_actionPerformed(ActionEvent e)
   {
     startJob = true;
     if (frame != null)
     {
       frame.setVisible(false);
     }
+    completionStage.complete(true);
   }
 
   void initForService(WsParamSetI paramSet, List<ArgumentI> jobArgset)