From: Jim Procter Date: Fri, 26 Jun 2020 16:21:55 +0000 (+0100) Subject: JAL-3518 fix highlighting in Jalview for selections in ChimeraX X-Git-Tag: Develop-2_11_2_0-d20201215~24^2~36^2~1 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=f55ab79ffe7987b4efa091a28a393019c69adfbe;p=jalview.git JAL-3518 fix highlighting in Jalview for selections in ChimeraX - needed to thread off the subsequent POST back to ChimeraX so ChimeraX can first hangup its GET to Jalview’s Rest API --- diff --git a/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java b/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java index 16aca58..549636b 100644 --- a/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java +++ b/src/jalview/ext/rbvi/chimera/JalviewChimeraBinding.java @@ -444,40 +444,51 @@ public abstract class JalviewChimeraBinding extends AAStructureBindingModel * Ask Chimera for its current selection */ StructureCommandI command = getCommandGenerator().getSelectedResidues(); - List chimeraReply = executeCommand(command, true); - List selectedResidues = new ArrayList<>(); - if (chimeraReply != null) + + Runnable action = new Runnable() { - /* - * expect 0, 1 or more lines of the format either - * Chimera: - * residue id #0:43.A type GLY - * ChimeraX: - * residue id /A:89 name THR index 88 - * We are only interested in the atomspec (third token of the reply) - */ - for (String inputLine : chimeraReply) + @Override + public void run() { - String[] inputLineParts = inputLine.split("\\s+"); - if (inputLineParts.length >= 5) + List chimeraReply = executeCommand(command, true); + + List selectedResidues = new ArrayList<>(); + if (chimeraReply != null) { - selectedResidues.add(inputLineParts[2]); + /* + * expect 0, 1 or more lines of the format either + * Chimera: + * residue id #0:43.A type GLY + * ChimeraX: + * residue id /A:89 name THR index 88 + * We are only interested in the atomspec (third token of the reply) + */ + for (String inputLine : chimeraReply) + { + String[] inputLineParts = inputLine.split("\\s+"); + if (inputLineParts.length >= 5) + { + selectedResidues.add(inputLineParts[2]); + } + } } - } - } - - /* - * Parse model number, residue and chain for each selected position, - * formatted as #0:123.A or #1.2:87.B (#model.submodel:residue.chain) - */ - List atomSpecs = convertStructureResiduesToAlignment( - selectedResidues); - /* - * Broadcast the selection (which may be empty, if the user just cleared all - * selections) - */ - getSsm().mouseOverStructure(atomSpecs); + /* + * Parse model number, residue and chain for each selected position, + * formatted as #0:123.A or #1.2:87.B (#model.submodel:residue.chain) + */ + List atomSpecs = convertStructureResiduesToAlignment( + selectedResidues); + + /* + * Broadcast the selection (which may be empty, if the user just cleared all + * selections) + */ + getSsm().mouseOverStructure(atomSpecs); + + } + }; + new Thread(action).start(); } /**