JAL-3878 Remove redundand edit params dialog method from the AnnotationOperation.
[jalview.git] / src / jalview / ws2 / operations / AnnotationOperation.java
index b940f3b..6518733 100644 (file)
@@ -1,38 +1,36 @@
 package jalview.ws2.operations;
 
-import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
-import java.util.concurrent.CancellationException;
 import java.util.concurrent.CompletionStage;
 
+import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JMenu;
 import javax.swing.JMenuItem;
+import javax.swing.event.MenuEvent;
+import javax.swing.event.MenuListener;
 
-import jalview.bin.Cache;
+import jalview.api.AlignCalcManagerI2;
+import jalview.api.AlignmentViewPanel;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.gui.AlignFrame;
+import jalview.gui.AlignViewport;
 import jalview.gui.WsJobParameters;
-import jalview.io.AnnotationFile;
 import jalview.io.FeaturesFile;
-import jalview.util.MathUtils;
+import jalview.util.Format;
 import jalview.util.MessageManager;
 import jalview.ws.params.ArgumentI;
+import jalview.ws.params.ParamDatastoreI;
 import jalview.ws.params.WsParamSetI;
 import jalview.ws2.MenuEntryProviderI;
 import jalview.ws2.ResultSupplier;
-import jalview.ws2.WSJob;
-import jalview.ws2.WSJobStatus;
 import jalview.ws2.PollingTaskExecutor;
 import jalview.ws2.WebServiceI;
-import jalview.ws2.WebServiceWorkerI;
-import jalview.ws2.utils.WSJobList;
-
-import static java.lang.String.format;
+import jalview.ws2.gui.AnnotationMenuBuilder;
 
 /**
- * 
+ *
  * @author mmwarowny
  *
  */
@@ -46,6 +44,14 @@ public class AnnotationOperation implements Operation
 
   final ResultSupplier<FeaturesFile> featuresSupplier;
 
+  boolean alignmentAnalysis = false;
+
+  boolean interactive = false;
+
+  /*
+   * Is it fine to get rid of AlignAnalysisUIText?
+   */
+
   public AnnotationOperation(WebServiceI service,
       ResultSupplier<List<AlignmentAnnotation>> annotSupplier,
       ResultSupplier<FeaturesFile> featSupplier, String operationName)
@@ -61,6 +67,12 @@ public class AnnotationOperation implements Operation
   {
     return service.getName();
   }
+  
+  @Override
+  public String getDescription()
+  {
+    return service.getDescription();
+  }
 
   @Override
   public String getTypeName()
@@ -73,6 +85,18 @@ public class AnnotationOperation implements Operation
   {
     return service.getHostName();
   }
+  
+  @Override
+  public boolean hasParameters()
+  {
+    return service.hasParameters();
+  }
+  
+  @Override
+  public ParamDatastoreI getParamStore()
+  {
+    return service.getParamStore();
+  }
 
   @Override
   public int getMinSequences()
@@ -107,156 +131,41 @@ public class AnnotationOperation implements Operation
   @Override
   public boolean isInteractive()
   {
-    return false;
+    return interactive;
   }
 
-  @Override
-  public MenuEntryProviderI getMenuBuilder()
+  public void setInteractive(boolean value)
   {
-    return this::buildMenu;
+    this.interactive = value;
   }
 
-  protected void buildMenu(JMenu parent, AlignFrame frame)
+  @Override
+  public boolean isAlignmentAnalysis()
   {
-    final var calcName = service.getName();
-    PollingTaskExecutor wsExecutor = frame.getViewport().getWSExecutor();
-    {
-      var item = new JMenuItem(MessageManager.formatMessage(
-          "label.calcname_with_default_settings", calcName));
-      item.addActionListener((event) -> {
-        WebServiceWorkerI worker = new AnnotationWorker();
-        wsExecutor.submit(worker);
-      });
-      parent.add(item);
-    }
-    if (service.hasParameters())
-    {
-      var item = new JMenuItem(
-          MessageManager.getString("label.edit_settings_and_run"));
-      item.setToolTipText(MessageManager.getString(
-          "label.view_and_change_parameters_before_running_calculation"));
-      item.addActionListener((event) -> {
-        openEditParamsDialog(service, null, null)
-            .thenAcceptAsync((arguments) -> {
-              if (arguments != null)
-              {
-                
-              }
-            });
-      });
-    }
+    return alignmentAnalysis;
   }
 
-  private CompletionStage<List<ArgumentI>> openEditParamsDialog(
-      WebServiceI service, WsParamSetI preset, List<ArgumentI> arguments)
+  public void setAlignmentAnalysis(boolean value)
   {
-    WsJobParameters jobParams;
-    if (preset == null && arguments != null && arguments.size() > 0)
-      jobParams = new WsJobParameters(service.getParamStore(), preset,
-          arguments);
-    else
-      jobParams = new WsJobParameters(service.getParamStore(), 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;
-      }
-    });
+    this.alignmentAnalysis = value;
   }
 
-  private class AnnotationWorker implements WebServiceWorkerI
+  @Override
+  public boolean getFilterNonStandardSymbols()
   {
-    private long uid = MathUtils.getUID();
-
-    private WSJobList jobs = new WSJobList();
-
-    private HashMap<Long, Integer> exceptionCount = new HashMap<>();
-
-    private static final int MAX_RETRY = 5;
-
-    @Override
-    public long getUID()
-    {
-      return uid;
-    }
-
-    @Override
-    public WebServiceI getWebService()
-    {
-      return service;
-    }
-
-    @Override
-    public List<WSJob> getJobs()
-    {
-      return Collections.unmodifiableList(jobs);
-    }
-
-    @Override
-    public void start() throws IOException
-    {
-      
-    }
-
-    @Override
-    public boolean poll() throws IOException
-    {
-      boolean done = true;
-      for (WSJob job : getJobs())
-      {
-        if (!job.getStatus().isDone() && !job.getStatus().isFailed())
-        {
-          Cache.log.debug(format("Polling job %s", job));
-          try
-          {
-            service.updateProgress(job);
-            exceptionCount.remove(job.getUid());
-          } catch (IOException e)
-          {
-            Cache.log.error(format("Polling job %s failed.", job), e);
-            int count = exceptionCount.getOrDefault(job.getUid(),
-                MAX_RETRY);
-            if (--count <= 0)
-            {
-              job.setStatus(WSJobStatus.SERVER_ERROR);
-              Cache.log.warn(format(
-                  "Attempts limit exceeded. Droping job %s.", job));
-            }
-            exceptionCount.put(job.getUid(), count);
-          } catch (OutOfMemoryError e)
-          {
-            job.setStatus(WSJobStatus.BROKEN);
-            Cache.log.error(
-                format("Out of memory when retrieving job %s", job), e);
-          }
-          Cache.log.debug(
-              format("Job %s status is %s", job, job.getStatus()));
-        }
-        done &= job.getStatus().isDone() || job.getStatus().isFailed();
-      }
-      return done;
-    }
-
-    @Override
-    public void done()
-    {
-      // TODO Auto-generated method stub
+    return false;
+  }
 
-    }
+  @Override
+  public boolean getNeedsAlignedSequences()
+  {
+    return false;
+  }
 
+  @Override
+  public MenuEntryProviderI getMenuBuilder()
+  {
+    return new AnnotationMenuBuilder(this);
   }
+
 }