(JAL-1049) only store state reference for sequence we are creating PDBentry for
[jalview.git] / src / jalview / gui / WsPreferences.java
index e14b358..e2482f6 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
- * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
  * 
  * This file is part of Jalview.
  * 
@@ -31,6 +31,7 @@ import javax.swing.JTextField;
 
 import jalview.bin.Cache;
 import jalview.jbgui.GWsPreferences;
+import jalview.ws.rest.RestServiceDescription;
 
 public class WsPreferences extends GWsPreferences
 {
@@ -41,7 +42,7 @@ public class WsPreferences extends GWsPreferences
     initFromPreferences();
   }
 
-  Vector<String> wsUrls, oldUrls;
+  Vector<String> wsUrls, oldUrls,rsbsUrls,oldRsbsUrls;
 
   private boolean needWsMenuUpdate;
 
@@ -62,20 +63,28 @@ public class WsPreferences extends GWsPreferences
       wsUrls = new Vector<String>();
     }
     updateList();
+    rsbsUrls = jalview.ws.rest.RestClient.getRsbsDescriptions();
+    if (rsbsUrls != null)
+    {
+      oldRsbsUrls = new Vector<String>(rsbsUrls);
+    }
+    else
+    {
+      oldRsbsUrls = null;
+      rsbsUrls = new Vector<String>();
+    }
+    updateRsbsList();
     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));
+            "WSMENU_BYHOST", false));
     indexByHost.addActionListener(updateAction);
     indexByType.setSelected(oldIndexByType = Cache.getDefault(
-            "WSMENU_BYTYPE", true));
+            "WSMENU_BYTYPE", false));
     indexByType.addActionListener(updateAction);
     displayWsWarning.setSelected(oldWsWarning = Cache.getDefault(
             "SHOW_WSDISCOVERY_ERRORS", true));
@@ -97,11 +106,21 @@ public class WsPreferences extends GWsPreferences
     wsList.setListData(wsUrls);
   }
 
+  private void updateRsbsList()
+  {
+    sbrsList.setListData(rsbsUrls);
+  }
+
   private void updateServiceList()
   {
     jalview.ws.jws2.Jws2Discoverer.setServiceUrls(wsUrls);
   }
 
+  private void updateRsbsServiceList()
+  {
+    jalview.ws.rest.RestClient.setRsbsServices(rsbsUrls);
+  }
+
   /*
    * (non-Javadoc)
    * 
@@ -133,7 +152,7 @@ public class WsPreferences extends GWsPreferences
     int sel = wsList.getSelectedIndex();
     if (sel > -1)
     {
-      String url = editUrl(wsUrls.elementAt(sel), "Edit JWS2 URL");
+      String url = editUrl(wsUrls.elementAt(sel), "Edit JABAWS URL");
       if (url != null)
       {
         int present = wsUrls.indexOf(url);
@@ -154,7 +173,46 @@ public class WsPreferences extends GWsPreferences
       }
     }
   }
-
+  @Override
+  protected void newSbrsUrl_actionPerformed(ActionEvent e)
+  {
+    RestServiceEditorPane rse = new RestServiceEditorPane();
+    rse.showDialog("Add a new Simple Bioinformatics Rest Service");
+    String rservice = rse.getEditedRestService();
+    if (rservice!=null && !rsbsUrls.contains(rservice))
+    {
+      rsbsUrls.add(rservice);
+      update++;
+      updateRsbsList();
+    }
+  }
+  @Override
+  protected void editSbrsUrl_actionPerformed(ActionEvent e)
+  {
+    int sel = sbrsList.getSelectedIndex();
+    if (sel > -1)
+    {
+      RestServiceEditorPane rse = new RestServiceEditorPane(new RestServiceDescription(rsbsUrls.elementAt(sel)));
+      rse.showDialog("Edit Simple Bioinformatics Rest Service entry");
+      String rservice = rse.getEditedRestService();
+      if (rservice!=null)
+      {
+        int present = rsbsUrls.indexOf(rservice);
+        if (present==-1) {
+          update++;
+          rsbsUrls.setElementAt(rservice,sel);
+          updateRsbsList();
+        } else {
+          if (present!=sel) {
+            rsbsUrls.removeElementAt(sel);
+            update++;
+            updateRsbsList();
+          }
+        }
+      }
+    }
+  }
+  
   void updateWsMenuConfig(boolean old)
   {
     if (old)
@@ -164,6 +222,11 @@ public class WsPreferences extends GWsPreferences
         update++;
       }
       wsUrls = (oldUrls == null) ? null : new Vector(oldUrls);
+      if (oldRsbsUrls!=rsbsUrls || (rsbsUrls!=null && oldRsbsUrls!=null && !oldRsbsUrls.equals(rsbsUrls)))
+      {
+        update++;
+      }
+      oldRsbsUrls = (oldRsbsUrls == null) ? null : new Vector(oldRsbsUrls);
     }
     else
     {
@@ -175,10 +238,6 @@ public class WsPreferences extends GWsPreferences
                     old ? oldEnfin : enableEnfinServices.isSelected())
                     .toString());
     Cache.setProperty(
-            "SHOW_JWS1_SERVICES",
-            Boolean.valueOf(old ? oldJws1 : enableJws1Services.isSelected())
-                    .toString());
-    Cache.setProperty(
             "SHOW_JWS2_SERVICES",
             Boolean.valueOf(old ? oldJws2 : enableJws2Services.isSelected())
                     .toString());
@@ -190,9 +249,11 @@ 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();
+    updateRsbsServiceList();
   }
 
   /*
@@ -213,6 +274,7 @@ public class WsPreferences extends GWsPreferences
       wsUrls.setElementAt(t, p);
       updateList();
       wsList.setSelectedIndex(p + 1);
+      update++;
     }
   }
 
@@ -234,6 +296,7 @@ public class WsPreferences extends GWsPreferences
       wsUrls.setElementAt(t, p);
       updateList();
       wsList.setSelectedIndex(p - 1);
+      update++;
     }
   }
 
@@ -262,8 +325,14 @@ public class WsPreferences extends GWsPreferences
       {
         // TODO: do a better job of checking that the url is a valid discovery
         // URL for web services.
-        foo = new URL(urltf.getText().trim());
+        String tx = urltf.getText().trim();
+        while (tx.length()>0 && tx.lastIndexOf('/')==tx.length()-1)
+        {
+          tx = tx.substring(0, tx.length()-1);
+        }
+        foo = new URL(tx);
         valid = true;
+        urltf.setText(tx);
       } catch (Exception e)
       {
         valid = false;
@@ -310,7 +379,7 @@ public class WsPreferences extends GWsPreferences
   @Override
   protected void newWsUrl_actionPerformed(ActionEvent e)
   {
-    String url = editUrl(null, "Add new JWS2 URL");
+    String url = editUrl(null, "Add new JABAWS URL");
     if (url != null)
     {
       if (!wsUrls.contains(url))