fetchDAS.setEnabled(false);
cancelDAS.setEnabled(true);
Vector selectedSources = dassourceBrowser.getSelectedSources();
-
+ doDasFeatureFetch(selectedSources, true, true);
+ }
+ /**
+ * get the features from selectedSources for all or the current selection
+ * @param selectedSources
+ * @param checkDbRefs
+ * @param promptFetchDbRefs
+ */
+ private void doDasFeatureFetch(Vector selectedSources, boolean checkDbRefs, boolean promptFetchDbRefs)
+ {
SequenceI[] dataset, seqs;
int iSize;
-
- if (af.getViewport().getSelectionGroup() != null
- && af.getViewport().getSelectionGroup().getSize() > 0)
+ AlignViewport vp = af.getViewport();
+ if (vp.getSelectionGroup() != null
+ && vp.getSelectionGroup().getSize() > 0)
{
- iSize = af.getViewport().getSelectionGroup().getSize();
+ iSize = vp.getSelectionGroup().getSize();
dataset = new SequenceI[iSize];
- seqs = af.getViewport().getSelectionGroup().
+ seqs = vp.getSelectionGroup().
getSequencesInOrder(
- af.getViewport().getAlignment());
+ vp.getAlignment());
}
else
{
- iSize = af.getViewport().getAlignment().getHeight();
- seqs = af.getViewport().getAlignment().getSequencesArray();
+ iSize = vp.getAlignment().getHeight();
+ seqs = vp.getAlignment().getSequencesArray();
}
dataset = new SequenceI[iSize];
dataset[i] = seqs[i].getDatasetSequence();
}
+ cancelDAS.setEnabled(true);
dasFeatureFetcher =
new jalview.ws.DasSequenceFeatureFetcher(
dataset,
this,
- selectedSources);
- cancelDAS.setEnabled(true);
+ selectedSources, checkDbRefs, promptFetchDbRefs);
af.getViewport().setShowSequenceFeatures(true);
af.showSeqFeatures.setSelected(true);
}
+ /**
+ * properly initialise DAS fetcher and then initiate a new thread to fetch features from the named sources (rather than any turned on by default)
+ * @param sources
+ */
+ public void fetchDasFeatures(Vector sources)
+ {
+ Thread thr = new Thread(new Runnable() {
+ public void run() {
+ // this actually initialises the das source list
+ dassourceBrowser.paintComponent(null); // yuk
+ }
+ });
+ thr.start();
+ while (dassourceBrowser.loadingDasSources || dassourceBrowser.dasSources==null)
+ {
+ try { Thread.sleep(10); } catch (Exception e) {};
+ }
+ Vector resolved = new Vector();
+ if (sources!=null)
+ {
+ for (int i=0;i<dassourceBrowser.dasSources.length; i++)
+ {
+ if (sources.contains(dassourceBrowser.dasSources[i].getNickname()))
+ {
+ if (!resolved.contains(dassourceBrowser.dasSources[i]))
+ {
+ resolved.addElement(dassourceBrowser.dasSources[i]);
+ }
+ }
+ }
+ }
+ if (resolved.size()==0)
+ {
+ resolved = dassourceBrowser.getSelectedSources();
+ }
+ if (resolved.size()>0)
+ {
+ final Vector dassources = resolved;
+ SwingUtilities.invokeLater(new Runnable() {
+
+ public void run()
+ {
+ fetchDAS.setEnabled(false);
+ cancelDAS.setEnabled(true);
+ doDasFeatureFetch(dassources, true, false);
+
+ }});
+ }
+ }
public void saveDAS_actionPerformed(ActionEvent e)
{
public void cancelDAS_actionPerformed(ActionEvent e)
{
- dasFeatureFetcher.cancel();
+ if (dasFeatureFetcher!=null)
+ {
+ dasFeatureFetcher.cancel();
+ }
fetchDAS.setEnabled(true);
cancelDAS.setEnabled(false);
}
public void noDasSourceActive()
{
+ complete();
JOptionPane.showInternalConfirmDialog(Desktop.desktop,
"No das sources were selected.\n"
+ "Please select some sources and\n"
"No Sources Selected",
JOptionPane.DEFAULT_OPTION,
JOptionPane.INFORMATION_MESSAGE);
- complete();
}
/////////////////////////////////////////////////////////////////////////
return this;
}
}
-
}
class ColorEditor