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;
*/
private int _modelFileNameMap[];
+ // ////////////////////////////////
+ // /StructureListener
+ // @Override
+ public synchronized String[] getPdbFilex()
+ {
+ if (viewer == null)
+ {
+ return new String[0];
+ }
+ if (modelFileNames == null)
+ {
+ List<String> 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()
{
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;