X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSequenceFetcher.java;fp=src%2Fjalview%2Fgui%2FSequenceFetcher.java;h=b4ca0756b554e5ac95ce425e131625e66e440ee7;hb=c329b66e5ebe188fcaa8daa825593da87f113ce5;hp=8b5d3b743b5bb065c1e96d2db7bc56c880e91e29;hpb=0ba88485af97e4f2f2728b27fb22603f4901acbb;p=jalview.git diff --git a/src/jalview/gui/SequenceFetcher.java b/src/jalview/gui/SequenceFetcher.java index 8b5d3b7..b4ca075 100755 --- a/src/jalview/gui/SequenceFetcher.java +++ b/src/jalview/gui/SequenceFetcher.java @@ -20,21 +20,6 @@ */ 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); } }