X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FDesktop.java;h=294beaccaaec81e8b5c02f68c1b36b1d3617913e;hb=e43ffeb12a7e4bbadebe734cab824a14175b34a2;hp=50f0095b50d715b05f7a39647de39606ea3702fb;hpb=cb03edaa1450e5716bd37ca5cc430a46c245e9db;p=jalview.git diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 50f0095..294beac 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -67,6 +67,7 @@ import java.util.StringTokenizer; import java.util.Vector; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.Semaphore; import javax.swing.DefaultDesktopManager; import javax.swing.DesktopManager; @@ -82,6 +83,7 @@ import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JProgressBar; +import javax.swing.JTextArea; import javax.swing.SwingUtilities; import javax.swing.event.HyperlinkEvent; import javax.swing.event.MenuEvent; @@ -2495,28 +2497,58 @@ public class Desktop extends jalview.jbgui.GDesktop implements { if (Cache.getDefault("SHOW_WSDISCOVERY_ERRORS", true)) { - if (serviceChangedDialog == null) - { - // only run if we aren't already displaying one of these. - javax.swing.SwingUtilities - .invokeLater(serviceChangedDialog = new Runnable() + if (serviceChangedDialog == null) + { + // only run if we aren't already displaying one of these. + addDialogThread(serviceChangedDialog = new Runnable() + { + public void run() + { + + /* + JalviewDialog jd =new JalviewDialog() { + @Override + protected void cancelPressed() + { + // TODO Auto-generated method stub + + }@Override + protected void okPressed() { - public void run() - { - - JOptionPane - .showInternalMessageDialog( - Desktop.desktop, - ermsg - + "It may be that you have invalid JABA URLs\nin your web service preferences.\n\nGo to the Web services tab of the\nTools->Preferences dialog box to change them.\n", - "Preferences Problem", - JOptionPane.WARNING_MESSAGE); - serviceChangedDialog = null; - - } - }); + // TODO Auto-generated method stub + + }@Override + protected void raiseClosed() + { + // TODO Auto-generated method stub + + } + }; + jd.initDialogFrame(new JLabel("
" + + ermsg + + "
It may be that you have invalid JABA URLs in your web service preferences," + + " or mis-configured HTTP proxy settings.
" + + "Check the Connections and Web services tab of the" + + " Tools->Preferences dialog box to change them.
"), true, true, "Web Service Configuration Problem", 450, 400); + + jd.waitForInput(); + */ + JOptionPane.showConfirmDialog( + Desktop.desktop, + new JLabel("
" + + ermsg+"
" + + "

It may be that you have invalid JABA URLs
in your web service preferences," + + " or mis-configured HTTP proxy settings.

" + + "

Check the Connections and Web services tab
of the" + + " Tools->Preferences dialog box to change them.

"), "Web Service Configuration Problem", + JOptionPane.DEFAULT_OPTION, + JOptionPane.ERROR_MESSAGE); + serviceChangedDialog = null; + + } + }); + } } - } else { Cache.log @@ -2618,6 +2650,14 @@ public class Desktop extends jalview.jbgui.GDesktop implements * single thread that handles display of dialogs to user. */ ExecutorService dialogExecutor=Executors.newSingleThreadExecutor(); + /** + * flag indicating if dialogExecutor should try to acquire a permit + */ + private volatile boolean dialogPause=true; + /** + * pause the queue + */ + private java.util.concurrent.Semaphore block=new Semaphore(0); /** * add another dialog thread to the queue @@ -2629,6 +2669,13 @@ public class Desktop extends jalview.jbgui.GDesktop implements { public void run() { + if (dialogPause) { + try { block.acquire(); } catch (InterruptedException x){}; + } + if (instance==null) + { + return; + } try { SwingUtilities.invokeAndWait(prompter); @@ -2640,4 +2687,10 @@ public class Desktop extends jalview.jbgui.GDesktop implements }); } + public void startDialogQueue() + { + // set the flag so we don't pause waiting for another permit and semaphore the current task to begin + dialogPause=false; + block.release(); + } }