JAL-3851 throwaway code
[jalview.git] / src / jalview / gui / SequenceFetcher.java
index 8b5d3b7..b4ca075 100755 (executable)
  */
 package jalview.gui;
 
-import jalview.api.FeatureSettingsModelI;
-import jalview.bin.Cache;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.DBRefEntry;
-import jalview.datamodel.SequenceI;
-import jalview.fts.core.GFTSPanel;
-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;
-import jalview.util.Platform;
-import jalview.ws.seqfetcher.DbSourceProxy;
-
 import java.awt.BorderLayout;
 import java.awt.Font;
 import java.awt.event.ActionEvent;
@@ -46,6 +31,7 @@ import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
@@ -57,6 +43,21 @@ import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 import javax.swing.SwingConstants;
 
+import jalview.api.FeatureSettingsModelI;
+import jalview.bin.Cache;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.DBRefEntry;
+import jalview.datamodel.SequenceI;
+import jalview.fts.core.GFTSPanel;
+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;
+import jalview.util.Platform;
+import jalview.ws.seqfetcher.DbSourceProxy;
+
 /**
  * A panel where the use may choose a database source, and enter one or more
  * accessions, to retrieve entries from the database.
@@ -96,6 +97,14 @@ public class SequenceFetcher extends JPanel implements Runnable
 
   volatile boolean _isConstructing = false;
 
+  private boolean closeDialog = false;
+
+  // set to true to close the fetch sequence dialog window after completion
+  public void closeDialog(boolean c)
+  {
+    closeDialog = c;
+  }
+
   /**
    * Returns the shared instance of the SequenceFetcher client
    * 
@@ -145,8 +154,8 @@ public class SequenceFetcher extends JPanel implements Runnable
 
     frame = new JInternalFrame();
     frame.setContentPane(this);
-    Desktop.addInternalFrame(frame, getFrameTitle(), true, 400, 
-               Platform.isAMacAndNotJS() ? 240 : 180);
+    Desktop.addInternalFrame(frame, getFrameTitle(), true, 400,
+            Platform.isAMacAndNotJS() ? 240 : 180);
   }
 
   private String getFrameTitle()
@@ -414,6 +423,11 @@ public class SequenceFetcher extends JPanel implements Runnable
    */
   public void ok_actionPerformed()
   {
+    ok_actionPerformed(false);
+  }
+
+  public Thread ok_actionPerformed(boolean returnThread)
+  {
     /*
      * tidy inputs and check there is something to search for
      */
@@ -424,9 +438,9 @@ public class SequenceFetcher extends JPanel implements Runnable
       text = text.replace(",", ";");
     }
     text = text.replaceAll("(\\s|[; ])+", ";");
-    if (!t0.equals(text)) 
+    if (!t0.equals(text))
     {
-         textArea.setText(text);
+      textArea.setText(text);
     }
     if (text.isEmpty())
     {
@@ -434,14 +448,14 @@ public class SequenceFetcher extends JPanel implements Runnable
       showErrorMessage(
               "Please enter a (semi-colon separated list of) database id(s)");
       resetDialog();
-      return;
+      return null;
     }
     if (database.getSelectedIndex() == 0)
     {
       // todo i18n
       showErrorMessage("Please choose a database");
       resetDialog();
-      return;
+      return null;
     }
 
     exampleBtn.setEnabled(false);
@@ -452,6 +466,7 @@ public class SequenceFetcher extends JPanel implements Runnable
 
     Thread worker = new Thread(this);
     worker.start();
+    return returnThread ? worker : null;
   }
 
   private void resetDialog()
@@ -633,6 +648,31 @@ public class SequenceFetcher extends JPanel implements Runnable
       showErrorMessage(sb.toString());
     }
     resetDialog();
+    if (closeDialog)
+    {
+      close_actionPerformed(null);
+    }
+  }
+
+  // ability to access the alignframe created/used in run+parseResult
+  private boolean saveAlignFrame = false;
+
+  private String savedAlignFrameId = null;
+
+  private Map savedAlignFrames = null;
+
+  public void saveAlignFrame(String id, Map map)
+  {
+    saveAlignFrame = true;
+    savedAlignFrameId = id;
+    savedAlignFrames = map;
+  }
+
+  public void resetSavedAlignFrames()
+  {
+    saveAlignFrame = false;
+    savedAlignFrameId = null;
+    savedAlignFrames = null;
   }
 
   /**
@@ -761,12 +801,12 @@ public class SequenceFetcher extends JPanel implements Runnable
 
     for (String q : queries)
     {
-       // BH 2019.01.25 dbr is never used.
-//      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, nr = rs.length; r < nr; r++)
       {
@@ -813,6 +853,10 @@ public class SequenceFetcher extends JPanel implements Runnable
       {
         AlignFrame af = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH,
                 AlignFrame.DEFAULT_HEIGHT);
+        if (saveAlignFrame && savedAlignFrames != null)
+        {
+          savedAlignFrames.put(savedAlignFrameId, af);
+        }
         if (currentFileFormat != null)
         {
           af.currentFileFormat = currentFileFormat;
@@ -854,6 +898,10 @@ public class SequenceFetcher extends JPanel implements Runnable
       }
       else
       {
+        if (saveAlignFrame && savedAlignFrames != null)
+        {
+          savedAlignFrames.put(savedAlignFrameId, alignFrame);
+        }
         alignFrame.viewport.addAlignment(al, title);
       }
     }