JAL-2422 proof of concept adaptations for ChimeraX commands
[jalview.git] / src / jalview / ext / rbvi / chimera / ChimeraListener.java
index ba5e332..40b0ff0 100644 (file)
@@ -39,7 +39,8 @@ import javax.servlet.http.HttpServletResponse;
  * <li>Start the ChimeraListener, get the URL it is listening on</li>
  * <li>The first listener started will start the singleton HttpServer</li>
  * <li>Send a 'listen' command to Chimera with the URL of the listener</li>
- * <li>When Jalview's Chimera window is closed, shut down the ChimeraListener</li>
+ * <li>When Jalview's Chimera window is closed, shut down the
+ * ChimeraListener</li>
  * <li>Multiple linked Chimera instances will each have a separate listener (but
  * share one Http server)</li>
  * </ul>
@@ -47,8 +48,8 @@ import javax.servlet.http.HttpServletResponse;
  * @author gmcarstairs
  *
  */
-public class ChimeraListener extends AbstractRequestHandler implements
-        SelectionSource
+public class ChimeraListener extends AbstractRequestHandler
+        implements SelectionSource
 {
   /*
    * Chimera notification parameter name
@@ -96,8 +97,7 @@ public class ChimeraListener extends AbstractRequestHandler implements
    * @throws BindException
    *           if no free port can be assigned
    */
-  public ChimeraListener(JalviewChimeraBinding binding)
-          throws BindException
+  public ChimeraListener(JalviewChimeraBinding binding) throws BindException
   {
     myChimeraId = chimeraId++;
     this.chimeraBinding = binding;
@@ -114,22 +114,30 @@ public class ChimeraListener extends AbstractRequestHandler implements
   {
     // dumpRequest(request);
     String message = request.getParameter(CHIMERA_NOTIFICATION);
-    if (SELECTION_CHANGED.equals(message))
+    if (message == null)
     {
-      this.chimeraBinding.highlightChimeraSelection();
+      message = request.getParameter("chimerax_notification");
     }
-    else if (message != null && message.startsWith(MODEL_CHANGED))
+    if (message != null)
     {
-      processModelChanged(message.substring(MODEL_CHANGED.length()));
-    }
-    else
-    {
-      System.err.println("Unexpected chimeraNotification: " + message);
+      if (message.startsWith("SelectionChanged"))
+      {
+        this.chimeraBinding.highlightChimeraSelection();
+      }
+      else if (message.startsWith(MODEL_CHANGED))
+      {
+        System.err.println(message);
+        processModelChanged(message.substring(MODEL_CHANGED.length()));
+      }
+      else
+      {
+        System.err.println("Unexpected chimeraNotification: " + message);
+      }
     }
   }
 
   /**
-   * Handler a ModelChanged notification from Chimera
+   * Handle a ModelChanged notification from Chimera
    * 
    * @param substring
    */