new savestate method
authoramwaterhouse <Andrew Waterhouse>
Mon, 23 May 2005 16:30:20 +0000 (16:30 +0000)
committeramwaterhouse <Andrew Waterhouse>
Mon, 23 May 2005 16:30:20 +0000 (16:30 +0000)
src/jalview/gui/AlignFrame.java
src/jalview/gui/Desktop.java
src/jalview/gui/Jalview2XML.java

index 63b3787..846ab24 100755 (executable)
@@ -82,8 +82,7 @@ public class AlignFrame extends GAlignFrame
         String shortName = title.replace('/', '_');
         title = title.replace('\\', '_');
         String choice = chooser.getSelectedFile().getPath();
-        Jalview2XML.SaveState(this, System.currentTimeMillis(), shortName,
-                              choice);
+        Jalview2XML.SaveState(this, choice, shortName);
         // USE Jalview2XML to save this file
         return;
       }
@@ -237,7 +236,6 @@ public class AlignFrame extends GAlignFrame
           SequenceI restore = (SequenceI) hi.getSequences().elementAt(i);
           if(restore.getLength()==0)
           {
-            System.out.println(hi.getHidden().elementAt(i));
             restore.setSequence(hi.getHidden().elementAt(i).toString());
             viewport.alignment.getSequences().insertElementAt(
                restore,
@@ -545,6 +543,7 @@ public class AlignFrame extends GAlignFrame
     addHistoryItem(new HistoryItem("Remove Gapped Columns",
                                    viewport.alignment,
                                    HistoryItem.HIDE));
+
     viewport.getAlignment().removeGaps();
     viewport.updateConservation();
     viewport.updateConsensus();
index 36183bb..89b1c52 100755 (executable)
@@ -366,7 +366,7 @@ this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this));
    JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.\r
        getProperty("LAST_DIRECTORY"),\r
        new String[]\r
-       {"xml"}, new String[]{"Jalview Project"}, "Jalview Project");\r
+       {"jar"}, new String[]{"Jalview Project"}, "Jalview Project");\r
 \r
    chooser.setFileView(new JalviewFileView());\r
    chooser.setDialogTitle("Save State");\r
@@ -384,7 +384,7 @@ this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this));
  public void loadState_actionPerformed(ActionEvent e)\r
  {\r
    JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty("LAST_DIRECTORY"),\r
-       new String[]{"xml"}, new String[]{"Jalview Project"}, "Jalview Project");\r
+       new String[]{"jar"}, new String[]{"Jalview Project"}, "Jalview Project");\r
    chooser.setFileView(new JalviewFileView());\r
    chooser.setDialogTitle("Restore state");\r
    int value = chooser.showOpenDialog(this);\r
@@ -392,7 +392,7 @@ this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this));
    {\r
      String choice =  chooser.getSelectedFile().getAbsolutePath();\r
      jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser.getSelectedFile().getParent());\r
-     Jalview2XML.LoadState(choice);\r
+     Jalview2XML.LoadJalviewAlign(choice);\r
    }\r
  }\r
 }\r
index 008be21..12f2cb2 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,38 @@ 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.out.println("HERE"+ex); 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 +414,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 +462,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