JAL-4389 Adjust preferences menu to work with any WSDiscoverer
[jalview.git] / src / jalview / gui / Preferences.java
index 19d929e..67b45e3 100755 (executable)
@@ -40,6 +40,7 @@ import javax.swing.JComboBox;
 import javax.swing.JFileChooser;
 import javax.swing.JInternalFrame;
 import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
 import javax.swing.JTextField;
 import javax.swing.ListSelectionModel;
 import javax.swing.RowFilter;
@@ -58,7 +59,6 @@ import jalview.hmmer.HmmerCommand;
 import jalview.util.FileUtils;
 import ext.edu.ucsf.rbvi.strucviz2.StructureManager;
 import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
-import jalview.bin.ApplicationSingletonProvider;
 import jalview.bin.ApplicationSingletonProvider.ApplicationSingletonI;
 import jalview.bin.Cache;
 import jalview.bin.Console;
@@ -84,6 +84,10 @@ import jalview.util.MessageManager;
 import jalview.util.Platform;
 import jalview.util.UrlConstants;
 import jalview.ws.sifts.SiftsSettings;
+import jalview.ws2.client.api.WebServiceDiscovererI;
+import jalview.ws2.client.ebi.JobDispatcherWSDiscoverer;
+import jalview.ws2.client.jpred4.JPred4WSDiscoverer;
+import jalview.ws2.client.slivka.SlivkaWSDiscoverer;
 
 /**
  * DOCUMENT ME!
@@ -297,7 +301,6 @@ public class Preferences extends GPreferences implements ApplicationSingletonI
 
   private WsPreferences wsPrefs;
 
-  private SlivkaPreferences slivkaPrefs;
   private OptionsParam promptEachTimeOpt = new OptionsParam(
           MessageManager.getString("label.prompt_each_time"),
           "Prompt each time");
@@ -373,9 +376,13 @@ public class Preferences extends GPreferences implements ApplicationSingletonI
       wsTab.add(wsPrefs, BorderLayout.CENTER);
     }
 
-    slivkaPrefs = new SlivkaPreferences();
-    slivkaTab.add(slivkaPrefs, BorderLayout.CENTER);
-   
+    if (Cache.getDefault("SHOW_SLIVKA_SERVICES", true))
+      addWebServiceTab(tabbedPane, SlivkaWSDiscoverer.getInstance());
+    if (Cache.getDefault("SHOW_EBI_SERVICES", true))
+      addWebServiceTab(tabbedPane, JobDispatcherWSDiscoverer.getInstance());
+    if (Cache.getDefault("SHOW_JPRED4_SERVICES", true))
+      addWebServiceTab(tabbedPane, JPred4WSDiscoverer.getInstance());
+
     int width = 500, height = 450;
     if (Platform.isAMacAndNotJS())
     {
@@ -870,6 +877,16 @@ public class Preferences extends GPreferences implements ApplicationSingletonI
     loadLastSavedBackupsOptions();
   }
 
+  
+  private void addWebServiceTab(JTabbedPane tabs, WebServiceDiscovererI discoverer)
+  {
+    String name = discoverer.getName();
+    JPanel tab = new JPanel();
+    tab.setLayout(new BorderLayout());
+    tab.add(new WS2PreferencesPanel(discoverer), BorderLayout.CENTER);
+    tabs.add(tab, name + " services");
+  }
+  
   /**
    * A helper method that sets the items and initial selection in a character
    * rendering option list (Prompt each time/Lineart/Text)