import jalview.schemes.ColourSchemes;
import jalview.structure.StructureMapping;
import jalview.structures.models.AAStructureBindingModel;
+import jalview.util.BrowserLauncher;
import jalview.util.MessageManager;
+import jalview.ws.dbsources.EBIAlfaFold;
import jalview.ws.dbsources.Pdb;
+import jalview.ws.utils.UrlDownloadClient;
/**
* Base class with common functionality for JMol, Chimera or other structure
{
alignAddedStructures = alignAdded;
}
+
+ /**
+ * called by the binding model to indicate when adding structures is happening or has been completed
+ * @param addingStructures
+ */
+ public synchronized void setAddingStructures(boolean addingStructures)
+ {
+ this.addingStructures = addingStructures;
+ }
/**
*
_alignwith.add(ap);
}
;
+ // TODO: refactor to allow concrete classes to register buttons for adding
+ // here
+ // currently have to override to add buttons back in after they are cleared
+ // in this loop
for (Component c : viewerActionMenu.getMenuComponents())
{
if (c != alignStructs)
}
else
{
- // update the Chimera display now.
+ // update the viewer display now.
seqColour_actionPerformed();
}
}
}
});
+ viewerActionMenu.setText(getViewerName());
+ helpItem.setText(MessageManager.formatMessage("label.viewer_help",
+ getViewerName()));
+
buildColourMenu();
}
* enable 'Superpose with' if more than one mapped structure
*/
viewSelectionMenu.setEnabled(false);
- if (getBinding().getStructureFiles().length > 1
+ if (getBinding().getMappedStructureCount() > 1
&& getBinding().getSequence().length > 1)
{
viewSelectionMenu.setEnabled(true);
progressBar = pi;
}
- protected void setProgressMessage(String message, long id)
+ public void setProgressMessage(String message, long id)
{
if (progressBar != null)
{
{
String filePath = null;
Pdb pdbclient = new Pdb();
+ EBIAlfaFold afclient = new EBIAlfaFold();
AlignmentI pdbseq = null;
String pdbid = processingEntry.getId();
long handle = System.currentTimeMillis()
// { pdbid }));
try
{
- pdbseq = pdbclient.getSequenceRecords(pdbid);
+ if (afclient.isValidReference(pdbid))
+ {
+ pdbseq = afclient.getSequenceRecords(pdbid);
+ } else {
+ if (processingEntry.hasRetrievalUrl())
+ {
+ // retrieve from URL to new local tmpfile
+ File tmpFile = File.createTempFile(pdbid,
+ "." + (PDBEntry.Type.MMCIF.toString().equals(
+ processingEntry.getType().toString()) ? "cif"
+ : "pdb"));
+ String fromUrl = processingEntry.getRetrievalUrl();
+ UrlDownloadClient.download(fromUrl, tmpFile);
+
+ // may not need this check ?
+ String file = tmpFile.getAbsolutePath();
+ if (file != null)
+ {
+ pdbseq = EBIAlfaFold.importDownloadedStructureFromUrl(fromUrl,tmpFile,pdbid,null,null,null);
+ }
+ } else {
+ pdbseq = pdbclient.getSequenceRecords(pdbid);
+ }
+ }
} catch (Exception e)
{
System.err.println(
}
forceClose = confirm == JvOptionPane.YES_OPTION;
}
+ }
+ if (binding != null)
+ {
binding.closeViewer(forceClose);
}
setAlignmentPanel(null);
dispose();
}
+ @Override
+ public void showHelp_actionPerformed()
+ {
+ try
+ {
+ String url = getBinding().getHelpURL();
+ if (url != null)
+ {
+ BrowserLauncher.openURL(url);
+ }
+ } catch (IOException ex)
+ {
+ System.err
+ .println("Show " + getViewerName() + " failed with: "
+ + ex.getMessage());
+ }
+ }
+ @Override
+ public boolean hasViewerActionsMenu()
+ {
+ return viewerActionMenu != null && viewerActionMenu.isEnabled()
+ && viewerActionMenu.getItemCount() > 0
+ && viewerActionMenu.isVisible();
+ }
}