X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fext%2Fedu%2Fucsf%2Frbvi%2Fstrucviz2%2FChimeraManager.java;h=736e45965d3d56cfe4d9a0d6e3f39e549655f182;hb=36c3f2b9e9081149762bac7b69b5890f34eb53a9;hp=2e5dbeb19d4fb9bfdce8d648918f5d20f78a9fa1;hpb=42f7bb953f9562f9ff80f0d3c833a0b364f399a2;p=jalview.git diff --git a/src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java b/src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java index 2e5dbeb..736e459 100644 --- a/src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java +++ b/src/ext/edu/ucsf/rbvi/strucviz2/ChimeraManager.java @@ -1,3 +1,35 @@ +/* vim: set ts=2: */ +/** + * Copyright (c) 2006 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions, and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. Redistributions must acknowledge that this software was + * originally developed by the UCSF Computer Graphics Laboratory + * under support by the NIH National Center for Research Resources, + * grant P41-RR01081. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ package ext.edu.ucsf.rbvi.strucviz2; import jalview.ws.HttpClientUtils; @@ -27,6 +59,10 @@ import ext.edu.ucsf.rbvi.strucviz2.port.ListenerThreads; */ public class ChimeraManager { + private static final int REST_REPLY_TIMEOUT_MS = 15000; + + private static final int CONNECTION_TIMEOUT_MS = 100; + private static final boolean debug = false; private int chimeraRestPort; @@ -178,6 +214,7 @@ public class ChimeraManager { logger.info("chimera open " + modelPath); // stopListening(); + List modelList = getModelList(); List response = null; // TODO: [Optional] Handle modbase models if (type == ModelType.MODBASE_MODEL) @@ -197,16 +234,24 @@ public class ChimeraManager logger.warn("Could not open " + modelPath); return null; } - List chimeraModels = getModelList(); + + // patch for Jalview - set model name in Chimera + // TODO: find a variant that works for sub-models + for (ChimeraModel newModel : getModelList()) + { + if (!modelList.contains(newModel)) + { + newModel.setModelName(modelName); + sendChimeraCommand( + "setattr M name " + modelName + " #" + + newModel.getModelNumber(), false); + modelList.add(newModel); + } + } + // assign color and residues to open models - for (ChimeraModel chimeraModel : chimeraModels) - { - // // patch for Jalview - set model name in Chimera - // // TODO: find a variant that works for sub-models - chimeraModel.setModelName(modelName); - sendChimeraCommand( - "setattr M name " + modelName + " #" - + chimeraModel.getModelNumber(), false); + for (ChimeraModel chimeraModel : modelList) + { // get model color Color modelColor = getModelColor(chimeraModel); if (modelColor != null) @@ -227,7 +272,7 @@ public class ChimeraManager sendChimeraCommand("focus", false); // startListening(); // see ChimeraListener - return chimeraModels; + return modelList; } /** @@ -720,7 +765,7 @@ public class ChimeraManager */ public List sendChimeraCommand(String command, boolean reply) { - // System.out.println("chimeradebug>> " + command); + // System.out.println("chimeradebug>> " + command); if (!isChimeraLaunched() || command == null || "".equals(command.trim())) { @@ -773,8 +818,8 @@ public class ChimeraManager BufferedReader response = null; try { - response = HttpClientUtils - .doHttpUrlPost(restUrl, commands, 100, 5000); + response = HttpClientUtils.doHttpUrlPost(restUrl, commands, CONNECTION_TIMEOUT_MS, + REST_REPLY_TIMEOUT_MS); String line = ""; while ((line = response.readLine()) != null) {