*/
package jalview.gui;
+import java.util.Locale;
+
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.io.File;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.swing.event.InternalFrameEvent;
import jalview.api.AlignmentViewPanel;
-import jalview.bin.Cache;
-import jalview.datamodel.AlignmentI;
+import jalview.bin.Console;
import jalview.datamodel.PDBEntry;
import jalview.datamodel.SequenceI;
import jalview.datamodel.StructureViewerModel;
import jalview.datamodel.StructureViewerModel.StructureData;
+import jalview.fts.service.alphafold.AlphafoldRestClient;
import jalview.gui.ImageExporter.ImageWriterI;
import jalview.gui.StructureViewer.ViewerType;
import jalview.structure.StructureCommand;
import jalview.util.ImageMaker;
import jalview.util.MessageManager;
import jalview.util.Platform;
-import jalview.ws.dbsources.Pdb;
public class AppJmol extends StructureViewerBase
{
}
private void openNewJmol(AlignmentPanel ap, boolean alignAdded,
- PDBEntry[] pdbentrys,
- SequenceI[][] seqs)
+ PDBEntry[] pdbentrys, SequenceI[][] seqs)
{
setProgressIndicator(ap.alignFrame);
jmb = new AppJmolBinding(this, ap.getStructureSelectionManager(),
openNewJmol(ap, alignAdded, pe, seqs);
}
-
void initJmol(String command)
{
jmb.setFinishedInit(false);
_started = true;
try
{
- List<String> files = fetchPdbFiles();
+ List<String> files = jmb.fetchPdbFiles(this);
if (files.size() > 0)
{
showFilesInViewer(files);
} catch (OutOfMemoryError oomerror)
{
new OOMWarning("When trying to open the Jmol viewer!", oomerror);
- Cache.log.debug("File locations are " + filesString);
+ Console.debug("File locations are " + filesString);
} catch (Exception ex)
{
- Cache.log.error("Couldn't open Jmol viewer!", ex);
+ Console.error("Couldn't open Jmol viewer!", ex);
ex.printStackTrace();
return;
}
{
new OOMWarning("When trying to add structures to the Jmol viewer!",
oomerror);
- Cache.log.debug("File locations are " + filesString);
+ Console.debug("File locations are " + filesString);
return;
} catch (Exception ex)
{
- Cache.log.error("Couldn't add files to Jmol viewer!", ex);
+ Console.error("Couldn't add files to Jmol viewer!", ex);
ex.printStackTrace();
return;
}
{
try
{
- Cache.log.debug("Waiting around for jmb notify.");
+ Console.debug("Waiting around for jmb notify.");
waitTotal += waitFor;
// Thread.sleep() throws an exception in JS
}
/**
- * Retrieves and saves as file any modelled PDB entries for which we do not
- * already have a file saved. Returns a list of absolute paths to structure
- * files which were either retrieved, or already stored but not modelled in
- * the structure viewer (i.e. files to add to the viewer display).
- *
- * @return
- */
- List<String> fetchPdbFiles()
- {
- // todo - record which pdbids were successfully imported.
- StringBuilder errormsgs = new StringBuilder();
-
- List<String> files = new ArrayList<>();
- String pdbid = "";
- try
- {
- String[] filesInViewer = jmb.getStructureFiles();
- // TODO: replace with reference fetching/transfer code (validate PDBentry
- // as a DBRef?)
- Pdb pdbclient = new Pdb();
- for (int pi = 0; pi < jmb.getPdbCount(); pi++)
- {
- String file = jmb.getPdbEntry(pi).getFile();
- if (file == null)
- {
- // todo: extract block as method and pull up (also ChimeraViewFrame)
- // retrieve the pdb and store it locally
- AlignmentI pdbseq = null;
- pdbid = jmb.getPdbEntry(pi).getId();
- long hdl = pdbid.hashCode() - System.currentTimeMillis();
- setProgressMessage(MessageManager
- .formatMessage("status.fetching_pdb", new String[]
- { pdbid }), hdl);
- try
- {
- pdbseq = pdbclient.getSequenceRecords(pdbid);
- } catch (OutOfMemoryError oomerror)
- {
- new OOMWarning("Retrieving PDB id " + pdbid, oomerror);
- } catch (Exception ex)
- {
- ex.printStackTrace();
- errormsgs.append("'").append(pdbid).append("'");
- } finally
- {
- setProgressMessage(
- MessageManager.getString("label.state_completed"), hdl);
- }
- if (pdbseq != null)
- {
- // just transfer the file name from the first sequence's first
- // PDBEntry
- file = new File(pdbseq.getSequenceAt(0).getAllPDBEntries()
- .elementAt(0).getFile()).getAbsolutePath();
- jmb.getPdbEntry(pi).setFile(file);
- files.add(file);
- }
- else
- {
- errormsgs.append("'").append(pdbid).append("' ");
- }
- }
- else
- {
- if (filesInViewer != null && filesInViewer.length > 0)
- {
- addingStructures = true; // already files loaded.
- for (int c = 0; c < filesInViewer.length; c++)
- {
- if (Platform.pathEquals(filesInViewer[c], file))
- {
- file = null;
- break;
- }
- }
- }
- if (file != null)
- {
- files.add(file);
- }
- }
- }
- } catch (OutOfMemoryError oomerror)
- {
- new OOMWarning("Retrieving PDB files: " + pdbid, oomerror);
- } catch (Exception ex)
- {
- ex.printStackTrace();
- errormsgs.append("When retrieving pdbfiles : current was: '")
- .append(pdbid).append("'");
- }
- if (errormsgs.length() > 0)
- {
- JvOptionPane.showInternalMessageDialog(Desktop.desktop,
- MessageManager.formatMessage(
- "label.pdb_entries_couldnt_be_retrieved", new String[]
- { errormsgs.toString() }),
- MessageManager.getString("label.couldnt_load_file"),
- JvOptionPane.ERROR_MESSAGE);
- }
- return files;
- }
-
- /**
* Outputs the Jmol viewer image as an image file, after prompting the user to
* choose a file and (for EPS) choice of Text or Lineart character rendering
* (unless a preference for this is set)
jmb.jmolViewer.renderScreenImage(g, width, height);
}
};
- String view = MessageManager.getString("action.view").toLowerCase();
+ String view = MessageManager.getString("action.view")
+ .toLowerCase(Locale.ROOT);
ImageExporter exporter = new ImageExporter(writer,
getProgressIndicator(), type, getTitle());
exporter.doExport(null, this, width, height, view);
try
{
BrowserLauncher // BH 2018
- .openURL("http://wiki.jmol.org");//http://jmol.sourceforge.net/docs/JmolUserGuide/");
+ .openURL("http://wiki.jmol.org");// http://jmol.sourceforge.net/docs/JmolUserGuide/");
} catch (Exception ex)
{
System.err.println("Show Jmol help failed with: " + ex.getMessage());
}
}
}
- else if (jmb == null || jmb.jmolViewer == null || !jmb.isFinishedInit())
+ else if (jmb == null || jmb.jmolViewer == null
+ || !jmb.isFinishedInit())
{
g.setColor(Color.black);
g.fillRect(0, 0, currentSize.width, currentSize.height);