package jalview.gui;
+import jalview.bin.Jalview;
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.DBRefSource;
import jalview.datamodel.PDBEntry;
import jalview.util.MessageManager;
import jalview.ws.dbsources.PDBRestClient;
import jalview.ws.dbsources.PDBRestClient.PDBDocField;
+import jalview.ws.sifts.SiftsSettings;
import jalview.ws.uimodel.PDBRestRequest;
import jalview.ws.uimodel.PDBRestResponse;
import jalview.ws.uimodel.PDBRestResponse.PDBResponseSummary;
*
*/
@SuppressWarnings("serial")
-public class StructureChooser extends GStructureChooser
+public class StructureChooser extends GStructureChooser implements
+ IProgressIndicator
{
private boolean structuresDiscovered = false;
*/
public void init()
{
+ if (!Jalview.isHeadlessMode())
+ {
+ progressBar = new ProgressBar(this.statusPanel, this.statusBar);
+ }
+
Thread discoverPDBStructuresThread = new Thread(new Runnable()
{
@Override
@Override
public void ok_ActionPerformed()
{
+ final long progressSessionId = System.currentTimeMillis();
+ final StructureSelectionManager ssm = ap.getStructureSelectionManager();
+ ssm.setProgressIndicator(this);
+ ssm.setProgressSessionId(progressSessionId);
+ new Thread(new Runnable()
+ {
+ @Override
+ public void run()
+ {
FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
.getSelectedItem());
String currentView = selectedFilterOpt.getView();
}
SequenceI[] selectedSeqs = selectedSeqsToView
.toArray(new SequenceI[selectedSeqsToView.size()]);
- launchStructureViewer(ap.getStructureSelectionManager(),
- pdbEntriesToView, ap, selectedSeqs);
+ launchStructureViewer(ssm, pdbEntriesToView, ap, selectedSeqs);
}
else if (currentView == VIEWS_LOCAL_PDB)
{
}
SequenceI[] selectedSeqs = selectedSeqsToView
.toArray(new SequenceI[selectedSeqsToView.size()]);
- launchStructureViewer(ap.getStructureSelectionManager(),
- pdbEntriesToView, ap, selectedSeqs);
+ launchStructureViewer(ssm, pdbEntriesToView, ap, selectedSeqs);
}
else if (currentView == VIEWS_ENTER_ID)
{
}
PDBEntry[] pdbEntriesToView = new PDBEntry[] { pdbEntry };
- launchStructureViewer(ap.getStructureSelectionManager(),
- pdbEntriesToView, ap, new SequenceI[] { selectedSequence });
+ launchStructureViewer(ssm, pdbEntriesToView, ap,
+ new SequenceI[] { selectedSequence });
}
else if (currentView == VIEWS_FROM_FILE)
{
jalview.io.AppletFormatAdapter.FILE,
selectedSequence, true, Desktop.instance);
- launchStructureViewer(ap.getStructureSelectionManager(),
- new PDBEntry[] { fileEntry }, ap,
- new SequenceI[] { selectedSequence });
+ launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap,
+ new SequenceI[] { selectedSequence });
}
mainFrame.dispose();
+ }
+ }).start();
}
- private void launchStructureViewer(final StructureSelectionManager ssm,
+ private void launchStructureViewer(StructureSelectionManager ssm,
final PDBEntry[] pdbEntriesToView,
- final AlignmentPanel alignPanel, final SequenceI[] sequences)
+ final AlignmentPanel alignPanel, SequenceI[] sequences)
{
+ ssm.setProgressBar("Launching PDB structure viewer..");
final StructureViewer sViewer = new StructureViewer(ssm);
- new Thread(new Runnable()
+
+ if (SiftsSettings.isMapWithSifts())
{
- @Override
- public void run()
+ for (SequenceI seq : sequences)
{
+ if (seq.getSourceDBRef() == null)
+ {
+ ssm.setProgressBar(null);
+ ssm.setProgressBar("Fetching Database refs..");
+ new jalview.ws.DBRefFetcher(sequences, null, null, null, false)
+ .fetchDBRefs(true);
+ break;
+ }
+ }
+ }
if (pdbEntriesToView.length > 1)
{
ArrayList<SequenceI[]> seqsMap = new ArrayList<SequenceI[]>();
for (SequenceI seq : sequences)
{
- new jalview.ws.DBRefFetcher(new SequenceI[] { seq }, null,
- null, null, false).fetchDBRefs(true);
seqsMap.add(new SequenceI[] { seq });
}
SequenceI[][] collatedSeqs = seqsMap.toArray(new SequenceI[0][0]);
+ ssm.setProgressBar(null);
+ ssm.setProgressBar("Fetching PDB Structures for selected entries..");
sViewer.viewStructures(pdbEntriesToView, collatedSeqs, alignPanel);
}
else
{
+ ssm.setProgressBar(null);
+ ssm.setProgressBar("Fetching PDB Structure for "
+ + pdbEntriesToView[0].getId());
sViewer.viewStructures(pdbEntriesToView[0], sequences, alignPanel);
}
- }
- }).start();
}
/**
}
}
+
+ private IProgressIndicator progressBar;
+
+ @Override
+ public void setProgressBar(String message, long id)
+ {
+ progressBar.setProgressBar(message, id);
+ }
+
+ @Override
+ public void registerHandler(long id, IProgressIndicatorHandler handler)
+ {
+ progressBar.registerHandler(id, handler);
+ }
+
+ @Override
+ public boolean operationInProgress()
+ {
+ return progressBar.operationInProgress();
+ }
}