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);
}
/*
* 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);
}
{
List<String> 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<String> chimeraReply = sendChimeraCommand(command, true);
if (chimeraReply != null)
{
{
List<ChimeraModel> modelList = new ArrayList<>();
String command = "list models type "
- + (isChimeraX ? "AtomicStructure" : "molecule");
+ + (isChimeraX() ? "AtomicStructure" : "molecule");
List<String> list = sendChimeraCommand(command, true);
if (list != null)
{
{
// 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");
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 = "";
}
/**
+ * Adds command-line arguments to start the REST server
+ * <p>
+ * Method extracted for Jalview to allow override in ChimeraXManager
+ * @param args
+ */
+ protected void addLaunchArguments(List<String> args)
+ {
+ args.add("--start");
+ args.add("RESTServer");
+ }
+
+ /**
* Read and return the port number returned in the reply to --start RESTServer
*/
private int getPortNumber()
public List<String> getAttrList()
{
List<String> attributes = new ArrayList<>();
- String command = (isChimeraX ? "info " : "list ") + "resattr";
+ String command = (isChimeraX() ? "info " : "list ") + "resattr";
final List<String> reply = sendChimeraCommand(command, true);
if (reply != null)
{
private volatile boolean busy = false;
- private boolean isChimeraX;
-
/**
* Send a command to Chimera.
*
{
String restUrl = "http://127.0.0.1:" + this.chimeraRestPort + "/run";
List<NameValuePair> commands = new ArrayList<>(1);
- String method = isChimeraX() ? "GET" : "POST";
+ String method = getHttpRequestMethod();
if ("GET".equals(method))
{
command = command.replace(" ", "+").replace("#", "%23")
}
/**
+ * 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.
*
public boolean isChimeraX()
{
- return isChimeraX;
- }
-
- public void setChimeraX(boolean b)
- {
- isChimeraX = b;
+ return false;
}
}