X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureChooser.java;h=cf5832220fb66fab7e302573e7f9d2bc279d2c32;hb=9db8c298fdcb298dc192871d45d57a60517b2add;hp=720dc9e0ab743ae03d89e02e3c5f8820c4045260;hpb=26a8bcef19885071a20e238d06c514404ecbc573;p=jalview.git diff --git a/src/jalview/gui/StructureChooser.java b/src/jalview/gui/StructureChooser.java index 720dc9e..cf58322 100644 --- a/src/jalview/gui/StructureChooser.java +++ b/src/jalview/gui/StructureChooser.java @@ -21,6 +21,7 @@ package jalview.gui; +import jalview.bin.Jalview; import jalview.datamodel.DBRefEntry; import jalview.datamodel.DBRefSource; import jalview.datamodel.PDBEntry; @@ -31,6 +32,7 @@ import jalview.structure.StructureSelectionManager; 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; @@ -55,7 +57,8 @@ import javax.swing.table.AbstractTableModel; * */ @SuppressWarnings("serial") -public class StructureChooser extends GStructureChooser +public class StructureChooser extends GStructureChooser implements + IProgressIndicator { private boolean structuresDiscovered = false; @@ -90,6 +93,11 @@ public class StructureChooser extends GStructureChooser */ public void init() { + if (!Jalview.isHeadlessMode()) + { + progressBar = new ProgressBar(this.statusPanel, this.statusBar); + } + Thread discoverPDBStructuresThread = new Thread(new Runnable() { @Override @@ -669,6 +677,15 @@ public class StructureChooser extends GStructureChooser @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(); @@ -701,8 +718,7 @@ public class StructureChooser extends GStructureChooser } 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) { @@ -725,8 +741,7 @@ public class StructureChooser extends GStructureChooser } 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) { @@ -748,8 +763,8 @@ public class StructureChooser extends GStructureChooser } 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) { @@ -764,26 +779,35 @@ public class StructureChooser extends GStructureChooser 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 jalview.ws.DBRefFetcher(sequences, null, null, null, false) - .fetchDBRefs(true); - 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 seqsMap = new ArrayList(); @@ -792,14 +816,17 @@ public class StructureChooser extends GStructureChooser 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(); } /** @@ -1008,4 +1035,24 @@ public class StructureChooser extends GStructureChooser } } + + 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(); + } }