package jalview.gui; import java.io.*; import java.util.*; import java.util.jar.*; import jalview.binding.*; import jalview.schemes.*; import javax.swing.JInternalFrame; public class Jalview2XML { public static void SaveState(File statefile) { long creation = System.currentTimeMillis(); JInternalFrame[] frames = Desktop.desktop.getAllFrames(); try{ JalviewState state = new JalviewState(); Vector shortNames = new Vector(); for (int i = 0; i < frames.length; i++) { if (frames[i] instanceof AlignFrame) { AlignFrame af = (AlignFrame) frames[i]; String shortName = af.getTitle(); shortName = shortName.replace('/', '_'); shortName = shortName.replace('\\', '_'); String jarFile = statefile.getParent()+File.separatorChar+shortName+".jar"; int count=1; while( shortNames.contains(shortName) ) { if(shortName.endsWith("_"+(count-1))) shortName = shortName.substring(0, shortName.lastIndexOf("_")); shortName = shortName.concat("_"+count); count++; } shortNames.addElement(shortName); if(!shortName.endsWith(".xml")) shortName = shortName+".xml"; jarFile = statefile.getParent()+File.separatorChar+shortName+".jar"; SaveState( af, creation, shortName, jarFile); state.addFile(jarFile); } } PrintWriter out = new PrintWriter(new FileWriter(statefile)); state.marshal(out); out.close(); } catch(Exception ex){ex.printStackTrace();} } public static void SaveState( AlignFrame af, long timeStamp, String fileName, String jarFile) { Vector seqids = new Vector(); AlignViewport av = af.viewport; JalviewModel object = new JalviewModel(); object.setVamsasModel( new VamsasModel() ); object.setCreationDate( new java.util.Date(timeStamp) ); jalview.datamodel.AlignmentI jal = af.viewport.alignment; SequenceSet vamsasSet = new SequenceSet(); Sequence vamsasSeq; JalviewModelSequence jms = new JalviewModelSequence(); vamsasSet.setGapChar(jal.getGapCharacter()+""); JSeq jseq; //SAVE SEQUENCES int id = 0; for(int i=0; i0) { JGroup[] groups = jms.getJGroup(); for (int i = 0; i < groups.length; i++) { ColourSchemeI cs = ColourSchemeProperty.getColour(al, groups[i].getColour() ); if (cs instanceof ResidueColourScheme) ( (ResidueColourScheme) cs).setThreshold(groups[i].getPidThreshold()); else if (cs instanceof ScoreColourScheme) ( (ScoreColourScheme) cs).setThreshold(groups[i].getPidThreshold()); jalview.datamodel.SequenceGroup sg = new jalview.datamodel.SequenceGroup (groups[i].getName(), cs, groups[i].getDisplayBoxes(), groups[i].getDisplayText(), groups[i].getColourText(), groups[i].getStart(), groups[i].getEnd()) ; sg.setOutlineColour( new java.awt.Color(groups[i].getOutlineColour())); int [] ids = groups[i].getSeq(); for(int s=0; s0) { try{ af.ShowNewickTree(new jalview.io.NewickFile( (String)object.getVamsasModel().getTree(0)), "Tree"); }catch(Exception ex){ex.printStackTrace();} } } }