context dependent title for when called from desktop or alignment window menu
[jalview.git] / src / jalview / gui / SequenceFetcher.java
index 84e0e91..aa494f5 100755 (executable)
@@ -1,3 +1,21 @@
+/*\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
@@ -18,10 +36,11 @@ public class SequenceFetcher
   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
@@ -39,9 +58,11 @@ public class SequenceFetcher
     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
@@ -128,8 +149,29 @@ public class SequenceFetcher
     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
@@ -152,20 +194,17 @@ public class SequenceFetcher
     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
@@ -238,6 +277,8 @@ public class SequenceFetcher
 \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
@@ -257,8 +298,8 @@ public class SequenceFetcher
       }\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