X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSequenceFetcher.java;h=7dcd2b905f1306f19443b2131ff0793181c4922a;hb=ef9d515865742b8a9b80371c65a201801b7f0253;hp=090eab72008e91e7414bbb550a226507073bcad2;hpb=4c08fd4b80b973b6def7fa3f7c3d8646613155f7;p=jalview.git diff --git a/src/jalview/gui/SequenceFetcher.java b/src/jalview/gui/SequenceFetcher.java index 090eab7..7dcd2b9 100755 --- a/src/jalview/gui/SequenceFetcher.java +++ b/src/jalview/gui/SequenceFetcher.java @@ -20,13 +20,15 @@ */ package jalview.gui; +import jalview.api.FeatureSettingsModelI; +import jalview.bin.Cache; import jalview.datamodel.AlignmentI; import jalview.datamodel.DBRefEntry; -import jalview.datamodel.DBRefSource; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; -import jalview.io.FormatAdapter; -import jalview.io.IdentifyFile; +import jalview.fts.service.pdb.PDBFTSPanel; +import jalview.fts.service.uniprot.UniprotFTSPanel; +import jalview.io.gff.SequenceOntologyI; import jalview.util.DBRefUtils; import jalview.util.MessageManager; import jalview.ws.dbsources.das.api.DasSourceRegistryI; @@ -113,6 +115,12 @@ public class SequenceFetcher extends JPanel implements Runnable private static Thread initingThread = null; int debounceTrap = 0; + + public JTextArea getTextArea() + { + return textArea; + } + /** * Blocking method that initialises and returns the shared instance of the * SequenceFetcher client @@ -128,9 +136,11 @@ public class SequenceFetcher extends JPanel implements Runnable { if (guiWindow != null) { - guiWindow.setProgressBar( - MessageManager.getString("status.waiting_sequence_database_fetchers_init"), - Thread.currentThread().hashCode()); + guiWindow + .setProgressBar( + MessageManager + .getString("status.waiting_sequence_database_fetchers_init"), + Thread.currentThread().hashCode()); } // initting happening on another thread - so wait around to see if it // finishes. @@ -147,15 +157,17 @@ public class SequenceFetcher extends JPanel implements Runnable } if (guiWindow != null) { - guiWindow.setProgressBar( - MessageManager.getString("status.waiting_sequence_database_fetchers_init"), - Thread.currentThread().hashCode()); + guiWindow + .setProgressBar( + MessageManager + .getString("status.waiting_sequence_database_fetchers_init"), + Thread.currentThread().hashCode()); } } if (sfetch == null - || dasRegistry != jalview.bin.Cache.getDasSourceRegistry() - || lastDasSourceRegistry != (jalview.bin.Cache - .getDasSourceRegistry().getDasRegistryURL() + jalview.bin.Cache + || dasRegistry != Cache.getDasSourceRegistry() + || lastDasSourceRegistry != (Cache.getDasSourceRegistry() + .getDasRegistryURL() + Cache .getDasSourceRegistry().getLocalSourceString()) .hashCode()) { @@ -166,10 +178,11 @@ public class SequenceFetcher extends JPanel implements Runnable */ if (guiWindow != null) { - guiWindow.setProgressBar(MessageManager.getString("status.init_sequence_database_fetchers"), + guiWindow.setProgressBar(MessageManager + .getString("status.init_sequence_database_fetchers"), Thread.currentThread().hashCode()); } - dasRegistry = jalview.bin.Cache.getDasSourceRegistry(); + dasRegistry = Cache.getDasSourceRegistry(); dasRegistry.refreshSources(); jalview.ws.SequenceFetcher sf = new jalview.ws.SequenceFetcher(); @@ -187,6 +200,7 @@ public class SequenceFetcher extends JPanel implements Runnable } private IProgressIndicator progressIndicator; + public SequenceFetcher(IProgressIndicator guiIndic) { this.progressIndicator = guiIndic; @@ -212,8 +226,10 @@ public class SequenceFetcher extends JPanel implements Runnable JOptionPane .showInternalMessageDialog( Desktop.desktop, - MessageManager.getString("warn.couldnt_create_sequence_fetcher_client"), - MessageManager.getString("label.couldnt_create_sequence_fetcher"), + MessageManager + .getString("warn.couldnt_create_sequence_fetcher_client"), + MessageManager + .getString("label.couldnt_create_sequence_fetcher"), JOptionPane.ERROR_MESSAGE); } }); @@ -270,7 +286,9 @@ public class SequenceFetcher extends JPanel implements Runnable private String getFrameTitle() { - return ((alignFrame == null) ? MessageManager.getString("label.new_sequence_fetcher") : MessageManager.getString("label.additional_sequence_fetcher")); + return ((alignFrame == null) ? MessageManager + .getString("label.new_sequence_fetcher") : MessageManager + .getString("label.additional_sequence_fetcher")); } private void jbInit() throws Exception @@ -357,17 +375,25 @@ public class SequenceFetcher extends JPanel implements Runnable debounceTrap++; String currentSelection = database.getSelectedItem(); - if (!currentSelection.equalsIgnoreCase("pdb")) + if (currentSelection.equalsIgnoreCase("pdb") + && (database.action == KeyEvent.VK_ENTER || ((debounceTrap % 2) == 0))) { - otherSourceAction(); + pdbSourceAction(); } - if (currentSelection.equalsIgnoreCase("pdb") && ((debounceTrap % 2) == 0)) + // else if (currentSelection.equalsIgnoreCase("uniprot") + // && (database.action == KeyEvent.VK_ENTER || ((debounceTrap % 2) == + // 0))) + // { + // uniprotSourceAction(); + // } + else { - pdbSourceAction(); + otherSourceAction(); } - + database.action = -1; } }); + dbeg.setText(""); jPanel2.add(databaseButt, java.awt.BorderLayout.NORTH); jPanel2.add(dbeg, java.awt.BorderLayout.CENTER); @@ -387,10 +413,16 @@ public class SequenceFetcher extends JPanel implements Runnable private void pdbSourceAction() { databaseButt.setText(database.getSelectedItem()); - new PDBSearchPanel(this); + new PDBFTSPanel(this); frame.dispose(); } + private void uniprotSourceAction() + { + databaseButt.setText(database.getSelectedItem()); + new UniprotFTSPanel(this); + frame.dispose(); + } private void otherSourceAction() { try @@ -401,8 +433,7 @@ public class SequenceFetcher extends JPanel implements Runnable : "")); String eq = database.getExampleQueries(); dbeg.setText(MessageManager.formatMessage( - "label.example_query_param", new String[] - { eq })); + "label.example_query_param", new String[] { eq })); boolean enablePunct = !(eq != null && eq.indexOf(",") > -1); for (DbSourceProxy dbs : database.getSelectedSources()) { @@ -440,8 +471,6 @@ public class SequenceFetcher extends JPanel implements Runnable jPanel3.repaint(); } - - public void close_actionPerformed(ActionEvent e) { try @@ -519,6 +548,8 @@ public class SequenceFetcher extends JPanel implements Runnable .split(";")); Iterator en = Arrays.asList(new String[0]).iterator(); int nqueries = qries.length; + + FeatureSettingsModelI preferredFeatureColours = null; while (proxies.hasNext() && (en.hasNext() || nextfetch.size() > 0)) { if (!en.hasNext() && nextfetch.size() > 0) @@ -535,10 +566,15 @@ public class SequenceFetcher extends JPanel implements Runnable try { // update status - guiWindow.setProgressBar(MessageManager.formatMessage("status.fetching_sequence_queries_from", new String[]{Integer.valueOf(nqueries).toString(),proxy.getDbName()}), Thread - .currentThread().hashCode()); - isAliSource = proxy.isA(DBRefSource.ALIGNMENTDB); - if (proxy.getAccessionSeparator() == null) + guiWindow + .setProgressBar(MessageManager.formatMessage( + "status.fetching_sequence_queries_from", + new String[] { + Integer.valueOf(nqueries).toString(), + proxy.getDbName() }), Thread.currentThread() + .hashCode()); + isAliSource = proxy.isAlignmentSource(); + if (proxy.getMaximumQueryCount() == 1) { while (en.hasNext()) { @@ -578,7 +614,8 @@ public class SequenceFetcher extends JPanel implements Runnable } } catch (Exception e) { - jalview.bin.Cache.log.info("Error retrieving " + item + Cache.log.info( + "Error retrieving " + item + " from " + proxy.getDbName(), e); nextfetch.add(item); } @@ -624,20 +661,19 @@ public class SequenceFetcher extends JPanel implements Runnable DBRefEntry dbr = new DBRefEntry(), found[] = null; dbr.setSource(proxy.getDbSource()); dbr.setVersion(null); - String accId = DBRefUtils.processQueryToAccessionFor(proxy, - q); + String accId = proxy.getAccessionIdFromQuery(q); dbr.setAccessionId(accId); boolean rfound = false; for (int r = 0; r < rs.length; r++) { - if (rs[r] != null - && (found = DBRefUtils.searchRefs( - rs[r].getDBRef(), dbr)) != null - && found.length > 0) + if (rs[r] != null) { - rfound = true; - rs[r] = null; - continue; + found = DBRefUtils.searchRefs(rs[r].getDBRefs(), accId); + if (found != null && found.length > 0) + { + rfound = true; + rs[r] = null; + } } } if (!rfound) @@ -681,6 +717,13 @@ public class SequenceFetcher extends JPanel implements Runnable // Stack results ready for opening in alignment windows if (aresult != null && aresult.size() > 0) { + FeatureSettingsModelI proxyColourScheme = proxy + .getFeatureColourScheme(); + if (proxyColourScheme != null) + { + preferredFeatureColours = proxyColourScheme; + } + AlignmentI ar = null; if (isAliSource) { @@ -719,15 +762,20 @@ public class SequenceFetcher extends JPanel implements Runnable presultTitle.add(titl); } } - guiWindow.setProgressBar(MessageManager.getString("status.finshed_querying"), Thread.currentThread() + guiWindow.setProgressBar(MessageManager + .getString("status.finshed_querying"), Thread.currentThread() .hashCode()); } - guiWindow.setProgressBar((presult.size() > 0) ? MessageManager.getString("status.parsing_results") - : MessageManager.getString("status.processing"), Thread.currentThread().hashCode()); + guiWindow.setProgressBar( + (presult.size() > 0) ? MessageManager + .getString("status.parsing_results") : MessageManager + .getString("status.processing"), Thread.currentThread() + .hashCode()); // process results while (presult.size() > 0) { - parseResult(presult.remove(0), presultTitle.remove(0), null); + parseResult(presult.remove(0), presultTitle.remove(0), null, + preferredFeatureColours); } // only remove visual delay after we finished parsing. guiWindow.setProgressBar(null, Thread.currentThread().hashCode()); @@ -755,35 +803,6 @@ public class SequenceFetcher extends JPanel implements Runnable resetDialog(); } - AlignmentI parseResult(String result, String title) - { - String format = new IdentifyFile().Identify(result, "Paste"); - AlignmentI sequences = null; - if (FormatAdapter.isValidFormat(format)) - { - sequences = null; - try - { - sequences = new FormatAdapter().readFile(result.toString(), - "Paste", format); - } catch (Exception ex) - { - } - - if (sequences != null) - { - return parseResult(sequences, title, format); - } - } - else - { - showErrorMessage("Error retrieving " + textArea.getText() + " from " - + database.getSelectedItem()); - } - - return null; - } - /** * * @return a standard title for any results retrieved using the currently @@ -795,7 +814,8 @@ public class SequenceFetcher extends JPanel implements Runnable } AlignmentI parseResult(AlignmentI al, String title, - String currentFileFormat) + String currentFileFormat, + FeatureSettingsModelI preferredFeatureColours) { if (al != null && al.getHeight() > 0) @@ -833,6 +853,16 @@ public class SequenceFetcher extends JPanel implements Runnable } } + + if (preferredFeatureColours != null) + { + af.getViewport().applyFeaturesStyle(preferredFeatureColours); + } + if (Cache.getDefault("HIDE_INTRONS", true)) + { + hideIntronsIfPresent(af); + } + Desktop.addInternalFrame(af, title, AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT); @@ -841,7 +871,7 @@ public class SequenceFetcher extends JPanel implements Runnable try { - af.setMaximum(jalview.bin.Cache.getDefault("SHOW_FULLSCREEN", + af.setMaximum(Cache.getDefault("SHOW_FULLSCREEN", false)); } catch (Exception ex) { @@ -855,6 +885,25 @@ public class SequenceFetcher extends JPanel implements Runnable return al; } + /** + * Hide columns not containing 'exon' features, provided there are exon + * features on the alignment + * + * @param af + */ + public void hideIntronsIfPresent(AlignFrame af) + { + boolean hasExons = af.avc.markColumnsContainingFeatures(false, false, + false, + SequenceOntologyI.EXON); + if (hasExons) + { + af.avc.markColumnsContainingFeatures(true, false, true, + SequenceOntologyI.EXON); + af.getViewport().hideSelectedColumns(); + } + } + void showErrorMessage(final String error) { resetDialog();