tidied up system.out messages and moved many to stderr.
[jalview.git] / src / jalview / gui / Jalview2XML.java
index 008be21..6b6bd86 100755 (executable)
@@ -12,12 +12,17 @@ import javax.swing.JInternalFrame;
 public class Jalview2XML\r
 {\r
 \r
+  // SAVES SEVERAL ALIGNEMENT WINDOWS TO SAME JARFILE\r
   public static void SaveState(File statefile)\r
   {\r
       long creation = System.currentTimeMillis();\r
       JInternalFrame[] frames = Desktop.desktop.getAllFrames();\r
       try{\r
-        JalviewState state = new JalviewState();\r
+        FileOutputStream fos = new FileOutputStream(statefile);\r
+        JarOutputStream jout = new JarOutputStream(fos);\r
+        //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS\r
+        ////////////////////////////////////////////////////\r
+        PrintWriter out = new PrintWriter(new OutputStreamWriter(jout, "UTF-8"));\r
 \r
         Vector shortNames = new Vector();\r
         for (int i = 0; i < frames.length; i++)\r
@@ -30,7 +35,6 @@ public class Jalview2XML
 \r
             shortName = shortName.replace('/', '_');\r
             shortName = shortName.replace('\\', '_');\r
-            String jarFile = statefile.getParent()+File.separatorChar+shortName+".jar";\r
 \r
             int count=1;\r
             while( shortNames.contains(shortName) )\r
@@ -46,22 +50,33 @@ public class Jalview2XML
             if(!shortName.endsWith(".xml"))\r
               shortName = shortName+".xml";\r
 \r
-            jarFile = statefile.getParent()+File.separatorChar+shortName+".jar";\r
-\r
-            SaveState( af, creation, shortName, jarFile);\r
-            state.addFile(jarFile);\r
-          }\r
+            SaveState( af, creation, shortName, jout, out);\r
+           }\r
         }\r
-\r
-        PrintWriter out = new PrintWriter(new FileWriter(statefile));\r
-        state.marshal(out);\r
         out.close();\r
+        jout.close();\r
       }\r
       catch(Exception ex){ex.printStackTrace();}\r
   }\r
 \r
+  // USE THIS METHOD TO SAVE A SINGLE ALIGNMENT WINDOW\r
+  public static void SaveState( AlignFrame af, String jarFile, String fileName)\r
+  {\r
+    try{\r
+      FileOutputStream fos = new FileOutputStream(jarFile);\r
+      JarOutputStream jout = new JarOutputStream(fos);\r
+      //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS\r
+      ////////////////////////////////////////////////////\r
+      PrintWriter out = new PrintWriter(new OutputStreamWriter(jout, "UTF-8"));\r
+\r
+      SaveState(af, System.currentTimeMillis(), fileName, jout, out);\r
+      out.close();\r
+      jout.close();\r
+    }catch(Exception ex){}\r
+  }\r
 \r
-  public static void SaveState( AlignFrame af, long timeStamp, String fileName, String jarFile)\r
+  public static void SaveState( AlignFrame af, long timeStamp,\r
+      String fileName, JarOutputStream jout, PrintWriter out)\r
   {\r
 \r
     Vector seqids = new Vector();\r
@@ -240,16 +255,6 @@ public class Jalview2XML
 \r
     try\r
     {\r
-    // NAME OF FILE\r
-     FileOutputStream fos = new FileOutputStream(jarFile);\r
-\r
-     //PUT IT IN THIS JARFILE\r
-     JarOutputStream jout = new JarOutputStream(fos);\r
-\r
-     //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS\r
-     ////////////////////////////////////////////////////\r
-     PrintWriter out = new PrintWriter(new OutputStreamWriter(jout, "UTF-8"));\r
-\r
      if(!fileName.endsWith(".xml"))\r
               fileName = fileName+".xml";\r
 \r
@@ -257,9 +262,6 @@ public class Jalview2XML
      jout.putNextEntry(entry);\r
 \r
       object.marshal(out);\r
-      out.close();\r
-      fos.close();\r
-      jout.close();\r
     }\r
     catch (Exception ex)\r
     {\r
@@ -267,37 +269,39 @@ public class Jalview2XML
     }\r
   }\r
 \r
-  public static void LoadState(String file)\r
-  {\r
-    try{\r
-       JalviewState state = new JalviewState();\r
-       BufferedReader in = new BufferedReader(new FileReader(file));\r
-       state = (JalviewState)state.unmarshal(in);\r
-       Enumeration en = state.enumerateFile();\r
-       while( en.hasMoreElements() )\r
-       {\r
-         LoadJalviewAlign( en.nextElement().toString());\r
-       }\r
-    }\r
-    catch(Exception ex)\r
-    {   ex.printStackTrace(); return; }\r
-  }\r
 \r
   public static void LoadJalviewAlign(String file)\r
   {\r
     JalviewModel object = new JalviewModel();\r
-    Vector seqids = new Vector();\r
     try{\r
-      FileInputStream fis = new FileInputStream(file);\r
-      JarInputStream jin = new JarInputStream(fis);\r
-      jin.getNextJarEntry();\r
-      InputStreamReader in = new InputStreamReader(jin, "UTF-8");\r
-      object = (JalviewModel) object.unmarshal(in);\r
+      //UNMARSHALLER SEEMS TO CLOSE JARINPUTSTREAM, MOST ANNOYING\r
+      JarInputStream jin = new JarInputStream(new FileInputStream(file));\r
+      JarEntry jarentry=null;\r
+      int entryCount = 1;\r
+      do{\r
+        jin = new JarInputStream(new FileInputStream(file));\r
+        for(int i=0; i<entryCount; i++)\r
+          jarentry = jin.getNextJarEntry();\r
+\r
+        if(jarentry!=null)\r
+        {\r
+          InputStreamReader in = new InputStreamReader(jin, "UTF-8");\r
+          object = (JalviewModel) object.unmarshal(in);\r
+          LoadFromObject(object);\r
+          entryCount++;\r
+        }\r
+      }while(jarentry!=null);\r
+\r
     }\r
     catch(Exception ex)\r
-    {   System.out.println(ex); return; }\r
+    {   System.err.println("Exception whilst loading jalview XML file : "+ex+"\n");\r
+     ex.printStackTrace(); return; }\r
 \r
+  }\r
 \r
+  static void LoadFromObject(JalviewModel object)\r
+  {\r
+     Vector seqids = new Vector();\r
      SequenceSet vamsasSet = object.getVamsasModel().getSequenceSet(0);\r
      Sequence [] vamsasSeq = vamsasSet.getSequence();\r
 \r
@@ -411,6 +415,9 @@ public class Jalview2XML
     af.setBounds(view.getXpos(), view.getYpos(), view.getWidth(), view.getHeight());\r
     af.viewport.setStartRes( view.getStartRes() );\r
     af.viewport.setStartSeq( view.getStartSeq() );\r
+    af.viewport.showConservation = view.getShowConservation();\r
+    af.viewport.showQuality = view.getShowQuality();\r
+    af.viewport.showIdentity= view.getShowIdentity();\r
     af.viewport.setAbovePIDThreshold( view.getPidSelected() );\r
     af.viewport.setColourText( view.getShowColourText() );\r
     af.viewport.setConservationSelected( view.getConservationSelected());\r
@@ -456,7 +463,6 @@ public class Jalview2XML
         af.ShowNewickTree(new jalview.io.NewickFile(\r
             (String)object.getVamsasModel().getTree(0)), "Tree");\r
       }catch(Exception ex){ex.printStackTrace();}\r
-\r
     }\r
 \r
   }\r