Don't parse input id, leave it as it is
[jalview.git] / src / jalview / gui / SequenceFetcher.java
index 4fa215f..b0476ce 100755 (executable)
@@ -39,7 +39,10 @@ public class SequenceFetcher
 \r
     frame = new JInternalFrame();\r
     frame.setContentPane(this);\r
-    Desktop.addInternalFrame(frame, "Sequence Fetcher", 390, 120);\r
+    if(System.getProperty("os.name").startsWith("Mac"))\r
+      Desktop.addInternalFrame(frame, "Sequence Fetcher", 390, 135);\r
+    else\r
+      Desktop.addInternalFrame(frame, "Sequence Fetcher", 390, 120);\r
   }\r
 \r
   private void jbInit()\r
@@ -113,8 +116,7 @@ public class SequenceFetcher
 \r
   public void ok_actionPerformed(ActionEvent e)\r
   {\r
-    frame.setTitle("Sequence Fetcher - Fetching Sequence from " +\r
-                   database.getSelectedItem());\r
+    frame.setTitle("WSDBfetch@EBI Sequence Fetcher - Fetching Sequence...");\r
     database.setEnabled(false);\r
     textfield.setEnabled(false);\r
     ok.setEnabled(false);\r
@@ -122,11 +124,11 @@ public class SequenceFetcher
 \r
     Thread worker = new Thread(this);\r
     worker.start();\r
-\r
   }\r
 \r
   public void run()\r
   {\r
+    String error = null;\r
     StringBuffer result = new StringBuffer();\r
       if (database.getSelectedItem().equals("Uniprot")\r
           || database.getSelectedItem().equals("EMBL")\r
@@ -143,14 +145,24 @@ public class SequenceFetcher
       }\r
       else if (database.getSelectedItem().equals("PDB"))\r
       {\r
+        String id = textfield.getText().toUpperCase();\r
+        String chain=null;\r
+        if(id.indexOf(":")>-1)\r
+        {\r
+          chain = id.substring(id.indexOf(":")+1);\r
+          id = id.substring(0,id.indexOf(":"));\r
+          System.out.println(id+" "+chain);\r
+        }\r
+\r
         EBIFetchClient ebi = new EBIFetchClient();\r
-        String[] reply = ebi.fetchData("pdb:" + textfield.getText(), "pdb",\r
+        String[] reply = ebi.fetchData("pdb:" + id, "pdb",\r
                                        "raw");\r
         try{\r
           PDBfile pdbfile = new PDBfile(reply);\r
           for (int i = 0; i < pdbfile.chains.size(); i++)\r
           {\r
-            result.append("\n>" +\r
+            if( chain == null || ((PDBChain)pdbfile.chains.elementAt(i)).id.toUpperCase().equals(chain))\r
+            result.append("\n>PDB|" + id+"|"+\r
                           ( (PDBChain) pdbfile.chains.elementAt(i)).sequence.\r
                           getName() +\r
                           "\n"\r
@@ -160,13 +172,11 @@ public class SequenceFetcher
           }\r
         }catch(Exception ex)// Problem parsing PDB file\r
         {\r
-          JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
-         "Error retrieving "+textfield.getText()+" from "+database.getSelectedItem(),\r
-         "Error Retrieving Data", JOptionPane.WARNING_MESSAGE);\r
+          error = "Error retrieving "+textfield.getText()+" from "+database.getSelectedItem();\r
         }\r
       }\r
 \r
-    if (result.length() > 0)\r
+    if (result.length() > 0 && error==null)\r
     {\r
       String format = IdentifyFile.Identify(result.toString(), "Paste");\r
       SequenceI[] sequences = null;\r
@@ -228,18 +238,27 @@ public class SequenceFetcher
 \r
         }\r
         else\r
-          JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
-         "Error retrieving "+textfield.getText()+" from "+database.getSelectedItem(),\r
-         "Error Retrieving Data", JOptionPane.WARNING_MESSAGE);\r
+          error = "Error retrieving "+textfield.getText()+" from "+database.getSelectedItem();\r
+\r
+\r
 \r
       }\r
     }\r
 \r
+    if(error!=null)\r
+          showErrorMessage(error);\r
+\r
     database.setEnabled(true);\r
     textfield.setEnabled(true);\r
     ok.setEnabled(true);\r
     cancel.setEnabled(true);\r
-    frame.setTitle("Sequence Fetcher");\r
+    frame.setTitle("WSDBfetch@EBI Sequence Fetcher");\r
+  }\r
+\r
+  void showErrorMessage(String error)\r
+  {\r
+    JOptionPane.showInternalMessageDialog(Desktop.desktop,\r
+         error, "Error Retrieving Data", JOptionPane.WARNING_MESSAGE);\r
   }\r
 }\r
 \r