import jalview.api.AlignmentViewPanel;
import jalview.api.structures.JalviewStructureDisplayI;
-import jalview.bin.Cache;
-import jalview.datamodel.AlignmentI;
+import jalview.bin.Console;
+import jalview.bin.Jalview;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
import jalview.ext.jmol.JalviewJmolBinding;
import jalview.structure.StructureSelectionManager;
import jalview.util.MessageManager;
import jalview.util.Platform;
-import jalview.ws.dbsources.EBIAlfaFold;
-import jalview.ws.dbsources.Pdb;
-import jalview.ws.utils.UrlDownloadClient;
import javajs.util.BS;
public class AppJmolBinding extends JalviewJmolBinding
jalview.util.BrowserLauncher.openURL(url);
} catch (Exception e)
{
- Cache.log.error("Failed to launch Jmol-associated url " + url, e);
+ Console.error("Failed to launch Jmol-associated url " + url, e);
// TODO: 2.6 : warn user if browser was not configured.
}
}
{
jmolViewer.setJmolCallbackListener(this);
// BH comment: can't do this yet [for JS only, or generally?]
- return Platform.isJS() ? null
+ return Platform.isJS() || Jalview.isHeadlessMode() ? null
: new AppConsole(jmolViewer, consolePanel, buttonsToShow);
}
{
// todo - record which pdbids were successfully imported.
StringBuilder errormsgs = new StringBuilder();
-
+
List<String> files = new ArrayList<>();
String pdbid = "";
try
String[] filesInViewer = getStructureFiles();
// TODO: replace with reference fetching/transfer code (validate PDBentry
// as a DBRef?)
- Pdb pdbclient = new Pdb();
- EBIAlfaFold afclient = new EBIAlfaFold();
-
+
for (int pi = 0; pi < getPdbCount(); pi++)
{
- String file = getPdbEntry(pi).getFile();
+ PDBEntry strucEntry = getPdbEntry(pi);
+
+ String file = strucEntry.getFile();
if (file == null)
{
- // todo: extract block as method and pull up (also ChimeraViewFrame)
- // retrieve the pdb and store it locally
- AlignmentI pdbseq = null;
- PDBEntry strucEntry = getPdbEntry(pi);
pdbid = strucEntry.getId();
- long hdl = pdbid.hashCode() - System.currentTimeMillis();
- structureViewer.setProgressMessage(MessageManager
- .formatMessage("status.fetching_pdb", new String[]
- { pdbid }), hdl);
try
{
- if (afclient.isValidReference(pdbid))
- {
- pdbseq = afclient.getSequenceRecords(pdbid);
- } else {
- if (strucEntry.hasRetrievalUrl())
- {
- File tmpFile = File.createTempFile(pdbid, ".cif");
- String fromUrl = strucEntry.getRetrievalUrl();
- UrlDownloadClient.download(fromUrl, tmpFile);
-
- // may not need this check ?
- file = tmpFile.getAbsolutePath();
- if (file != null)
- {
- pdbseq = EBIAlfaFold.importDownloadedStructureFromUrl(fromUrl,tmpFile,pdbid,null,null,null);
- }
- } else {
- pdbseq = pdbclient.getSequenceRecords(pdbid);
- }
- }
+ file = structureViewer.fetchPdbFile(strucEntry);
} catch (OutOfMemoryError oomerror)
{
new OOMWarning("Retrieving PDB id " + pdbid, oomerror);
{
ex.printStackTrace();
errormsgs.append("'").append(pdbid).append("'");
- } finally
- {
- structureViewer.setProgressMessage(
- MessageManager.getString("label.state_completed"), hdl);
}
- if (pdbseq != null)
+ if (file != null)
{
- // just transfer the file name from the first sequence's first
- // PDBEntry
- file = new File(pdbseq.getSequenceAt(0).getAllPDBEntries()
- .elementAt(0).getFile()).getAbsolutePath();
- getPdbEntry(pi).setFile(file);
+ // success
files.add(file);
}
else