X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureSettings.java;h=ea492e245bc134a1ca76a15210afe2b3d389ec80;hb=a8d30fa38a5d3e9cccf08aa446ca8ab00469bfd4;hp=de61be3a87b23d907cef9e0d19d361a2939c9c37;hpb=40ecea964afaaf404465d75873ec915b901117a3;p=jalview.git diff --git a/src/jalview/gui/FeatureSettings.java b/src/jalview/gui/FeatureSettings.java index de61be3..ea492e2 100755 --- a/src/jalview/gui/FeatureSettings.java +++ b/src/jalview/gui/FeatureSettings.java @@ -752,23 +752,32 @@ public class FeatureSettings 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]; @@ -777,15 +786,64 @@ public class FeatureSettings 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;i0) + { + 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) { @@ -800,12 +858,16 @@ public class FeatureSettings 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" @@ -813,7 +875,6 @@ public class FeatureSettings "No Sources Selected", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE); - complete(); } ///////////////////////////////////////////////////////////////////////// @@ -929,7 +990,6 @@ public class FeatureSettings return this; } } - } class ColorEditor