Merge branch 'JAL-3878_ws-overhaul-3' into with_ws_overhaul-3
authorJim Procter <j.procter@dundee.ac.uk>
Mon, 30 Jan 2023 12:23:53 +0000 (12:23 +0000)
committerJim Procter <j.procter@dundee.ac.uk>
Mon, 30 Jan 2023 12:23:53 +0000 (12:23 +0000)
 Conflicts:
src/jalview/gui/AlignFrame.java
src/jalview/gui/SlivkaPreferences.java
src/jalview/workers/AlignCalcManager2.java

1  2 
src/jalview/datamodel/Sequence.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/Desktop.java
src/jalview/gui/PCAPanel.java
src/jalview/gui/SlivkaPreferences.java
src/jalview/gui/StructureChooser.java
src/jalview/gui/WebserviceInfo.java
src/jalview/gui/WsJobParameters.java
src/jalview/viewmodel/AlignmentViewport.java
src/jalview/workers/AlignCalcManager2.java

Simple merge
@@@ -182,7 -115,10 +182,9 @@@ import jalview.ws.params.ArgumentI
  import jalview.ws.params.ParamDatastoreI;
  import jalview.ws.params.WsParamSetI;
  import jalview.ws.seqfetcher.DbSourceProxy;
- import jalview.ws.slivkaws.SlivkaWSDiscoverer;
+ import jalview.ws2.client.api.WebServiceDiscovererI;
+ import jalview.ws2.client.slivka.SlivkaWSDiscoverer;
+ import jalview.ws2.gui.WebServicesMenuManager;
 -
  import java.io.IOException;
  import java.util.HashSet;
  import java.util.Set;
@@@ -964,6 -911,16 +977,7 @@@ public class AlignFrame extends GAlignF
    {
      buildWebServicesMenu();
    }
 -  private WebServiceDiscovererI.ServicesChangeListener slivkaServiceChangeListener =
 -      (discoverer, services) -> {
 -        // run when slivka services change
 -        var menu = AlignFrame.this.slivkaMenu;
 -        menu.setServices(discoverer);
 -        menu.setInProgress(discoverer.isRunning());
 -        menu.setNoServices(services.isEmpty() && discoverer.isDone());
 -      };
 -
    /* Set up intrinsic listeners for dynamically generated GUI bits. */
    private void addServiceListeners()
    {
    /*
     * Added so Castor Mapping file can obtain Jalview Version
     */
    public String getVersion()
    {
 -    return jalview.bin.Cache.getProperty("VERSION");
 +    return Cache.getProperty("VERSION");
    }
  
    public FeatureRenderer getFeatureRenderer()
            {
              String tempFilePath = doBackup ? backupfiles.getTempFilePath()
                      : file;
 +            Console.trace("ALIGNFRAME setting PrintWriter");
              PrintWriter out = new PrintWriter(new FileWriter(tempFilePath));
  
 +            if (backupfiles != null)
 +            {
 +              Console.trace("ALIGNFRAME about to write to temp file "
 +                      + backupfiles.getTempFilePath());
 +            }
              out.print(output);
 +            Console.trace("ALIGNFRAME about to close file");
              out.close();
 +            Console.trace("ALIGNFRAME closed file");
              AlignFrame.this.setTitle(file);
              statusBar.setText(MessageManager.formatMessage(
                      "label.successfully_saved_to_file_in_format",
    }
  
    /**
 -   * DOCUMENT ME!
 +   * Calls AlignmentI.moveSelectedSequencesByOne with current sequence selection
 +   * or the sequence under cursor in keyboard mode
     * 
     * @param up
 -   *          DOCUMENT ME!
 +   *          or down (if !up)
     */
    public void moveSelectedSequences(boolean up)
    {
      SequenceGroup sg = viewport.getSelectionGroup();
  
      if (sg == null)
      {
 +      if (viewport.cursorMode)
 +      {
 +        sg = new SequenceGroup();
 +        sg.addSequence(viewport.getAlignment().getSequenceAt(
 +                alignPanel.getSeqPanel().seqCanvas.cursorY), false);
 +      }
 +      else
 +      {
 +        return;
 +      }
 +    }
 +
 +    if (sg.getSize() < 1)
 +    {
        return;
      }
 +    // TODO: JAL-3733 - add an event to the undo buffer for this !
      viewport.getAlignment().moveSelectedSequencesByOne(sg,
              viewport.getHiddenRepSequences(), up);
      alignPanel.paintAlignment(true, false);
    }
  
    /**
 -   * DOCUMENT ME!
 +   * Opens a Finder dialog
     * 
     * @param e
 -   *          DOCUMENT ME!
     */
    @Override
    public void findMenuItem_actionPerformed(ActionEvent e)
    {
      return tp;
    }
  
+   private WebServicesMenuManager slivkaMenu = new WebServicesMenuManager("slivka", this);
 -
    /**
     * Schedule the web services menu rebuild to the event dispatch thread.
     */
        webService.removeAll();
        if (Cache.getDefault("SHOW_SLIVKA_SERVICES", true))
        {
 -        Cache.log.info("Building web service menu for slivka");
 +        Console.info("Building web service menu for slivka");
          SlivkaWSDiscoverer discoverer = SlivkaWSDiscoverer.getInstance();
-         JMenu submenu = new JMenu("Slivka");
-         buildWebServicesMenu(discoverer, submenu);
-         webService.add(submenu);
+         slivkaMenu.setServices(discoverer);
+         slivkaMenu.setInProgress(discoverer.isRunning());
+         slivkaMenu.setNoServices(discoverer.isDone() && !discoverer.hasServices());
+         webService.add(slivkaMenu.getMenu());
        }
        if (Cache.getDefault("SHOW_JWS2_SERVICES", true))
        {
Simple merge
Simple merge
@@@ -1,11 -1,5 +1,11 @@@
  package jalview.gui;
  
 +import jalview.bin.Cache;
 +import jalview.bin.Console;
 +import jalview.util.MessageManager;
- import jalview.ws.WSDiscovererI;
- import jalview.ws.slivkaws.SlivkaWSDiscoverer;
++import jalview.ws2.client.api.WebServiceDiscovererI;
++import jalview.ws2.client.slivka.SlivkaWSDiscoverer;
 +
  import java.awt.BorderLayout;
  import java.awt.Color;
  import java.awt.Component;
@@@ -38,6 -33,11 +39,7 @@@ import javax.swing.UIManager
  import javax.swing.table.AbstractTableModel;
  import javax.swing.table.DefaultTableCellRenderer;
  
 -import jalview.bin.Cache;
 -import jalview.util.MessageManager;
 -import jalview.ws2.client.api.WebServiceDiscovererI;
 -import jalview.ws2.client.slivka.SlivkaWSDiscoverer;
  @SuppressWarnings("serial")
  public class SlivkaPreferences extends JPanel
  {
    // Discoverer buttons action listeners
    private ActionListener refreshServicesAction = (ActionEvent e) -> {
      progressBar.setVisible(true);
 -    Cache.log.info("Requesting service reload");
 +    Console.info("Requesting service reload");
-     discoverer.startDiscoverer().handle((_discoverer, exception) -> {
+     discoverer.startDiscoverer().handle((services, exception) -> {
        if (exception == null)
        {
 -        Cache.log.info("Reloading done");
 +        Console.info("Reloading done");
        }
-       else
+       else if (exception instanceof CancellationException)
        {
 -        Cache.log.info("Reloading cancelled");
++        Console.info("Reloading cancelled");
+       }
+       else {
 -        Cache.log.error("Reloading failed", exception);
 +        Console.error("Reloading failed", exception);
        }
        SwingUtilities.invokeLater(() -> progressBar.setVisible(false));
        return null;
Simple merge
Simple merge
Simple merge
@@@ -111,19 -110,15 +111,15 @@@ public class AlignCalcManager2 implemen
        task = executor.submit(() -> {
          try
          {
-           Console.debug(format("Worker %s started",
-                   getWorker().getClass().getName()));
 -          Cache.log.debug(format("Worker %s started", getWorker()));
++          Console.debug(format("Worker %s started", getWorker()));
            getWorker().run();
-           Console.debug(format("Worker %s finished",
-                   getWorker().getClass().getName()));
 -          Cache.log.debug(format("Worker %s finished", getWorker()));
++          Console.debug(format("Worker %s finished", getWorker()));
          } catch (InterruptedException e)
          {
-           Console.debug(format("Worker %s interrupted",
-                   getWorker().getClass().getName()));
 -          Cache.log.debug(format("Worker %s interrupted", getWorker()));
++          Console.debug(format("Worker %s interrupted", getWorker()));
          } catch (Throwable th)
          {
-           Console.debug(format("Worker %s failed",
-                   getWorker().getClass().getName()), th);
 -          Cache.log.debug(format("Worker %s failed", getWorker()), th);
++          Console.debug(format("Worker %s failed", getWorker()), th);
          } finally
          {
            if (!isRegistered())
        {
          return;
        }
-       Console.debug(format("Cancelling worker %s",
-               getWorker().getClass().getName()));
 -      Cache.log.debug(format("Cancelling worker %s", getWorker()));
++      Console.debug(format("Cancelling worker %s", getWorker()));
        task.cancel(true);
      }
    }
          throw new IllegalStateException(
                  "Cannot submit new task if the prevoius one is still running");
        }
 -      Cache.log.debug(
 +      Console.debug(
-               format("Worker %s queued", getWorker().getClass().getName()));
+               format("Worker %s queued", getWorker()));
        final var runnable = new Runnable()
        {
          private boolean started = false;
            {
              if (!started)
              {
-               Console.debug(format("Worker %s started",
-                       getWorker().getClass().getName()));
 -              Cache.log.debug(format("Worker %s started", getWorker()));
++              Console.debug(format("Worker %s started", getWorker()));
                getWorker().startUp();
                started = true;
              }
              else if (!completed)
              {
-               Console.debug(format("Polling worker %s",
-                       getWorker().getClass().getName()));
 -              Cache.log.debug(format("Polling worker %s", getWorker()));
++              Console.debug(format("Polling worker %s", getWorker()));
                if (getWorker().poll())
                {
-                 Console.debug(format("Worker %s finished",
-                         getWorker().getClass().getName()));
 -                Cache.log.debug(format("Worker %s finished", getWorker()));
++                Console.debug(format("Worker %s finished", getWorker()));
                  completed = true;
                }
              }
            } catch (Throwable th)
            {
-             Console.debug(format("Worker %s failed",
-                     getWorker().getClass().getName()), th);
 -            Cache.log.debug(format("Worker %s failed", getWorker()), th);
++            Console.debug(format("Worker %s failed", getWorker()), th);
              completed = true;
            }
            if (completed)
              final var worker = getWorker();
              if (!isRegistered())
                PollableWorkerManager.super.worker = null;
-             Console.debug(format("Finalizing completed worker %s",
-                     worker.getClass().getName()));
 -            Cache.log.debug(format("Finalizing completed worker %s", worker));
++            Console.debug(format("Finalizing completed worker %s", worker));
              worker.done();
              // almost impossible, but the future may be null at this point
              // let it throw NPE to cancel forcefully
        {
          return;
        }
-       Console.debug(format("Cancelling worker %s",
-               getWorker().getClass().getName()));
 -      Cache.log.debug(format("Cancelling worker %s", getWorker()));
++      Console.debug(format("Cancelling worker %s", getWorker()));
        task.cancel(false);
        executor.submit(() -> {
          final var worker = getWorker();
          if (worker != null)
          {
            worker.cancel();
-           Console.debug(format("Finalizing cancelled worker %s",
-                   worker.getClass().getName()));
 -          Cache.log.debug(format("Finalizing cancelled worker %s", worker));
++          Console.debug(format("Finalizing cancelled worker %s", worker));
            worker.done();
          }
        });