+ {
+ // probably CLASSLOADER based datasource..
+ // Try and get a reader on the datasource, and pass that to Jmol
+ try
+ {
+ java.io.Reader freader = null;
+ if (reader != null)
+ {
+ if (jalview.bin.JalviewLite.debug)
+ {
+ System.err
+ .println("AppletJmol:Trying to reuse existing PDBfile IO parser.");
+ }
+ // re-use the one we opened earlier
+ freader = reader.getReader();
+ }
+ if (freader == null)
+ {
+ if (jalview.bin.JalviewLite.debug)
+ {
+ System.err
+ .println("AppletJmol:Creating new PDBfile IO parser.");
+ }
+ FileParse fp = new FileParse(pdbentry.getFile(), protocol);
+ fp.mark();
+ // reader = new MCview.PDBfile(fp);
+ // could set ID, etc.
+ // if (!reader.isValid())
+ // {
+ // throw new Exception("Invalid datasource.
+ // "+reader.getWarningMessage());
+ // }
+ // fp.reset();
+ freader = fp.getReader();
+ }
+ if (freader == null)
+ {
+ throw new Exception(
+ "Invalid datasource. Could not obtain Reader.");
+ }
+ viewer.openReader(pdbentry.getFile(), pdbentry.getId(), freader);
+ } catch (Exception e)
+ {
+ // give up!
+ System.err.println("Couldn't access pdbentry id="
+ + pdbentry.getId() + " and file=" + pdbentry.getFile()
+ + " using protocol=" + protocol);
+ e.printStackTrace();
+ }
+ }