+/*\r
+ * Jalview - A Sequence Alignment Editor and Viewer\r
+ * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA\r
+ */\r
package jalview.gui;\r
\r
import javax.swing.*;\r
JInternalFrame frame;\r
AlignFrame alignFrame;\r
StringBuffer result;\r
+ final String noDbSelected = "-- Select Database --";\r
public SequenceFetcher(AlignFrame af)\r
{\r
alignFrame = af;\r
- database.addItem("-- Select Database --");\r
+ database.addItem(noDbSelected);\r
database.addItem("Uniprot");\r
database.addItem("EMBL");\r
database.addItem("EMBLCDS");\r
frame = new JInternalFrame();\r
frame.setContentPane(this);\r
if(System.getProperty("os.name").startsWith("Mac"))\r
- Desktop.addInternalFrame(frame, "Sequence Fetcher (WSDBfetch@EBI)", 400, 140);\r
+ Desktop.addInternalFrame(frame, ((af==null) ?\r
+ "New " : "Additional ")+"Sequence Fetcher (WSDBfetch@EBI)", 400, 140);\r
else\r
- Desktop.addInternalFrame(frame, "Sequence Fetcher (WSDBfetch@EBI)", 400, 125);\r
+ Desktop.addInternalFrame(frame, ((af==null) ?\r
+ "New " : "Additional ")+"Sequence Fetcher (WSDBfetch@EBI)", 400, 125);\r
}\r
\r
private void jbInit()\r
worker.start();\r
}\r
\r
+ private void resetDialog() {\r
+ database.setEnabled(true);\r
+ textfield.setEnabled(true);\r
+ ok.setEnabled(true);\r
+ cancel.setEnabled(true);\r
+ frame.setTitle("Sequence Fetcher (WSDBfetch@EBI)");\r
+ }\r
+\r
public void run()\r
{\r
+ String error = "";\r
+ if (database.getSelectedItem().equals(noDbSelected))\r
+ error += "Please select the source database\n";\r
+ com.stevesoft.pat.Regex empty=new com.stevesoft.pat.Regex("\\s+","");\r
+ textfield.setText(empty.replaceAll(textfield.getText()));\r
+ if (textfield.getText().length()==0)\r
+ error+="Please enter a (semi-colon separated list of) database id(s)";\r
+ if (error.length()>0) {\r
+ showErrorMessage(error);\r
+ resetDialog();\r
+ return;\r
+ }\r
+\r
result = new StringBuffer();\r
if (database.getSelectedItem().equals("Uniprot"))\r
{\r
else if (database.getSelectedItem().equals("PDB"))\r
{\r
result = getPDBFile(textfield.getText().toUpperCase());\r
- parseResult(result.toString());\r
+ if (result!=null)\r
+ parseResult(result.toString());\r
}\r
\r
\r
if (result == null || result.length() == 0)\r
showErrorMessage("Error retrieving " + textfield.getText()\r
+ " from " + database.getSelectedItem());\r
-\r
-\r
- database.setEnabled(true);\r
- textfield.setEnabled(true);\r
- ok.setEnabled(true);\r
- cancel.setEnabled(true);\r
- frame.setTitle("Sequence Fetcher (WSDBfetch@EBI)");\r
+ else\r
+ textfield.setText("");\r
+ resetDialog();\r
}\r
\r
void getUniprotFile(String id)\r
\r
EBIFetchClient ebi = new EBIFetchClient();\r
String[] reply = ebi.fetchData("pdb:" + id, "pdb", "raw");\r
+ if (reply==null)\r
+ return null;\r
try\r
{\r
PDBfile pdbfile = new PDBfile(reply);\r
}\r
catch (Exception ex) // Problem parsing PDB file\r
{\r
- showErrorMessage("Error retrieving " + textfield.getText() + " from " +\r
- database.getSelectedItem());\r
+ jalview.bin.Cache.log.warn("Exception when retrieving " + textfield.getText() + " from " +\r
+ database.getSelectedItem(), ex);\r
return null;\r
}\r
\r