closeViewer(false);
}
});
- initJmol(loadStatus); // pdbentry, seq, JBPCHECK!
+ initJmol(loadStatus, null); // pdbentry, seq, JBPCHECK!
}
@Override
setSize(400, 400); // probably should be a configurable/dynamic default here
initMenus();
addingStructures = false;
- worker = new Thread(this);
- worker.start();
this.addInternalFrameListener(new InternalFrameAdapter()
{
}
});
+ worker = new Thread(this);
+ worker.start();
}
/**
}
- void initJmol(String command)
+ private void initJmol(String command, List<File> files)
{
jmb.setFinishedInit(false);
renderPanel = new RenderPanel();
if (command == null)
{
command = "";
+ } else if (files != null) {
+ jmb.cacheFiles(files);
}
jmb.evalStateCommand(command);
jmb.evalStateCommand("set hoverDelay=0.1");
_started = true;
try
{
- List<String> files = fetchPdbFiles();
+ List<File> files = fetchPdbFiles();
if (files.size() > 0)
{
showFilesInViewer(files);
* @param files
* list of absolute paths to structure files
*/
- void showFilesInViewer(List<String> files)
+ void showFilesInViewer(List<File> files)
{
long lastnotify = jmb.getLoadNotifiesHandled();
StringBuilder fileList = new StringBuilder();
- for (String s : files)
+ for (File f : files)
{
+ String s = f.getAbsolutePath();
fileList.append(SPACE).append(QUOTE)
.append(Platform.escapeString(s)).append(QUOTE);
}
{
try
{
- initJmol("load FILES " + filesString);
+ initJmol("load FILES " + filesString, files);
} catch (OutOfMemoryError oomerror)
{
new OOMWarning("When trying to open the Jmol viewer!", oomerror);
try
{
+ jmb.cacheFiles(files);
jmb.evalStateCommand(command);
} catch (OutOfMemoryError oomerror)
{
*
* @return
*/
- List<String> fetchPdbFiles()
+ List<File> fetchPdbFiles()
{
// todo - record which pdbids were successfully imported.
StringBuilder errormsgs = new StringBuilder();
- List<String> files = new ArrayList<>();
+ List<File> files = new ArrayList<>();
String pdbid = "";
try
{
Pdb pdbclient = new Pdb();
for (int pi = 0; pi < jmb.getPdbCount(); pi++)
{
- String file = jmb.getPdbEntry(pi).getFile();
+ File file = jmb.getPdbEntry(pi).getFileF();
if (file == null)
{
// todo: extract block as method and pull up (also ChimeraViewFrame)
// just transfer the file name from the first sequence's first
// PDBEntry
file = new File(pdbseq.getSequenceAt(0).getAllPDBEntries()
- .elementAt(0).getFile()).getAbsolutePath();
+ .elementAt(0).getFile());
jmb.getPdbEntry(pi).setFile(file);
files.add(file);
}
if (filesInViewer != null && filesInViewer.length > 0)
{
addingStructures = true; // already files loaded.
+ String filename = file.getAbsolutePath();
for (int c = 0; c < filesInViewer.length; c++)
{
- if (filesInViewer[c].equals(file))
+ if (filesInViewer[c].equals(filename))
{
file = null;
break;