JAL-2089 patch broken merge to master for Release 2.10.0b1
[jalview.git] / src / jalview / gui / SequenceFetcher.java
index e259913..bbe2f68 100755 (executable)
@@ -116,8 +116,6 @@ public class SequenceFetcher extends JPanel implements Runnable
 
   private static Thread initingThread = null;
 
-  int debounceTrap = 0;
-
   public JTextArea getTextArea()
   {
     return textArea;
@@ -169,9 +167,8 @@ public class SequenceFetcher extends JPanel implements Runnable
     if (sfetch == null
             || dasRegistry != Cache.getDasSourceRegistry()
             || lastDasSourceRegistry != (Cache.getDasSourceRegistry()
-                    .getDasRegistryURL() + Cache
-                    .getDasSourceRegistry().getLocalSourceString())
-                    .hashCode())
+                    .getDasRegistryURL() + Cache.getDasSourceRegistry()
+                    .getLocalSourceString()).hashCode())
     {
       _initingFetcher = true;
       initingThread = Thread.currentThread();
@@ -202,7 +199,8 @@ public class SequenceFetcher extends JPanel implements Runnable
   }
 
   private IProgressIndicator progressIndicator;
-  private boolean _isConstructing=false;
+
+  private volatile boolean _isConstructing = false;
 
   private List<AlignFrame> newAlframes = null;
 
@@ -214,7 +212,7 @@ public class SequenceFetcher extends JPanel implements Runnable
   public SequenceFetcher(IProgressIndicator guiIndic,
           final String selectedDb, final String queryString)
   {
-    this._isConstructing=true;
+    this._isConstructing = true;
     this.progressIndicator = guiIndic;
     final SequenceFetcher us = this;
     // launch initialiser thread
@@ -227,7 +225,7 @@ public class SequenceFetcher extends JPanel implements Runnable
         if (getSequenceFetcherSingleton(progressIndicator) != null)
         {
           us.initGui(progressIndicator, selectedDb, queryString);
-          us._isConstructing=false;
+          us._isConstructing = false;
         }
         else
         {
@@ -253,20 +251,26 @@ public class SequenceFetcher extends JPanel implements Runnable
     });
     sf.start();
   }
+
   /**
-   * blocking call which creates a new sequence fetcher panel, configures it and presses the OK button with the given database and query.
+   * blocking call which creates a new sequence fetcher panel, configures it and
+   * presses the OK button with the given database and query.
+   * 
    * @param database
    * @param query
    */
   public static List<AlignFrame> fetchAndShow(String database, String query)
   {
-    final SequenceFetcher sf = new SequenceFetcher(Desktop.instance, database, query);
+    final SequenceFetcher sf = new SequenceFetcher(Desktop.instance,
+            database, query);
     while (sf._isConstructing)
     {
-      try { Thread.sleep(50);
+      try
+      {
+        Thread.sleep(50);
       } catch (Exception q)
       {
-        return Collections.EMPTY_LIST;
+        return Collections.emptyList();
       }
     }
     sf.newAlframes = new ArrayList<AlignFrame>();
@@ -283,7 +287,7 @@ public class SequenceFetcher extends JPanel implements Runnable
   {
 
   };
-  
+
   /**
    * initialise the database and query for this fetcher panel
    * 
@@ -302,13 +306,21 @@ public class SequenceFetcher extends JPanel implements Runnable
     try
     {
       List<DbSourceProxy> sp = sfetch.getSourceProxy(selectedDb);
-      if (sp == null || sp.size() != 1)
+      for (DbSourceProxy sourcep : sp)
+      {
+        if (sourcep.getTier() == 0)
+        {
+          database.selection = Arrays
+                  .asList(new DbSourceProxy[] { sourcep });
+          break;
+        }
+      }
+      if (database.selection == null || database.selection.size() == 0)
       {
         System.err.println("Ignoring fetch parameter db='" + selectedDb
                 + "'");
         return false;
       }
-      database.selection = sp;
       textArea.setText(queryString);
     } catch (Exception q)
     {
@@ -444,7 +456,6 @@ public class SequenceFetcher extends JPanel implements Runnable
     jPanel1.add(example);
     jPanel1.add(clear);
     jPanel1.add(close);
-    jPanel3.add(jPanel2, java.awt.BorderLayout.CENTER);
     jPanel2.setLayout(borderLayout3);
     databaseButt = /*database.getDatabaseSelectorButton();
                    final JButton viewdbs =*/new JButton(
@@ -465,7 +476,6 @@ public class SequenceFetcher extends JPanel implements Runnable
       @Override
       public void actionPerformed(ActionEvent e)
       {
-        debounceTrap++;
         String currentSelection = database.getSelectedItem();
         if (currentSelection == null)
         {
@@ -474,13 +484,11 @@ public class SequenceFetcher extends JPanel implements Runnable
 
         showPanel();
 
-        if (currentSelection.equalsIgnoreCase("pdb")
-                && (database.action == KeyEvent.VK_ENTER || ((debounceTrap % 2) == 0)))
+        if ("pdb".equalsIgnoreCase(currentSelection))
         {
           pdbSourceAction();
         }
-        else if (currentSelection.equalsIgnoreCase("uniprot")
-                && (database.action == KeyEvent.VK_ENTER || ((debounceTrap % 2) == 0)))
+        else if ("uniprot".equalsIgnoreCase(currentSelection))
         {
           uniprotSourceAction();
         }
@@ -520,6 +528,7 @@ public class SequenceFetcher extends JPanel implements Runnable
     new UniprotFTSPanel(this);
     frame.dispose();
   }
+
   private void otherSourceAction()
   {
     try
@@ -909,8 +918,8 @@ public class SequenceFetcher extends JPanel implements Runnable
     } catch (Exception e)
     {
       Cache.log.info(
-              "Error retrieving " + accession
-              + " from " + proxy.getDbName(), e);
+              "Error retrieving " + accession + " from "
+                      + proxy.getDbName(), e);
     }
     return success;
   }
@@ -1029,8 +1038,7 @@ public class SequenceFetcher extends JPanel implements Runnable
 
         try
         {
-          af.setMaximum(Cache.getDefault("SHOW_FULLSCREEN",
-                  false));
+          af.setMaximum(Cache.getDefault("SHOW_FULLSCREEN", false));
         } catch (Exception ex)
         {
         }