+ // SAVES SEVERAL ALIGNEMENT WINDOWS TO SAME JARFILE\r
+ public void SaveState(File statefile)\r
+ {\r
+ long creation = System.currentTimeMillis();\r
+ JInternalFrame[] frames = Desktop.desktop.getAllFrames();\r
+\r
+ if (frames == null)\r
+ {\r
+ return;\r
+ }\r
+\r
+ try\r
+ {\r
+ FileOutputStream fos = new FileOutputStream(statefile);\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,\r
+ "UTF-8"));\r
+\r
+ Vector shortNames = new Vector();\r
+\r
+ //REVERSE ORDER\r
+ for (int i = frames.length - 1; i > -1; i--)\r
+ {\r
+ if (frames[i] instanceof AlignFrame)\r
+ {\r
+ AlignFrame af = (AlignFrame) frames[i];\r
+\r
+ String shortName = af.getTitle();\r
+\r
+ if (shortName.indexOf(File.separatorChar) > -1)\r
+ {\r
+ shortName = shortName.substring(shortName.lastIndexOf(\r
+ File.separatorChar) + 1);\r
+ }\r
+\r
+ int count = 1;\r
+\r
+ while (shortNames.contains(shortName))\r
+ {\r
+ if (shortName.endsWith("_" + (count - 1)))\r
+ {\r
+ shortName = shortName.substring(0,\r
+ shortName.lastIndexOf("_"));\r
+ }\r
+\r
+ shortName = shortName.concat("_" + count);\r
+ count++;\r
+ }\r
+\r
+ shortNames.addElement(shortName);\r
+\r
+ if (!shortName.endsWith(".xml"))\r
+ {\r
+ shortName = shortName + ".xml";\r
+ }\r
+\r
+ SaveState(af, creation, shortName, jout, out);\r
+ }\r
+ }\r
+\r
+ out.close();\r
+ jout.close();\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ ex.printStackTrace();\r
+ }\r
+ }\r
+\r
+ // USE THIS METHOD TO SAVE A SINGLE ALIGNMENT WINDOW\r
+ public void SaveAlignment(AlignFrame af, String jarFile,\r
+ String fileName)\r
+ {\r
+ try\r
+ {\r
+ FileOutputStream fos = new FileOutputStream(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,\r
+ "UTF-8"));\r
+\r
+ SaveState(af, System.currentTimeMillis(), fileName, jout, out);\r
+ out.close();\r
+ jout.close();\r
+ }\r
+ catch (Exception ex)\r
+ {\r
+ ex.printStackTrace();\r
+ }\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param af DOCUMENT ME!\r
+ * @param timeStamp DOCUMENT ME!\r
+ * @param fileName DOCUMENT ME!\r
+ * @param jout DOCUMENT ME!\r
+ * @param out DOCUMENT ME!\r
+ */\r
+ public void SaveState(AlignFrame af, long timeStamp,\r
+ String fileName, JarOutputStream jout, PrintWriter out)\r
+ {\r
+ Vector seqids = new Vector();\r
+ Vector userColours = new Vector();\r
+\r
+ AlignViewport av = af.viewport;\r
+\r
+ JalviewModel object = new JalviewModel();\r
+ object.setVamsasModel(new jalview.schemabinding.version2.VamsasModel());\r
+\r
+ object.setCreationDate(new java.util.Date(timeStamp));\r
+ object.setVersion(jalview.bin.Cache.getProperty("VERSION"));\r
+\r
+ jalview.datamodel.AlignmentI jal = af.viewport.alignment;\r