X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fjmol%2FJalviewJmolBinding.java;fp=src%2Fjalview%2Fext%2Fjmol%2FJalviewJmolBinding.java;h=fa31fd90bb4cbf8cbfccf8c43839abdb0abe50d7;hb=a83adb45bdf9554e270921b4baad94defd314b36;hp=4698e4d5e42d87f54bf3d713a1bcb60eca802c2f;hpb=d4ec118f86b5c9dee801e743c46aaacc7bb521d1;p=jalview.git diff --git a/src/jalview/ext/jmol/JalviewJmolBinding.java b/src/jalview/ext/jmol/JalviewJmolBinding.java index 4698e4d..fa31fd9 100644 --- a/src/jalview/ext/jmol/JalviewJmolBinding.java +++ b/src/jalview/ext/jmol/JalviewJmolBinding.java @@ -44,6 +44,7 @@ import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.io.File; import java.net.URL; +import java.security.AccessControlException; import java.util.ArrayList; import java.util.BitSet; import java.util.Hashtable; @@ -618,6 +619,74 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel */ private int _modelFileNameMap[]; + // //////////////////////////////// + // /StructureListener + // @Override + public synchronized String[] getPdbFilex() + { + if (viewer == null) + { + return new String[0]; + } + if (modelFileNames == null) + { + List mset = new ArrayList<>(); + _modelFileNameMap = new int[viewer.ms.mc]; + String m = viewer.ms.getModelFileName(0); + if (m != null) + { + String filePath = m; + try + { + filePath = new File(m).getAbsolutePath(); + } catch (AccessControlException x) + { + // usually not allowed to do this in applet + System.err.println( + "jmolBinding: Using local file string from Jmol: " + m); + } + if (filePath.indexOf("/file:") != -1) + { + // applet path with docroot - discard as format won't match pdbfile + filePath = m; + } + mset.add(filePath); + _modelFileNameMap[0] = 0; // filename index for first model is always 0. + } + int j = 1; + for (int i = 1; i < viewer.ms.mc; i++) + { + m = viewer.ms.getModelFileName(i); + String filePath = m; + if (m != null) + { + try + { + filePath = new File(m).getAbsolutePath(); + } catch (AccessControlException x) + { + // usually not allowed to do this in applet, so keep raw handle + // System.err.println("jmolBinding: Using local file string from + // Jmol: "+m); + } + } + + /* + * add this model unless it is read from a structure file we have + * already seen (example: 2MJW is an NMR structure with 10 models) + */ + if (!mset.contains(filePath)) + { + mset.add(filePath); + _modelFileNameMap[j] = i; // record the model index for the filename + j++; + } + } + modelFileNames = mset.toArray(new String[mset.size()]); + } + return modelFileNames; + } + @Override public synchronized String[] getStructureFiles() { @@ -812,7 +881,7 @@ public abstract class JalviewJmolBinding extends AAStructureBindingModel try { // recover PDB filename for the model hovered over. - int mnumber = Integer.valueOf(mdlId).intValue() - 1; + int mnumber = new Integer(mdlId).intValue() - 1; if (_modelFileNameMap != null) { int _mp = _modelFileNameMap.length - 1;