showTranslation is not a checkbox
[jalview.git] / src / jalview / ws / MsaWSClient.java
index 0c30201..999fc96 100755 (executable)
@@ -43,6 +43,7 @@ public class MsaWSClient
    * server is a WSDL2Java generated stub for an archetypal MsaWSI service.\r
    */\r
   ext.vamsas.MuscleWS server;\r
+  AlignFrame alignFrame;\r
 \r
 \r
   /**\r
@@ -56,10 +57,14 @@ public class MsaWSClient
    * @param preserveOrder DOCUMENT ME!\r
    */\r
 \r
-  public MsaWSClient(ext.vamsas.ServiceHandle sh, String altitle, SequenceI[] msa,\r
-                     boolean submitGaps, boolean preserveOrder)\r
+  public MsaWSClient(ext.vamsas.ServiceHandle sh, String altitle,\r
+                     SequenceI[] msa,\r
+                     boolean submitGaps, boolean preserveOrder,\r
+                     Alignment seqdataset,\r
+                     AlignFrame _alignFrame)\r
   {\r
 \r
+    alignFrame = _alignFrame;\r
     if (!sh.getAbstractName().equals("MsaWS"))\r
     {\r
       JOptionPane.showMessageDialog(Desktop.desktop,\r
@@ -81,13 +86,13 @@ public class MsaWSClient
 \r
        return;\r
      }\r
-    startMsaWSClient(altitle, msa, submitGaps, preserveOrder);\r
+    startMsaWSClient(altitle, msa, submitGaps, preserveOrder, seqdataset);\r
 \r
   }\r
 \r
 \r
   private void startMsaWSClient(String altitle, SequenceI[] msa,\r
-                     boolean submitGaps, boolean preserveOrder)\r
+                     boolean submitGaps, boolean preserveOrder, Alignment seqdataset)\r
   {\r
     if (!locateWebService())\r
     {\r
@@ -99,7 +104,7 @@ public class MsaWSClient
 \r
     MsaWSThread musclethread = new MsaWSThread(WebServiceName +\r
                                                " alignment of " + altitle, msa,\r
-                                               submitGaps, preserveOrder);\r
+                                               submitGaps, preserveOrder, seqdataset);\r
     wsInfo.setthisService(musclethread);\r
     musclethread.start();\r
   }\r
@@ -125,7 +130,7 @@ public class MsaWSClient
                              " Service location failed\nfor URL :" + WsURL +\r
                              "\n" +\r
                              ex.getMessage());\r
-      wsInfo.setStatus(wsInfo.ERROR);\r
+      wsInfo.setStatus(WebserviceInfo.ERROR);\r
       ex.printStackTrace();\r
 \r
       return false;\r
@@ -145,20 +150,22 @@ public class MsaWSClient
     vamsas.objects.simple.SequenceSet seqs = new vamsas.objects.simple.\r
         SequenceSet();\r
     Hashtable SeqNames = null;\r
-    boolean submitGaps = false; // and always store and recover sequence order\r
+    boolean submitGaps = false; // pass sequences including gaps to alignment service\r
     boolean preserveOrder = true; // and always store and recover sequence order\r
     String jobId;\r
     String alTitle; // name which will be used to form new alignment window.\r
     int allowedServerExceptions = 3; // thread dies if too many exceptions.\r
     boolean jobComplete = false;\r
 \r
+    Alignment dataset; // dataset to which the new alignment will be associated.\r
+\r
     MsaWSThread(String title, SequenceI[] msa, boolean subgaps,\r
-                boolean presorder)\r
+                boolean presorder, Alignment seqset)\r
     {\r
       alTitle = title;\r
       submitGaps = subgaps;\r
       preserveOrder = presorder;\r
-\r
+      dataset = seqset;\r
       OutputHeader = wsInfo.getProgressText();\r
       SeqNames = new Hashtable();\r
 \r
@@ -257,7 +264,7 @@ public class MsaWSClient
             throw (new Exception(\r
                 "Timed out when communicating with server\nTry again later.\n"));\r
           }\r
-          jalview.bin.Jalview.log.debug("Result state " + result.getState() +\r
+          jalview.bin.Cache.log.debug("Result state " + result.getState() +\r
                                         "(ServerError=" + result.isServerError() +\r
                                         ")");\r
           if (result.isRunning())\r
@@ -272,6 +279,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
@@ -280,9 +302,7 @@ public class MsaWSClient
           {\r
             if (result.getStatus() != null)\r
             {\r
-              System.out.println("result "+result.getStatus().length());\r
-              wsInfo.setProgressText(OutputHeader + "\n" );\r
-                                //     result.getStatus());\r
+              wsInfo.setProgressText(OutputHeader + "\n"+   result.getStatus());\r
             }\r
             if (result.isServerError())\r
             {\r
@@ -397,7 +417,7 @@ public class MsaWSClient
                            e.toString() +\r
                            "\n");\r
         this.allowedServerExceptions = 0;\r
-        wsInfo.setStatus(wsInfo.STATE_STOPPED_SERVERERROR);\r
+        wsInfo.setStatus(WebserviceInfo.STATE_STOPPED_SERVERERROR);\r
         wsInfo.appendProgressText(\r
             "Failed to submit sequences for alignment.\n" +\r
             "It is most likely that there is a problem with the server.\n" +\r
@@ -425,7 +445,6 @@ public class MsaWSClient
 \r
     void parseResult()\r
     {\r
-      SequenceI[] seqs = null;\r
 \r
       try\r
       {\r
@@ -437,56 +456,76 @@ public class MsaWSClient
 \r
         if (result.getStatus() != null)\r
         {\r
-          System.out.println("get status  " +result.getStatus().length());\r
-         // OutputHeader += ("\n" + result.getStatus());\r
+          OutputHeader += ("\n" + result.getStatus());\r
         }\r
 \r
         if (result.getMsa() != null)\r
         {\r
-          System.out.println("get msa");\r
-       //   OutputHeader += "\nAlignment Object Method Notes\n";\r
+          OutputHeader += "\nAlignment Object Method Notes\n";\r
 \r
           String[] lines = result.getMsa().getMethod();\r
 \r
-System.out.println("lines "+lines.length);\r
           for (int line = 0; line < lines.length; line++)\r
           {\r
-           // OutputHeader += (lines[line] + "\n");\r
+            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
+         jalview.analysis.SeqsetUtils.deuniquify(SeqNames, seqs);\r
 \r
-          // TODO: JBPNote Should also rename the query sequence sometime...\r
-          AlignFrame af = new AlignFrame(al);\r
-          af.addSortByOrderMenuItem(ServiceName + " Ordering",\r
-                                    msaorder);\r
+         Alignment al = new Alignment(seqs);\r
+         if (dataset!=null)\r
+         {\r
+           al.setDataset(dataset);\r
+         }\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
+         if(newFrame)\r
+         {\r
+           // TODO: JBPNote Should also rename the query sequence sometime...\r
+           AlignFrame af = new AlignFrame(al);\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