From 04794fd0028bd18c6b514a79a4de1dc1710a3e03 Mon Sep 17 00:00:00 2001 From: jprocter Date: Tue, 26 Aug 2008 10:07:03 +0000 Subject: [PATCH] added singleton access method to retrieve the latest shared instance of the jalview.ws.SequenceFetcher --- src/jalview/gui/SequenceFetcher.java | 65 ++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/src/jalview/gui/SequenceFetcher.java b/src/jalview/gui/SequenceFetcher.java index 02bb786..f594554 100755 --- a/src/jalview/gui/SequenceFetcher.java +++ b/src/jalview/gui/SequenceFetcher.java @@ -58,7 +58,37 @@ public class SequenceFetcher extends JPanel implements Runnable private static jalview.ws.SequenceFetcher sfetch = null; private static String dasRegistry = null; + /** + * Blocking method that initialises and returns the shared instance of the SequenceFetcher client + * @param guiWindow - where the initialisation delay message should be shown + * @return the singleton instance of the sequence fetcher client + */ + public static jalview.ws.SequenceFetcher getSequenceFetcherSingleton(final IProgressIndicator guiWindow) { + if (sfetch == null + || dasRegistry != DasSourceBrowser.getDasRegistryURL()) + { + /** + * give a visual indication that sequence fetcher construction is + * occuring + */ + if (guiWindow != null) + { + guiWindow.setProgressBar( + "Initialising Sequence Database Fetchers", Thread.currentThread() + .hashCode()); + } + dasRegistry = DasSourceBrowser.getDasRegistryURL(); + jalview.ws.SequenceFetcher sf = new jalview.ws.SequenceFetcher(); + if (guiWindow != null) + { + guiWindow.setProgressBar( + "Initialising Sequence Database Fetchers", Thread.currentThread().hashCode()); + } + sfetch = sf; + } + return sfetch; + } public SequenceFetcher(IProgressIndicator guiIndic) { final IProgressIndicator guiWindow = guiIndic; @@ -69,31 +99,22 @@ public class SequenceFetcher extends JPanel implements Runnable public void run() { - if (sfetch == null - || dasRegistry != DasSourceBrowser.getDasRegistryURL()) + if (getSequenceFetcherSingleton(guiWindow)!=null) { - /** - * give a visual indication that sequence fetcher construction is - * occuring - */ - if (guiWindow != null) + us.initGui(guiWindow); + } else { + javax.swing.SwingUtilities.invokeLater(new Runnable() { - guiWindow.setProgressBar( - "Initialising Sequence Database Fetchers", this - .hashCode()); - } - dasRegistry = DasSourceBrowser.getDasRegistryURL(); - jalview.ws.SequenceFetcher sf = new jalview.ws.SequenceFetcher(); - if (guiWindow != null) - { - guiWindow.setProgressBar( - "Initialising Sequence Database Fetchers", this - .hashCode()); - } - sfetch = sf; - + public void run() + { + JOptionPane.showInternalMessageDialog(Desktop.desktop, + "Could not create the sequence fetcher client. Check error logs for details.", + "Couldn't create SequenceFetcher", JOptionPane.ERROR_MESSAGE); + } + }); + + // raise warning dialog } - us.initGui(guiWindow); } }); sf.start(); -- 1.7.10.2