X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSequenceFetcher.java;h=d225e428c8ffbae5eb56fe62705ad58e79b242e9;hb=304e64fb34b32659be1bbfd39fb4e15b2f79586e;hp=caecbbad5934b7f2c831239ae3a9f55a207d0012;hpb=a395b6d73484b2827f3e80295631e69dd8841c47;p=jalview.git diff --git a/src/jalview/gui/SequenceFetcher.java b/src/jalview/gui/SequenceFetcher.java index caecbba..d225e42 100755 --- a/src/jalview/gui/SequenceFetcher.java +++ b/src/jalview/gui/SequenceFetcher.java @@ -27,7 +27,6 @@ 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; @@ -67,11 +66,49 @@ import javax.swing.SwingConstants; */ public class SequenceFetcher extends JPanel implements Runnable { + private class StringPair + { + private String key; + + private String display; + + public StringPair(String s1, String s2) + { + key = s1; + display = s2; + } + + public StringPair(String s) + { + this(s, s); + } + + public String getKey() + { + return key; + } + + public String getDisplay() + { + return display; + } + + @Override + public String toString() + { + return display; + } + + public boolean equals(StringPair other) + { + return other.key == this.key; + } + } private static jalview.ws.SequenceFetcher sfetch = null; JLabel exampleAccession; - JComboBox database; + JComboBox database; JCheckBox replacePunctuation; @@ -146,8 +183,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(), Desktop.FRAME_MAKE_VISIBLE, 400, + Platform.isAMacAndNotJS() ? 240 : 180, Desktop.FRAME_ALLOW_RESIZE, Desktop.FRAME_SET_MIN_SIZE_300); } private String getFrameTitle() @@ -164,15 +201,25 @@ public class SequenceFetcher extends JPanel implements Runnable database = new JComboBox<>(); database.setFont(JvSwingUtils.getLabelFont()); - database.setPrototypeDisplayValue("ENSEMBLGENOMES "); + StringPair instructionItem = new StringPair( + MessageManager.getString("action.select_ddbb")); + database.setPrototypeDisplayValue(instructionItem); String[] sources = new jalview.ws.SequenceFetcher().getSupportedDb(); Arrays.sort(sources, String.CASE_INSENSITIVE_ORDER); - database.addItem(MessageManager.getString("action.select_ddbb")); + database.addItem(instructionItem); for (String source : sources) { - database.addItem(source); + List slist = sfetch.getSourceProxy(source); + if (slist.size() == 1 && slist.get(0) != null) + { + database.addItem(new StringPair(source, slist.get(0).getDbName())); + } + else + { + database.addItem(new StringPair(source)); + } } - database.setSelectedItem(selectedDb); + setDatabaseSelectedItem(selectedDb); if (database.getSelectedIndex() == -1) { database.setSelectedIndex(0); @@ -183,7 +230,8 @@ public class SequenceFetcher extends JPanel implements Runnable @Override public void actionPerformed(ActionEvent e) { - String currentSelection = (String) database.getSelectedItem(); + String currentSelection = ((StringPair) database.getSelectedItem()) + .getKey(); updateExampleQuery(currentSelection); if ("pdb".equalsIgnoreCase(currentSelection)) @@ -310,6 +358,18 @@ public class SequenceFetcher extends JPanel implements Runnable this.add(databasePanel, BorderLayout.NORTH); } + private void setDatabaseSelectedItem(String db) + { + for (int i = 0; i < database.getItemCount(); i++) + { + StringPair sp = database.getItemAt(i); + if (sp != null && db != null && db.equals(sp.getKey())) + { + database.setSelectedIndex(i); + return; + } + } + } /** * Answers a semi-colon-delimited string with the example query or queries for * the selected database @@ -381,7 +441,8 @@ public class SequenceFetcher extends JPanel implements Runnable */ protected void example_actionPerformed() { - String eq = getExampleQueries((String) database.getSelectedItem()); + String eq = getExampleQueries( + ((StringPair) database.getSelectedItem()).getKey()); textArea.setText(eq); repaint(); } @@ -477,8 +538,8 @@ public class SequenceFetcher extends JPanel implements Runnable List presultTitle = new ArrayList<>(); List presult = new ArrayList<>(); List aresult = new ArrayList<>(); - List sources = sfetch - .getSourceProxy((String) database.getSelectedItem()); + List sources = sfetch.getSourceProxy( + ((StringPair) database.getSelectedItem()).getKey()); Iterator proxies = sources.iterator(); String[] qries = textArea.getText().trim().split(";"); List nextFetch = Arrays.asList(qries); @@ -530,23 +591,25 @@ public class SequenceFetcher extends JPanel implements Runnable } catch (Exception e) { showErrorMessage("Error retrieving " + textArea.getText() + " from " - + database.getSelectedItem()); + + ((StringPair) database.getSelectedItem()).getDisplay()); // error // +="Couldn't retrieve sequences from "+database.getSelectedItem(); System.err.println("Retrieval failed for source ='" - + database.getSelectedItem() + "' and query\n'" - + textArea.getText() + "'\n"); + + ((StringPair) database.getSelectedItem()).getDisplay() + + "' and query\n'" + textArea.getText() + "'\n"); e.printStackTrace(); } catch (OutOfMemoryError e) { showErrorMessage("Out of Memory when retrieving " - + textArea.getText() + " from " + database.getSelectedItem() + + textArea.getText() + " from " + + ((StringPair) database.getSelectedItem()).getDisplay() + "\nPlease see the Jalview FAQ for instructions for increasing the memory available to Jalview.\n"); e.printStackTrace(); } catch (Error e) { showErrorMessage("Serious Error retrieving " + textArea.getText() - + " from " + database.getSelectedItem()); + + " from " + + ((StringPair) database.getSelectedItem()).getDisplay()); e.printStackTrace(); } @@ -693,7 +756,8 @@ public class SequenceFetcher extends JPanel implements Runnable } catch (OutOfMemoryError oome) { new OOMWarning("fetching " + multiacc + " from " - + database.getSelectedItem(), oome, this); + + ((StringPair) database.getSelectedItem()).getDisplay(), + oome, this); } } @@ -801,15 +865,18 @@ public class SequenceFetcher extends JPanel implements Runnable */ public String getDefaultRetrievalTitle() { - return "Retrieved from " + database.getSelectedItem(); + return "Retrieved from " + + ((StringPair) database.getSelectedItem()).getDisplay(); } + /** * constructs an alignment frame given the data and metadata + * * @param al * @param title * @param currentFileFormat * @param preferredFeatureColours - * @return the alignment + * @return the alignment */ public AlignmentI parseResult(AlignmentI al, String title, FileFormatI currentFileFormat, @@ -844,7 +911,10 @@ public class SequenceFetcher extends JPanel implements Runnable } } - af.getViewport().applyFeaturesStyle(preferredFeatureColours); + if (preferredFeatureColours != null) + { + af.getViewport().applyFeaturesStyle(preferredFeatureColours); + } if (Cache.getDefault("HIDE_INTRONS", true)) { af.hideFeatureColumns(SequenceOntologyI.EXON, false); @@ -878,7 +948,7 @@ public class SequenceFetcher extends JPanel implements Runnable @Override public void run() { - JvOptionPane.showInternalMessageDialog(Desktop.desktop, error, + JvOptionPane.showInternalMessageDialog(Desktop.getDesktopPane(), error, MessageManager.getString("label.error_retrieving_data"), JvOptionPane.WARNING_MESSAGE); }