Input Data...
[jalview.git] / src / jalview / ws / MsaWSClient.java
index 59a858e..49c879b 100755 (executable)
@@ -58,7 +58,7 @@ public class MsaWSClient
    */\r
 \r
   public MsaWSClient(ext.vamsas.ServiceHandle sh, String altitle,\r
-                     SequenceI[] msa,\r
+                     jalview.datamodel.AlignmentView msa,\r
                      boolean submitGaps, boolean preserveOrder,\r
                      Alignment seqdataset,\r
                      AlignFrame _alignFrame)\r
@@ -91,7 +91,7 @@ public class MsaWSClient
   }\r
 \r
 \r
-  private void startMsaWSClient(String altitle, SequenceI[] msa,\r
+  private void startMsaWSClient(String altitle, AlignmentView msa,\r
                      boolean submitGaps, boolean preserveOrder, Alignment seqdataset)\r
   {\r
     if (!locateWebService())\r
@@ -141,6 +141,16 @@ public class MsaWSClient
     return true;\r
   }\r
 \r
+  protected String getServiceActionKey()\r
+  {\r
+    return "MsaWS";\r
+  }\r
+\r
+  protected String getServiceActionDescription()\r
+  {\r
+    return "Multiple Sequence Alignment";\r
+  }\r
+\r
   protected class MsaWSThread\r
       extends Thread implements WSClientI\r
   {\r
@@ -159,33 +169,34 @@ public class MsaWSClient
 \r
     Alignment dataset; // dataset to which the new alignment will be associated.\r
 \r
-    MsaWSThread(String title, SequenceI[] msa, boolean subgaps,\r
+    MsaWSThread(String title, AlignmentView _msa, boolean subgaps,\r
                 boolean presorder, Alignment seqset)\r
     {\r
+      // jbpnote - transformation should be above here - this is per sequence set contig, not for many contigs.\r
       alTitle = title;\r
       submitGaps = subgaps;\r
       preserveOrder = presorder;\r
       dataset = seqset;\r
       OutputHeader = wsInfo.getProgressText();\r
       SeqNames = new Hashtable();\r
-\r
+      SeqCigar[] msa = _msa.getSequences();\r
       vamsas.objects.simple.Sequence[] seqarray = new vamsas.objects.simple.\r
           Sequence[msa.length];\r
 \r
-      for (int i = 0; i < msa.length; i++)\r
+      for (int i = 0,n=0; i < msa.length; i++)\r
       {\r
         String newname = jalview.analysis.SeqsetUtils.unique_name(i);\r
-\r
+        SequenceI mseq = msa[i].getSeq('-');\r
         // uniquify as we go\r
         // TODO: JBPNote: this is a ubiquitous transformation - set of jalview seq objects to vamsas sequences with name preservation\r
         SeqNames.put(newname,\r
-                     jalview.analysis.SeqsetUtils.SeqCharacterHash(msa[i]));\r
+                     jalview.analysis.SeqsetUtils.SeqCharacterHash(mseq));\r
         seqarray[i] = new vamsas.objects.simple.Sequence();\r
         seqarray[i].setId(newname);\r
-        seqarray[i].setSeq( (submitGaps) ? msa[i].getSequence()\r
+        seqarray[i].setSeq( (submitGaps) ? mseq.getSequence()\r
                            : AlignSeq.extractGaps(\r
                                jalview.util.Comparison.GapChars,\r
-                               msa[i].getSequence()));\r
+                               mseq.getSequence()));\r
       }\r
 \r
       this.seqs = new vamsas.objects.simple.SequenceSet();\r
@@ -279,6 +290,21 @@ public class MsaWSClient
           if (result.isFinished())\r
           {\r
             wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_OK);\r
+            wsInfo.showResultsNewFrame.addActionListener(new java.awt.event.ActionListener()\r
+                {\r
+                  public void actionPerformed(java.awt.event.ActionEvent evt)\r
+                  {\r
+                    displayResults(true);\r
+                  }\r
+                });\r
+           wsInfo.mergeResults.addActionListener(new java.awt.event.ActionListener()\r
+                {\r
+                  public void actionPerformed(java.awt.event.ActionEvent evt)\r
+                  {\r
+                    displayResults(false);\r
+                  }\r
+                });\r
+           wsInfo.setResultsReady();\r
             parseResult();\r
             jobComplete = true;\r
             jobsRunning--;\r
@@ -430,7 +456,6 @@ public class MsaWSClient
 \r
     void parseResult()\r
     {\r
-      SequenceI[] seqs = null;\r
 \r
       try\r
       {\r
@@ -456,45 +481,62 @@ public class MsaWSClient
             OutputHeader += (lines[line] + "\n");\r
           }\r
 \r
-          // JBPNote The returned files from a webservice could be hidden behind icons in the monitor window that, when clicked, pop up their corresponding data\r
-          seqs = getVamsasAlignment(result.getMsa());\r
+          // JBPNote The returned files from a webservice could be\r
+          // hidden behind icons in the monitor window that,\r
+          // when clicked, pop up their corresponding data\r
         }\r
 \r
         wsInfo.setProgressText(OutputHeader);\r
+      }\r
+      catch (Exception ex)\r
+      {\r
+        ex.printStackTrace();\r
+      }\r
+    }\r
 \r
-        if (seqs != null)\r
-        {\r
-          AlignmentOrder msaorder = new AlignmentOrder(seqs);\r
+    void displayResults(boolean newFrame)\r
+    {\r
+      SequenceI [] seqs = getVamsasAlignment(result.getMsa());\r
 \r
-          if (preserveOrder)\r
-          {\r
-            jalview.analysis.AlignmentSorter.recoverOrder(seqs);\r
-          }\r
+      if (seqs != null)\r
+       {\r
+         AlignmentOrder msaorder = new AlignmentOrder(seqs);\r
 \r
-          jalview.analysis.SeqsetUtils.deuniquify(SeqNames, seqs);\r
+         if (preserveOrder)\r
+         {\r
+           jalview.analysis.AlignmentSorter.recoverOrder(seqs);\r
+         }\r
 \r
-          Alignment al = new Alignment(seqs);\r
-          if (dataset!=null) {\r
-            al.setDataset(dataset);\r
-          }\r
-          // TODO: JBPNote Should also rename the query sequence sometime...\r
-          AlignFrame af = new AlignFrame(al);\r
+         jalview.analysis.SeqsetUtils.deuniquify(SeqNames, seqs);\r
 \r
-          //>>>This is a fix for the moment, until a better solution is found!!<<<\r
-          alignFrame.getFeatureRenderer().transferSettings(af.getFeatureRenderer());\r
+         Alignment al = new Alignment(seqs);\r
+         if (dataset!=null)\r
+         {\r
+           al.setDataset(dataset);\r
+         }\r
 \r
-          af.addSortByOrderMenuItem(ServiceName + " Ordering",\r
-                                    msaorder);\r
+         if(newFrame)\r
+         {\r
+           // TODO: JBPNote Should also rename the query sequence sometime...\r
+           AlignFrame af = new AlignFrame(al);\r
 \r
-          Desktop.addInternalFrame(af, alTitle,\r
-                                   AlignFrame.NEW_WINDOW_WIDTH,\r
-                                   AlignFrame.NEW_WINDOW_HEIGHT);\r
-        }\r
-      }\r
-      catch (Exception ex)\r
-      {\r
-        ex.printStackTrace();\r
-      }\r
+         //>>>This is a fix for the moment, until a better solution is found!!<<<\r
+           af.getFeatureRenderer().transferSettings(alignFrame.getFeatureRenderer());\r
+\r
+           af.addSortByOrderMenuItem(ServiceName + " Ordering",\r
+                                     msaorder);\r
+\r
+           Desktop.addInternalFrame(af, alTitle,\r
+                                    AlignFrame.NEW_WINDOW_WIDTH,\r
+                                    AlignFrame.NEW_WINDOW_HEIGHT);\r
+\r
+         }\r
+         else\r
+         {\r
+           System.out.println("MERGE WITH OLD FRAME");\r
+\r
+         }\r
+       }\r
     }\r
   }\r
 }\r