From b12384aa7fdffd3167a83de75d2a560356ee65f1 Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Mon, 23 May 2005 16:30:20 +0000 Subject: [PATCH] new savestate method --- src/jalview/gui/AlignFrame.java | 5 +- src/jalview/gui/Desktop.java | 6 +-- src/jalview/gui/Jalview2XML.java | 99 ++++++++++++++++++++------------------ 3 files changed, 57 insertions(+), 53 deletions(-) diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 63b3787..846ab24 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -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(); diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index 36183bb..89b1c52 100755 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -366,7 +366,7 @@ this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this)); JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache. getProperty("LAST_DIRECTORY"), new String[] - {"xml"}, new String[]{"Jalview Project"}, "Jalview Project"); + {"jar"}, new String[]{"Jalview Project"}, "Jalview Project"); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle("Save State"); @@ -384,7 +384,7 @@ this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this)); public void loadState_actionPerformed(ActionEvent e) { JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.getProperty("LAST_DIRECTORY"), - new String[]{"xml"}, new String[]{"Jalview Project"}, "Jalview Project"); + new String[]{"jar"}, new String[]{"Jalview Project"}, "Jalview Project"); chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle("Restore state"); int value = chooser.showOpenDialog(this); @@ -392,7 +392,7 @@ this.setDropTarget(new java.awt.dnd.DropTarget(desktop, this)); { String choice = chooser.getSelectedFile().getAbsolutePath(); jalview.bin.Cache.setProperty("LAST_DIRECTORY", chooser.getSelectedFile().getParent()); - Jalview2XML.LoadState(choice); + Jalview2XML.LoadJalviewAlign(choice); } } } diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java index 008be21..12f2cb2 100755 --- a/src/jalview/gui/Jalview2XML.java +++ b/src/jalview/gui/Jalview2XML.java @@ -12,12 +12,17 @@ import javax.swing.JInternalFrame; public class Jalview2XML { + // SAVES SEVERAL ALIGNEMENT WINDOWS TO SAME JARFILE public static void SaveState(File statefile) { long creation = System.currentTimeMillis(); JInternalFrame[] frames = Desktop.desktop.getAllFrames(); try{ - JalviewState state = new JalviewState(); + FileOutputStream fos = new FileOutputStream(statefile); + JarOutputStream jout = new JarOutputStream(fos); + //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS + //////////////////////////////////////////////////// + PrintWriter out = new PrintWriter(new OutputStreamWriter(jout, "UTF-8")); Vector shortNames = new Vector(); for (int i = 0; i < frames.length; i++) @@ -30,7 +35,6 @@ public class Jalview2XML shortName = shortName.replace('/', '_'); shortName = shortName.replace('\\', '_'); - String jarFile = statefile.getParent()+File.separatorChar+shortName+".jar"; int count=1; while( shortNames.contains(shortName) ) @@ -46,22 +50,33 @@ public class Jalview2XML if(!shortName.endsWith(".xml")) shortName = shortName+".xml"; - jarFile = statefile.getParent()+File.separatorChar+shortName+".jar"; - - SaveState( af, creation, shortName, jarFile); - state.addFile(jarFile); - } + SaveState( af, creation, shortName, jout, out); + } } - - PrintWriter out = new PrintWriter(new FileWriter(statefile)); - state.marshal(out); out.close(); + jout.close(); } catch(Exception ex){ex.printStackTrace();} } + // USE THIS METHOD TO SAVE A SINGLE ALIGNMENT WINDOW + public static void SaveState( AlignFrame af, String jarFile, String fileName) + { + try{ + FileOutputStream fos = new FileOutputStream(jarFile); + JarOutputStream jout = new JarOutputStream(fos); + //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS + //////////////////////////////////////////////////// + PrintWriter out = new PrintWriter(new OutputStreamWriter(jout, "UTF-8")); + + SaveState(af, System.currentTimeMillis(), fileName, jout, out); + out.close(); + jout.close(); + }catch(Exception ex){} + } - public static void SaveState( AlignFrame af, long timeStamp, String fileName, String jarFile) + public static void SaveState( AlignFrame af, long timeStamp, + String fileName, JarOutputStream jout, PrintWriter out) { Vector seqids = new Vector(); @@ -240,16 +255,6 @@ public class Jalview2XML try { - // NAME OF FILE - FileOutputStream fos = new FileOutputStream(jarFile); - - //PUT IT IN THIS JARFILE - JarOutputStream jout = new JarOutputStream(fos); - - //NOTE UTF-8 MUST BE USED FOR WRITING UNICODE CHARS - //////////////////////////////////////////////////// - PrintWriter out = new PrintWriter(new OutputStreamWriter(jout, "UTF-8")); - if(!fileName.endsWith(".xml")) fileName = fileName+".xml"; @@ -257,9 +262,6 @@ public class Jalview2XML jout.putNextEntry(entry); object.marshal(out); - out.close(); - fos.close(); - jout.close(); } catch (Exception ex) { @@ -267,37 +269,38 @@ public class Jalview2XML } } - public static void LoadState(String file) - { - try{ - JalviewState state = new JalviewState(); - BufferedReader in = new BufferedReader(new FileReader(file)); - state = (JalviewState)state.unmarshal(in); - Enumeration en = state.enumerateFile(); - while( en.hasMoreElements() ) - { - LoadJalviewAlign( en.nextElement().toString()); - } - } - catch(Exception ex) - { ex.printStackTrace(); return; } - } public static void LoadJalviewAlign(String file) { JalviewModel object = new JalviewModel(); - Vector seqids = new Vector(); try{ - FileInputStream fis = new FileInputStream(file); - JarInputStream jin = new JarInputStream(fis); - jin.getNextJarEntry(); - InputStreamReader in = new InputStreamReader(jin, "UTF-8"); - object = (JalviewModel) object.unmarshal(in); + //UNMARSHALLER SEEMS TO CLOSE JARINPUTSTREAM, MOST ANNOYING + JarInputStream jin = new JarInputStream(new FileInputStream(file)); + JarEntry jarentry=null; + int entryCount = 1; + do{ + jin = new JarInputStream(new FileInputStream(file)); + for(int i=0; i