- }*/
- database.addItem("Uniprot");
- database.addItem("EMBL");
- database.addItem("EMBLCDS");
- database.addItem("PDB");
- database.addItem("PFAM");
+ // initting happening on another thread - so wait around to see if it
+ // finishes.
+ while (_initingFetcher && initingThread != null
+ && initingThread.isAlive())
+ {
+ try
+ {
+ Thread.sleep(10);
+ } catch (Exception e)
+ {
+ }
+ ;
+ }
+ if (guiWindow != null)
+ {
+ guiWindow
+ .setProgressBar(
+ MessageManager
+ .getString("status.waiting_sequence_database_fetchers_init"),
+ Thread.currentThread().hashCode());
+ }
+ }
+ if (sfetch == null
+ || dasRegistry != Cache.getDasSourceRegistry()
+ || lastDasSourceRegistry != (Cache.getDasSourceRegistry()
+ .getDasRegistryURL() + Cache
+ .getDasSourceRegistry().getLocalSourceString())
+ .hashCode())
+ {
+ _initingFetcher = true;
+ initingThread = Thread.currentThread();
+ /**
+ * give a visual indication that sequence fetcher construction is occuring
+ */
+ if (guiWindow != null)
+ {
+ guiWindow.setProgressBar(MessageManager
+ .getString("status.init_sequence_database_fetchers"),
+ Thread.currentThread().hashCode());
+ }
+ dasRegistry = Cache.getDasSourceRegistry();
+ dasRegistry.refreshSources();
+
+ jalview.ws.SequenceFetcher sf = new jalview.ws.SequenceFetcher();
+ if (guiWindow != null)
+ {
+ guiWindow.setProgressBar(null, Thread.currentThread().hashCode());
+ }
+ lastDasSourceRegistry = (dasRegistry.getDasRegistryURL() + dasRegistry
+ .getLocalSourceString()).hashCode();
+ sfetch = sf;
+ _initingFetcher = false;
+ initingThread = null;
+ }
+ return sfetch;
+ }
+
+ private IProgressIndicator progressIndicator;
+
+ public SequenceFetcher(IProgressIndicator guiIndic)
+ {
+ this.progressIndicator = guiIndic;
+ final SequenceFetcher us = this;
+ // launch initialiser thread
+ Thread sf = new Thread(new Runnable()
+ {