X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fjmol%2FJalviewJmolBinding.java;h=7f949c78c97048588bab395d73697bb6d6da7bfd;hb=6909336c10f55ddf2813b983b0eb0fe79488c971;hp=90c28c736f44f961b1af882029156db708cf34f3;hpb=88ba474b631ee8844b2212cf0ef1bff6a97ec7e1;p=jalview.git diff --git a/src/jalview/ext/jmol/JalviewJmolBinding.java b/src/jalview/ext/jmol/JalviewJmolBinding.java index 90c28c7..7f949c7 100644 --- a/src/jalview/ext/jmol/JalviewJmolBinding.java +++ b/src/jalview/ext/jmol/JalviewJmolBinding.java @@ -357,7 +357,7 @@ public abstract class JalviewJmolBinding implements StructureListener, for (int pdbfnum = 0; pdbfnum < files.length; pdbfnum++) { StructureMapping[] mapping = ssm.getMapping(files[pdbfnum]); - + // RACE CONDITION - getMapping only returns Jmol loaded filenames once Jmol callback has completed. if (mapping == null || mapping.length < 1) continue; @@ -690,10 +690,17 @@ public abstract class JalviewJmolBinding implements StructureListener, String mset[] = new String[viewer.getModelCount()]; _modelFileNameMap = new int[mset.length]; int j = 1; - mset[0] = viewer.getModelFileName(0); + String m=viewer.getModelFileName(0); + if (m!=null) + { + mset[0] = new File(m).getAbsolutePath(); + } for (int i = 1; i < mset.length; i++) { - mset[j] = viewer.getModelFileName(i); + m=viewer.getModelFileName(i); + if (m!=null) { + mset[j] = new File(m).getAbsolutePath(); + } _modelFileNameMap[j] = i; // record the model index for the filename // skip any additional models in the same file (NMR structures) if ((mset[j] == null ? mset[j] != mset[j - 1] @@ -869,8 +876,17 @@ public abstract class JalviewJmolBinding implements StructureListener, try { // recover PDB filename for the model hovered over. - pdbfilename = viewer - .getModelFileName(new Integer(mdlId).intValue() - 1); + int _mp=_modelFileNameMap.length-1, + mnumber=new Integer(mdlId).intValue() - 1; + while(mnumber<_modelFileNameMap[_mp]) + { + _mp--; + } + pdbfilename = modelFileNames[_mp]; + if (pdbfilename==null) {pdbfilename=new File(viewer + .getModelFileName(mnumber)).getAbsolutePath(); + } + } catch (Exception e) { } @@ -1130,7 +1146,8 @@ public abstract class JalviewJmolBinding implements StructureListener, } else { - if (matches = pdbentry[pe].getFile().equals(fileName)) + File fl; + if (matches = (fl=new File(pdbentry[pe].getFile())).equals(new File(fileName))) { foundEntry = true; // TODO: Jmol can in principle retrieve from CLASSLOADER but @@ -1141,7 +1158,6 @@ public abstract class JalviewJmolBinding implements StructureListener, String protocol = AppletFormatAdapter.URL; try { - File fl = new java.io.File(pdbentry[pe].getFile()); if (fl.exists()) { protocol = AppletFormatAdapter.FILE; @@ -1151,9 +1167,10 @@ public abstract class JalviewJmolBinding implements StructureListener, } catch (Error e) { } - ; + //Explicitly map to the filename used by Jmol ; pdb = ssm.setMapping(sequence[pe], chains[pe], - pdbentry[pe].getFile(), protocol); + fileName, protocol); + //pdbentry[pe].getFile(), protocol); } } @@ -1164,7 +1181,7 @@ public abstract class JalviewJmolBinding implements StructureListener, { String chid = new String(pdb.id + ":" + ((MCview.PDBChain) pdb.chains.elementAt(i)).id); - chainFile.put(chid, pdbentry[pe].getFile()); + chainFile.put(chid, fileName); chainNames.addElement(chid); } notifyLoaded = true;