X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FWsPreferences.java;h=ff149c180d30296c19bdfd0def09edd4ef457870;hb=e568f853187c30c707c02db4e01a30a7530b74e3;hp=4fb8e6ea6b9ec4404ae2410d3e3be5d7f33fdf56;hpb=ad5a897996c1c6305ecf9e677a2b6026f988dfe2;p=jalview.git diff --git a/src/jalview/gui/WsPreferences.java b/src/jalview/gui/WsPreferences.java index 4fb8e6e..ff149c1 100644 --- a/src/jalview/gui/WsPreferences.java +++ b/src/jalview/gui/WsPreferences.java @@ -19,6 +19,7 @@ package jalview.gui; import java.awt.BorderLayout; import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.net.URL; import java.util.Vector; @@ -45,7 +46,7 @@ public class WsPreferences extends GWsPreferences private boolean needWsMenuUpdate; private boolean oldJws1, oldJws2, oldIndexByHost, oldIndexByType, - oldEnfin; + oldEnfin, oldWsWarning; private void initFromPreferences() { @@ -63,16 +64,34 @@ public class WsPreferences extends GWsPreferences updateList(); enableEnfinServices.setSelected(oldEnfin = Cache.getDefault( "SHOW_ENFIN_SERVICES", true)); + enableEnfinServices.addActionListener(updateAction); enableJws1Services.setSelected(oldJws1 = Cache.getDefault( "SHOW_JWS1_SERVICES", true)); + enableJws1Services.addActionListener(updateAction); enableJws2Services.setSelected(oldJws2 = Cache.getDefault( "SHOW_JWS2_SERVICES", true)); + enableJws2Services.addActionListener(updateAction); indexByHost.setSelected(oldIndexByHost = Cache.getDefault( "WSMENU_BYHOST", true)); + indexByHost.addActionListener(updateAction); indexByType.setSelected(oldIndexByType = Cache.getDefault( "WSMENU_BYTYPE", true)); + indexByType.addActionListener(updateAction); + displayWsWarning.setSelected(oldWsWarning = Cache.getDefault( + "SHOW_WSDISCOVERY_ERRORS", true)); } + ActionListener updateAction = new ActionListener() + { + + @Override + public void actionPerformed(ActionEvent e) + { + update++; + } + + }; + private void updateList() { wsList.setListData(wsUrls); @@ -97,6 +116,7 @@ public class WsPreferences extends GWsPreferences if (sel > -1) { wsUrls.removeElementAt(sel); + update++; updateList(); } } @@ -119,6 +139,7 @@ public class WsPreferences extends GWsPreferences int present = wsUrls.indexOf(url); if (present == -1) { + update++; wsUrls.setElementAt(url, sel); updateList(); } @@ -165,6 +186,8 @@ public class WsPreferences extends GWsPreferences "WSMENU_BYTYPE", Boolean.valueOf(old ? oldIndexByType : indexByType.isSelected()) .toString()); + Cache.setProperty("SHOW_WSDISCOVERY_ERRORS", + Boolean.valueOf(old ? oldWsWarning : displayWsWarning.isSelected()).toString()); updateServiceList(); } @@ -297,6 +320,7 @@ public class WsPreferences extends GWsPreferences { wsUrls.addElement(url); } + update++; updateList(); } } @@ -316,6 +340,8 @@ public class WsPreferences extends GWsPreferences public void run() { + // force a refresh. + lastrefresh = update - 1; updateWsMenuConfig(false); refreshWsMenu(true); } @@ -324,6 +350,8 @@ public class WsPreferences extends GWsPreferences } /** + * Refresh the web services menus - but only if there has been a change in the + * configuration (indicated by update!=lastrefresh) * * @param showProgress * show progress in dialog or on desktop @@ -340,8 +368,12 @@ public class WsPreferences extends GWsPreferences progressBar.setVisible(true); validate(); progressBar.setIndeterminate(true); - Desktop.instance.startServiceDiscovery(true); // wait around for all - // threads to complete + if (lastrefresh != update) + { + lastrefresh = update; + Desktop.instance.startServiceDiscovery(true); // wait around for all + // threads to complete + } progressBar.setIndeterminate(false); progressBar.setVisible(false); validate(); @@ -359,15 +391,23 @@ public class WsPreferences extends GWsPreferences long ct = System.currentTimeMillis(); Desktop.instance.setProgressBar("Refreshing Web Service Menus", ct); - Desktop.instance.startServiceDiscovery(true); - Desktop.instance.setProgressBar(null, - ct); + if (lastrefresh != update) + { + lastrefresh = update; + Desktop.instance.startServiceDiscovery(true); + } + Desktop.instance.setProgressBar(null, ct); } }).start(); } } + /** + * state counters for ensuring that updates only happen if config has changed. + */ + private long update = 0, lastrefresh = 0; + /* * (non-Javadoc) *