X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fext%2Fedu%2Fucsf%2Frbvi%2Fstrucviz2%2FChimeraManager.java;h=ea48cb6283aaf9868f93ac40d7a49530b5f81372;hb=4994aa94fd62af0058f2db96f0ea6c4ca1abe80b;hp=31f5dc86ecf61ab733f99171f302a40ead76d0ca;hpb=2fb924ec0d110eb3ca6c3fb06efa27acd34b2750;p=jalview.git diff --git a/src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java b/src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java index 31f5dc8..ea48cb6 100644 --- a/src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java +++ b/src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java @@ -333,10 +333,7 @@ public class ChimeraManager public void stopListening() { - // TODO send this command when viewer connection is closed in Jalview - String command = isChimeraX - ? "info notify stop models jalview; info notify stop selection jalview" - : "listen stop models ; listen stop selection "; + String command = "listen stop models ; listen stop selection "; sendChimeraCommand(command, false); } @@ -350,19 +347,13 @@ public class ChimeraManager /* * listen for model changes */ - String command = isChimeraX - ? ("info notify start models prefix ModelChanged jalview url " - + uri) - : ("listen start models url " + uri); + String command = "listen start models url " + uri; sendChimeraCommand(command, false); /* * listen for selection changes */ - command = isChimeraX - ? ("info notify start selection jalview prefix SelectionChanged url " - + uri) - : ("listen start select prefix SelectionChanged url " + uri); + command = "listen start select prefix SelectionChanged url " + uri; sendChimeraCommand(command, false); } @@ -438,10 +429,7 @@ public class ChimeraManager { List selectedResidues = new ArrayList<>(); - // in fact 'listinfo' (undocumented) works in ChimeraX - String command = (isChimeraX - ? "info" - : "list") + " selection level residue"; + String command = "list selection level residue"; List chimeraReply = sendChimeraCommand(command, true); if (chimeraReply != null) { @@ -498,7 +486,7 @@ public class ChimeraManager { List modelList = new ArrayList<>(); String command = "list models type " - + (isChimeraX ? "AtomicStructure" : "molecule"); + + (isChimeraX() ? "AtomicStructure" : "molecule"); List list = sendChimeraCommand(command, true); if (list != null) { @@ -586,7 +574,6 @@ public class ChimeraManager { // ensure symbolic links are resolved chimeraPath = Paths.get(chimeraPath).toRealPath().toString(); - isChimeraX = chimeraPath.toLowerCase().contains("chimerax"); File path = new File(chimeraPath); // uncomment the next line to simulate Chimera not installed // path = new File(chimeraPath + "x"); @@ -599,16 +586,7 @@ public class ChimeraManager args.add(chimeraPath); // shows Chimera output window but suppresses REST responses: // args.add("--debug"); - if (isChimeraX()) - { - args.add("--cmd"); - args.add("remote rest start"); - } - else - { - args.add("--start"); - args.add("RESTServer"); - } + addLaunchArguments(args); ProcessBuilder pb = new ProcessBuilder(args); chimera = pb.start(); error = ""; @@ -640,6 +618,18 @@ public class ChimeraManager } /** + * Adds command-line arguments to start the REST server + *

+ * Method extracted for Jalview to allow override in ChimeraXManager + * @param args + */ + protected void addLaunchArguments(List args) + { + args.add("--start"); + args.add("RESTServer"); + } + + /** * Read and return the port number returned in the reply to --start RESTServer */ private int getPortNumber() @@ -751,7 +741,7 @@ public class ChimeraManager public List getAttrList() { List attributes = new ArrayList<>(); - String command = (isChimeraX ? "info " : "list ") + "resattr"; + String command = (isChimeraX() ? "info " : "list ") + "resattr"; final List reply = sendChimeraCommand(command, true); if (reply != null) { @@ -811,8 +801,6 @@ public class ChimeraManager private volatile boolean busy = false; - private boolean isChimeraX; - /** * Send a command to Chimera. * @@ -873,7 +861,7 @@ public class ChimeraManager { String restUrl = "http://127.0.0.1:" + this.chimeraRestPort + "/run"; List commands = new ArrayList<>(1); - String method = isChimeraX() ? "GET" : "POST"; + String method = getHttpRequestMethod(); if ("GET".equals(method)) { command = command.replace(" ", "+").replace("#", "%23") @@ -914,6 +902,15 @@ public class ChimeraManager } /** + * Returns "POST" as the HTTP request method to use for REST service calls to Chimera + * @return + */ + protected String getHttpRequestMethod() + { + return "POST"; + } + + /** * Send a command to stdin of Chimera process, and optionally read any * responses. * @@ -964,11 +961,6 @@ public class ChimeraManager public boolean isChimeraX() { - return isChimeraX; - } - - public void setChimeraX(boolean b) - { - isChimeraX = b; + return false; } }