Save PDB file to disk
authoramwaterhouse <Andrew Waterhouse>
Thu, 27 Jul 2006 10:29:45 +0000 (10:29 +0000)
committeramwaterhouse <Andrew Waterhouse>
Thu, 27 Jul 2006 10:29:45 +0000 (10:29 +0000)
src/MCview/PDBViewer.java

index 69a131c..1f1f94d 100755 (executable)
@@ -26,12 +26,16 @@ import jalview.gui.*;
 import jalview.io.EBIFetchClient;\r
 import java.awt.event.ActionListener;\r
 import java.awt.event.ActionEvent;\r
+import java.io.*;\r
+import jalview.io.JalviewFileChooser;\r
+import jalview.io.JalviewFileView;\r
 \r
 public class PDBViewer extends JInternalFrame implements Runnable\r
 {\r
   PDBEntry pdb;\r
   Sequence sequence;\r
   PDBCanvas pdbcanvas;\r
+  String tmpPDBFile;\r
 \r
 \r
   public PDBViewer(PDBEntry entry,\r
@@ -57,7 +61,8 @@ public class PDBViewer extends JInternalFrame implements Runnable
     if(pdb.getFile()!=null)\r
     {\r
         try{\r
-          PDBfile pdbfile = new PDBfile(pdb.getFile(),\r
+          tmpPDBFile = pdb.getFile();\r
+          PDBfile pdbfile = new PDBfile(tmpPDBFile,\r
                                         jalview.io.AppletFormatAdapter.FILE);\r
           pdbcanvas.setPDBFile(pdbfile);\r
 \r
@@ -98,10 +103,10 @@ public class PDBViewer extends JInternalFrame implements Runnable
     {\r
         EBIFetchClient ebi = new EBIFetchClient();\r
         String query = "pdb:" + pdb.getId();\r
-        String file = ebi.fetchDataAsFile(query, "default", "raw").getAbsolutePath();\r
-        if (file != null)\r
+        tmpPDBFile = ebi.fetchDataAsFile(query, "default", "raw").getAbsolutePath();\r
+        if (tmpPDBFile != null)\r
         {\r
-          PDBfile pdbfile = new PDBfile(file, jalview.io.AppletFormatAdapter.FILE);\r
+          PDBfile pdbfile = new PDBfile(tmpPDBFile, jalview.io.AppletFormatAdapter.FILE);\r
           pdbcanvas.setPDBFile(pdbfile);\r
         }\r
         else\r
@@ -290,11 +295,20 @@ public class PDBViewer extends JInternalFrame implements Runnable
         background_actionPerformed(e);\r
       }\r
     });\r
+    savePDB.setText("PDB File");\r
+    savePDB.addActionListener(new ActionListener()\r
+    {\r
+      public void actionPerformed(ActionEvent e)\r
+      {\r
+        savePDB_actionPerformed(e);\r
+      }\r
+    });\r
     jMenuBar1.add(fileMenu);\r
     jMenuBar1.add(coloursMenu);\r
     jMenuBar1.add(viewMenu);\r
     fileMenu.add(saveMenu);\r
     fileMenu.add(mapping);\r
+    saveMenu.add(savePDB);\r
     saveMenu.add(png);\r
     saveMenu.add(eps);\r
     coloursMenu.add(seqButton);\r
@@ -404,6 +418,7 @@ public class PDBViewer extends JInternalFrame implements Runnable
   JRadioButtonMenuItem helix = new JRadioButtonMenuItem();\r
   JMenu viewMenu = new JMenu();\r
   JMenuItem background = new JMenuItem();\r
+  JMenuItem savePDB = new JMenuItem();\r
 \r
   /**\r
    * DOCUMENT ME!\r
@@ -605,4 +620,39 @@ public class PDBViewer extends JInternalFrame implements Runnable
          pdbcanvas.repaint();\r
        }\r
   }\r
+\r
+  public void savePDB_actionPerformed(ActionEvent e)\r
+  {\r
+    JalviewFileChooser chooser = new JalviewFileChooser(\r
+        jalview.bin.Cache.getProperty(\r
+            "LAST_DIRECTORY"));\r
+\r
+    chooser.setFileView(new JalviewFileView());\r
+    chooser.setDialogTitle("Save PDB File");\r
+    chooser.setToolTipText("Save");\r
+\r
+    int value = chooser.showSaveDialog(this);\r
+\r
+    if (value == JalviewFileChooser.APPROVE_OPTION)\r
+    {\r
+        try\r
+        {\r
+          BufferedReader in = new BufferedReader(new FileReader(tmpPDBFile));\r
+          File outFile = chooser.getSelectedFile();\r
+\r
+          PrintWriter out = new PrintWriter(new FileOutputStream(outFile));\r
+          String data;\r
+          while ( (data = in.readLine()) != null)\r
+          {\r
+            if (data.indexOf("<PRE>") == -1 && data.indexOf("</PRE>") == -1)\r
+              out.println(data);\r
+          }\r
+          out.close();\r
+        }\r
+        catch (Exception ex)\r
+        {\r
+          ex.printStackTrace();\r
+        }\r
+      }\r
+  }\r
 }\r