JAL-853 use service action attribute to index services in webservices menu and hardwi...
[jalview.git] / src / jalview / ws / rest / RestClient.java
index 64333c6..ac4f44e 100644 (file)
@@ -5,8 +5,8 @@ package jalview.ws.rest;
 
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.util.Collection;
 import java.util.Hashtable;
-import java.util.Vector;
 
 import javax.swing.JMenu;
 import javax.swing.JMenuItem;
@@ -14,10 +14,7 @@ import javax.swing.JOptionPane;
 import javax.swing.event.MenuEvent;
 import javax.swing.event.MenuListener;
 
-import com.sun.org.apache.bcel.internal.generic.ISHL;
-
 import jalview.datamodel.AlignmentView;
-import jalview.datamodel.SequenceGroup;
 import jalview.gui.AlignFrame;
 import jalview.gui.AlignViewport;
 import jalview.gui.AlignmentPanel;
@@ -200,10 +197,14 @@ public class RestClient extends WSClient implements WSClientI,
    */
   jalview.io.packed.JalviewDataset jds;
 
+  /**
+   * informative name for results
+   */
+  public String viewTitle;
+
   protected void constructJob()
   {
     service.setInvolvesFlags();
-    
     // record all aspects of alignment view so we can merge back or recreate
     // later
     undoredo = av.getUndoRedoHash();
@@ -214,7 +215,7 @@ public class RestClient extends WSClient implements WSClientI,
      */
     boolean selExists = (av.getSelectionGroup() != null)
             && (av.getSelectionGroup().getSize() > 1);
-    // TODO: revise to full focus+context+dataset input data staging model
+    // TODO: JAL-715: refactor to alignViewport methods and revise to full focus+context+dataset input data staging model
     if (selExists)
     {
       if (service.partitiondata)
@@ -228,6 +229,7 @@ public class RestClient extends WSClient implements WSClientI,
                   av.hasHiddenColumns(), 
                   true, 
                   true);
+          viewTitle = "selected "+(av.hasHiddenColumns() ? "visible" : "") + " region of "+af.getTitle();
         }
         else
         {
@@ -239,7 +241,7 @@ public class RestClient extends WSClient implements WSClientI,
                   false, 
                   true);
         }
-        // TODO: verify that some kind of partition can be constructed from input
+        viewTitle = "select and unselected "+(av.hasHiddenColumns() ? "visible" : "") + " regions from "+af.getTitle();
       }
       else
       {
@@ -250,6 +252,7 @@ public class RestClient extends WSClient implements WSClientI,
                 av.hasHiddenColumns(), 
                 true, 
                 true);
+        viewTitle = "selected "+(av.hasHiddenColumns() ? "visible" : "") + " region of "+af.getTitle();
       }
     } else {
       // standard alignment view without selection present
@@ -259,6 +262,7 @@ public class RestClient extends WSClient implements WSClientI,
               av.hasHiddenColumns(), 
               false, 
               true);
+      viewTitle = ""+(av.hasHiddenColumns() ? "visible region of " : "") + af.getTitle();
     }
     
     RestJobThread jobsthread = new RestJobThread(this);
@@ -274,14 +278,14 @@ public class RestClient extends WSClient implements WSClientI,
     {
       // TODO: try to tell the user why the job couldn't be started.
       JOptionPane.showMessageDialog(Desktop.desktop,
-              "Unable to start web service analysis",
-              "Internal Jalview Error", JOptionPane.WARNING_MESSAGE);
+              (jobsthread.hasWarnings() ? jobsthread.getWarnings() : "The Job couldn't be started. Please check your input, and the Jalview console for any warning messages."),
+              "Unable to start web service analysis", JOptionPane.WARNING_MESSAGE);
     }
   }
 
   public static RestClient makeShmmrRestClient()
   {
-    String action = "Analyse", description = "Sequence Harmony and Multi-Relief", name = "SHMR";
+    String action = "Analysis", description = "Sequence Harmony and Multi-Relief (UNSTABLE!)", name = "Sequence Harmony";
     Hashtable<String, InputType> iparams = new Hashtable<String, InputType>();
     jalview.ws.rest.params.JobConstant toolp;
     //toolp = new jalview.ws.rest.JobConstant("tool","jalview");
@@ -296,10 +300,14 @@ public class RestClient extends WSClient implements WSClientI,
     iparams.put(toolp.token, toolp);
     
     jalview.ws.rest.params.Alignment aliinput = new jalview.ws.rest.params.Alignment();
-    aliinput.token = "ali_file";
-    aliinput.writeAsFile=true;
-    iparams.put("ali_file", aliinput);
+    aliinput.token = "ali";//_file";
+    aliinput.writeAsFile=false;//true;
+    //aliinput.token = "ali_file";
+    //aliinput.writeAsFile=true;
+    iparams.put(aliinput.token, aliinput);
     jalview.ws.rest.params.SeqGroupIndexVector sgroups = new jalview.ws.rest.params.SeqGroupIndexVector();
+    sgroups.setMinsize(2);
+    sgroups.min=2;// need at least two group defined to make a partition
     iparams.put("groups", sgroups);
     sgroups.token = "groups";
     sgroups.sep = " ";
@@ -333,4 +341,14 @@ public class RestClient extends WSClient implements WSClientI,
     return true;
   }
 
+  public static RestClient[] getRestClients()
+  {
+    return new RestClient[] { makeShmmrRestClient() };
+  }
+
+  public String getAction()
+  {
+    return service.details.Action;
+  }
+
 }