JAL-2422 proof of concept adaptations for ChimeraX commands
[jalview.git] / src / jalview / ext / rbvi / chimera / ChimeraListener.java
index ead51b3..40b0ff0 100644 (file)
@@ -1,3 +1,23 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.ext.rbvi.chimera;
 
 import jalview.httpserver.AbstractRequestHandler;
@@ -19,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>
@@ -27,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
@@ -76,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;
@@ -94,22 +114,30 @@ public class ChimeraListener extends AbstractRequestHandler implements
   {
     // dumpRequest(request);
     String message = request.getParameter(CHIMERA_NOTIFICATION);
-    if (SELECTION_CHANGED.equals(message))
-    {
-      this.chimeraBinding.highlightChimeraSelection();
-    }
-    else if (message != null && message.startsWith(MODEL_CHANGED))
+    if (message == null)
     {
-      processModelChanged(message.substring(MODEL_CHANGED.length()));
+      message = request.getParameter("chimerax_notification");
     }
-    else
+    if (message != null)
     {
-      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
    */