Merge branch 'develop' into trialMerge
[jalview.git] / src / jalview / gui / SequenceFetcher.java
index a9df882..8e1d549 100755 (executable)
@@ -28,6 +28,7 @@ import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
 import jalview.fts.service.pdb.PDBFTSPanel;
 import jalview.fts.service.uniprot.UniprotFTSPanel;
+import jalview.io.FileFormatI;
 import jalview.io.gff.SequenceOntologyI;
 import jalview.util.DBRefUtils;
 import jalview.util.MessageManager;
@@ -116,8 +117,6 @@ public class SequenceFetcher extends JPanel implements Runnable
 
   private static Thread initingThread = null;
 
-  int debounceTrap = 0;
-
   public JTextArea getTextArea()
   {
     return textArea;
@@ -169,9 +168,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();
@@ -215,7 +213,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
@@ -228,7 +226,7 @@ public class SequenceFetcher extends JPanel implements Runnable
         if (getSequenceFetcherSingleton(progressIndicator) != null)
         {
           us.initGui(progressIndicator, selectedDb, queryString);
-          us._isConstructing=false;
+          us._isConstructing = false;
         }
         else
         {
@@ -237,14 +235,14 @@ public class SequenceFetcher extends JPanel implements Runnable
             @Override
             public void run()
             {
-              JOptionPane
+              JvOptionPane
                       .showInternalMessageDialog(
                               Desktop.desktop,
                               MessageManager
                                       .getString("warn.couldnt_create_sequence_fetcher_client"),
                               MessageManager
                                       .getString("label.couldnt_create_sequence_fetcher"),
-                              JOptionPane.ERROR_MESSAGE);
+                              JvOptionPane.ERROR_MESSAGE);
             }
           });
 
@@ -254,17 +252,23 @@ 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.emptyList();
@@ -284,7 +288,7 @@ public class SequenceFetcher extends JPanel implements Runnable
   {
 
   };
-  
+
   /**
    * initialise the database and query for this fetcher panel
    * 
@@ -303,13 +307,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)
     {
@@ -445,7 +457,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(
@@ -466,7 +477,6 @@ public class SequenceFetcher extends JPanel implements Runnable
       @Override
       public void actionPerformed(ActionEvent e)
       {
-        debounceTrap++;
         String currentSelection = database.getSelectedItem();
         if (currentSelection == null)
         {
@@ -475,13 +485,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();
         }
@@ -521,6 +529,7 @@ public class SequenceFetcher extends JPanel implements Runnable
     new UniprotFTSPanel(this);
     frame.dispose();
   }
+
   private void otherSourceAction()
   {
     try
@@ -910,8 +919,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;
   }
@@ -970,7 +979,7 @@ public class SequenceFetcher extends JPanel implements Runnable
   }
 
   AlignmentI parseResult(AlignmentI al, String title,
-          String currentFileFormat,
+          FileFormatI currentFileFormat,
           FeatureSettingsModelI preferredFeatureColours)
   {
 
@@ -1030,8 +1039,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)
         {
         }
@@ -1052,9 +1060,9 @@ public class SequenceFetcher extends JPanel implements Runnable
       @Override
       public void run()
       {
-        JOptionPane.showInternalMessageDialog(Desktop.desktop, error,
+        JvOptionPane.showInternalMessageDialog(Desktop.desktop, error,
                 MessageManager.getString("label.error_retrieving_data"),
-                JOptionPane.WARNING_MESSAGE);
+                JvOptionPane.WARNING_MESSAGE);
       }
     });
   }