From f55ab79ffe7987b4efa091a28a393019c69adfbe Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Fri, 26 Jun 2020 17:21:55 +0100 Subject: [PATCH] =?utf8?q?JAL-3518=20fix=20highlighting=20in=20Jalview=20for?= =?utf8?q?=20selections=20in=20ChimeraX=20-=20needed=20to=20thread=20off=20t?= =?utf8?q?he=20subsequent=20POST=20back=20to=20ChimeraX=20so=20ChimeraX=20ca?= =?utf8?q?n=20first=20hangup=20its=20GET=20to=20Jalview=E2=80=99s=20Rest=20A?= =?utf8?q?PI?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../ext/rbvi/chimera/JalviewChimeraBinding.java | 69 ++++++++++++-------- 1 file changed, 40 insertions(+), 29 deletions(-) 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(); } /** -- 1.7.10.2