X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fjmol%2FJalviewJmolBinding.java;h=88322785ee9fbce68679087362a8bbfcaa40fe6c;hb=9d6a8dc7426c9a27fd9cd702805c1797e7f78c3f;hp=bbb75cfae492b512118388df13c24de5a6f7795b;hpb=0defe3aeb990d75fd672e882edbe9e8156b34414;p=jalview.git diff --git a/src/jalview/ext/jmol/JalviewJmolBinding.java b/src/jalview/ext/jmol/JalviewJmolBinding.java index bbb75cf..8832278 100644 --- a/src/jalview/ext/jmol/JalviewJmolBinding.java +++ b/src/jalview/ext/jmol/JalviewJmolBinding.java @@ -52,8 +52,6 @@ import java.util.List; import java.util.Map; import java.util.Vector; -import javax.swing.SwingUtilities; - import org.jmol.adapter.smarter.SmarterJmolAdapter; import org.jmol.api.JmolAppConsoleInterface; import org.jmol.api.JmolSelectionListener; @@ -480,6 +478,7 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel lastCommand = command; } + Thread colourby = null; /** * Sends a set of colour commands to the structure viewer * @@ -489,7 +488,12 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel protected void colourBySequence( final StructureMappingcommandSet[] colourBySequenceCommands) { - SwingUtilities.invokeLater(new Runnable() + if (colourby != null) + { + colourby.interrupt(); + colourby = null; + } + colourby = new Thread(new Runnable() { @Override public void run() @@ -503,6 +507,7 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel } } }); + colourby.start(); } /** @@ -871,19 +876,30 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel try { // recover PDB filename for the model hovered over. - int _mp = _modelFileNameMap.length - 1, - mnumber = new Integer(mdlId).intValue() - 1; - while (mnumber < _modelFileNameMap[_mp]) + int mnumber = new Integer(mdlId).intValue() - 1; + if (_modelFileNameMap != null) { - _mp--; + int _mp = _modelFileNameMap.length - 1; + + while (mnumber < _modelFileNameMap[_mp]) + { + _mp--; + } + pdbfilename = modelFileNames[_mp]; } - pdbfilename = modelFileNames[_mp]; - if (pdbfilename == null) + else { - pdbfilename = new File(viewer.ms.getModelFileName(mnumber)) - .getAbsolutePath(); - } + if (mnumber >= 0 && mnumber < modelFileNames.length) + { + pdbfilename = modelFileNames[mnumber]; + } + if (pdbfilename == null) + { + pdbfilename = new File(viewer.ms.getModelFileName(mnumber)) + .getAbsolutePath(); + } + } } catch (Exception e) { }