Merge branch 'develop' into features/r2_11_2/JAL-3829_3dbeacons
[jalview.git] / src / jalview / gui / SequenceFetcher.java
index 7ef9613..caecbba 100755 (executable)
@@ -27,6 +27,7 @@ import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.SequenceI;
 import jalview.fts.core.GFTSPanel;
 import jalview.fts.service.pdb.PDBFTSPanel;
+import jalview.fts.service.threedbeacons.TDBeaconsFTSPanel;
 import jalview.fts.service.uniprot.UniprotFTSPanel;
 import jalview.io.FileFormatI;
 import jalview.io.gff.SequenceOntologyI;
@@ -145,8 +146,8 @@ public class SequenceFetcher extends JPanel implements Runnable
 
     frame = new JInternalFrame();
     frame.setContentPane(this);
-    int height = Platform.isAMac() ? 240 : 180;
-    Desktop.addInternalFrame(frame, getFrameTitle(), true, 400, height);
+    Desktop.addInternalFrame(frame, getFrameTitle(), true, 400, 
+               Platform.isAMacAndNotJS() ? 240 : 180);
   }
 
   private String getFrameTitle()
@@ -195,6 +196,11 @@ public class SequenceFetcher extends JPanel implements Runnable
           frame.dispose();
           new UniprotFTSPanel(SequenceFetcher.this);
         }
+        else if ("3d-beacons".equalsIgnoreCase(currentSelection))
+        {
+          frame.dispose();
+          new TDBeaconsFTSPanel(SequenceFetcher.this);
+        }
         else
         {
           otherSourceAction();
@@ -207,11 +213,11 @@ public class SequenceFetcher extends JPanel implements Runnable
     JLabel jLabel1 = new JLabel(MessageManager
             .getString("label.separate_multiple_accession_ids"));
     jLabel1.setFont(new Font("Verdana", Font.ITALIC, 11));
-    jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
+    jLabel1.setHorizontalAlignment(SwingConstants.LEFT);
 
     replacePunctuation = new JCheckBox(
             MessageManager.getString("label.replace_commas_semicolons"));
-    replacePunctuation.setHorizontalAlignment(SwingConstants.CENTER);
+    replacePunctuation.setHorizontalAlignment(SwingConstants.LEFT);
     replacePunctuation.setFont(new Font("Verdana", Font.ITALIC, 11));
     okBtn = new JButton(MessageManager.getString("action.ok"));
     okBtn.addActionListener(new ActionListener()
@@ -417,13 +423,17 @@ public class SequenceFetcher extends JPanel implements Runnable
     /*
      * tidy inputs and check there is something to search for
      */
-    String text = textArea.getText();
+    String t0 = textArea.getText();
+    String text = t0.trim();
     if (replacePunctuation.isEnabled() && replacePunctuation.isSelected())
     {
       text = text.replace(",", ";");
     }
-    text = text.replaceAll("(\\s|[,; ])+", ";");
-    textArea.setText(text);
+    text = text.replaceAll("(\\s|[; ])+", ";");
+    if (!t0.equals(text)) 
+    {
+         textArea.setText(text);
+    }
     if (text.isEmpty())
     {
       // todo i18n
@@ -432,6 +442,14 @@ public class SequenceFetcher extends JPanel implements Runnable
       resetDialog();
       return;
     }
+    if (database.getSelectedIndex() == 0)
+    {
+      // todo i18n
+      showErrorMessage("Please choose a database");
+      resetDialog();
+      return;
+    }
+
     exampleBtn.setEnabled(false);
     textArea.setEnabled(false);
     okBtn.setEnabled(false);
@@ -462,9 +480,8 @@ public class SequenceFetcher extends JPanel implements Runnable
     List<DbSourceProxy> sources = sfetch
             .getSourceProxy((String) database.getSelectedItem());
     Iterator<DbSourceProxy> proxies = sources.iterator();
-    String[] qries;
-    List<String> nextFetch = Arrays
-            .asList(qries = textArea.getText().split(";"));
+    String[] qries = textArea.getText().trim().split(";");
+    List<String> nextFetch = Arrays.asList(qries);
     Iterator<String> en = Arrays.asList(new String[0]).iterator();
     int nqueries = qries.length;
 
@@ -750,13 +767,14 @@ public class SequenceFetcher extends JPanel implements Runnable
 
     for (String q : queries)
     {
-      DBRefEntry dbr = new DBRefEntry();
-      dbr.setSource(proxy.getDbSource());
-      dbr.setVersion(null);
+       // BH 2019.01.25 dbr is never used.
+//      DBRefEntry dbr = new DBRefEntry();
+//      dbr.setSource(proxy.getDbSource());
+//      dbr.setVersion(null);
       String accId = proxy.getAccessionIdFromQuery(q);
-      dbr.setAccessionId(accId);
+//      dbr.setAccessionId(accId);
       boolean rfound = false;
-      for (int r = 0; r < rs.length; r++)
+      for (int r = 0, nr = rs.length; r < nr; r++)
       {
         if (rs[r] != null)
         {
@@ -785,8 +803,15 @@ public class SequenceFetcher extends JPanel implements Runnable
   {
     return "Retrieved from " + database.getSelectedItem();
   }
-
-  AlignmentI parseResult(AlignmentI al, String title,
+  /**
+   * constructs an alignment frame given the data and metadata
+   * @param al
+   * @param title
+   * @param currentFileFormat
+   * @param preferredFeatureColours
+   * @return the alignment 
+   */
+  public AlignmentI parseResult(AlignmentI al, String title,
           FileFormatI currentFileFormat,
           FeatureSettingsModelI preferredFeatureColours)
   {
@@ -819,10 +844,7 @@ public class SequenceFetcher extends JPanel implements Runnable
           }
         }
 
-        if (preferredFeatureColours != null)
-        {
-          af.getViewport().applyFeaturesStyle(preferredFeatureColours);
-        }
+        af.getViewport().applyFeaturesStyle(preferredFeatureColours);
         if (Cache.getDefault("HIDE_INTRONS", true))
         {
           af.hideFeatureColumns(SequenceOntologyI.EXON, false);